Ir al contenido
Background Image

Integración Numérica en Ingeniería Mecánica con Python

1320 palabras·7 mins·
Métodos Numéricos - Este artículo es parte de una serie.
Parte 5: Este artículo

♾️ Módulo 5: Integración Numérica
#


🧱 Integración Numérica: La Suma de Pequeñas Partes
#

La Integración Numérica busca aproximar el valor de una integral definida, \(I = \int_{a}^{b} f(x) dx\), que representa el área bajo la curva \(f(x)\) entre los límites \(a\) y \(b\). Esta técnica es indispensable en ingeniería cuando:

  1. La integral analítica es imposible o extremadamente difícil (ej. \(\int e^{-x^2} dx\)).
  2. Solo se dispone de datos experimentales discretos (ej. una tabla de valores, no una función).

Los métodos numéricos logran esta aproximación utilizando Fórmulas de Newton-Cotes, que reemplazan la función original con polinomios simples sobre pequeños segmentos y luego suman las áreas de esas formas geométricas.

Fundamento Teórico: Sumas de Riemann y Error
#

El fundamento se basa en las Sumas de Riemann, donde el área se aproxima mediante rectángulos. Los métodos de Newton-Cotes son una mejora, reemplazando los rectángulos por formas más precisas (trapecios o parábolas).

El error principal es el Error de Truncamiento, que se reduce al aumentar el número de segmentos (\(n\)) o al usar polinomios de mayor grado.


🧮 Métodos Compuestos Fundamentales
#

Los métodos más utilizados son las versiones Compuestas (o repetidas), que dividen el intervalo \([a, b]\) en \(n\) segmentos iguales, cada uno con ancho \(h = (b-a)/n\).

1. Regla del Trapecio (Trapezoidal Rule)
#

Aproxima el área bajo la curva reemplazando \(f(x)\) por una línea recta (polinomio de grado 1) sobre cada segmento, creando un trapecio.

$$\mathbf{I \approx \frac{h}{2} \left[ f(x_0) + 2\sum_{i=1}^{n-1} f(x_i) + f(x_n) \right]}$$
  • Orden de Error: \(O(h^2)\).

2. Regla de Simpson 1/3
#

Utiliza una parábola (polinomio de grado 2) sobre pares de segmentos, lo que aumenta drásticamente la precisión.

Requisito: El número de segmentos (\(n\)) debe ser par.

$$\mathbf{I \approx \frac{h}{3} \left[ f(x_0) + 4\sum_{i \text{ impar}} f(x_i) + 2\sum_{i \text{ par}} f(x_i) + f(x_n) \right]}$$
  • Orden de Error: \(O(h^4)\). Su alta precisión la convierte en el método de elección cuando \(n\) es par.

3. Regla de Simpson 3/8
#

Utiliza un polinomio de grado 3 sobre tres segmentos adyacentes.

Requisito: El número de segmentos (\(n\)) debe ser un múltiplo de 3.

$$\mathbf{I \approx \frac{3h}{8} \left[ f(x_0) + 3\sum_{i=1, 4, 7...}^{n-2} f(x_i) + 3\sum_{i=2, 5, 8...}^{n-1} f(x_i) + 2\sum_{i=3, 6, 9...}^{n-3} f(x_i) + f(x_n) \right]}$$

🌍 Casos Aplicados en Ingeniería
#

  1. Cálculo de Trabajo (Mecánica): El trabajo (\(W\)) realizado por una fuerza variable \(F(x)\) es \(W = \int_{a}^{b} F(x) dx\).
  2. Volumen y Propiedades Geométricas: Cálculo de volúmenes, centroides o momentos de inercia de secciones transversales irregulares.
  3. Carga Eléctrica Acumulada (Electricidad): La carga eléctrica \(Q\) a partir de la corriente \(I(t)\) es \(Q = \int I(t) dt\).

💻 Herramientas de Python: scipy.integrate
#

La librería SciPy proporciona métodos sofisticados para la integración numérica:

Función Uso Principal Descripción
quad Funciones analíticas Regla adaptativa de Gauss-Kronrod; es el método más preciso y general. Devuelve (resultado, error).
trapz Datos discretos Implementa la Regla del Trapecio para un conjunto de puntos \((x_i, y_i)\).
simps Datos discretos Implementa la Regla de Simpson 1/3 (o usa la 3/8 si es necesario).
dblquad Integrales Dobles Para calcular volúmenes o integrales en 2D.

Ejemplo Práctico: Usando quad y simps
#

Calcularemos \(\int_{0}^{\pi} \sin(x) dx\) (Valor analítico = 2).

import numpy as np
from scipy.integrate import quad, simps

def f_seno(x):
    return np.sin(x)

# 1. Integración de función analítica con quad
resultado_quad, error_quad = quad(f_seno, 0, np.pi)

print("--- 🔬 Integración con SciPy (quad) ---")
print(f"Resultado (quad): {resultado_quad:.8f}")

# 2. Integración de datos discretos con simps (n=8 segmentos)
x_discreto = np.linspace(0, np.pi, 9) 
y_discreto = f_seno(x_discreto)
resultado_simps = simps(y_discreto, x_discreto)

print("\n--- 📊 Integración con SciPy (simps) ---")
print(f"Resultado (simps): {resultado_simps:.8f}")

📝 Ejercicios Propuestos
#

A. Integración con Reglas de Newton-Cotes
#

  1. Cálculo de Área y Error del Trapecio: Integra la función \(f(x) = x^3 + 2x^2 + 5\) en el intervalo \([1, 3]\).

    • a) Manual: Utiliza la Regla del Trapecio Compuesta con \(n=4\) segmentos.
    • b) SciPy: Utiliza scipy.integrate.quad para obtener la respuesta de referencia y calcula el error absoluto de tu aproximación manual.
  2. Uso Eficiente de Simpson 1/3: Integra \(f(x) = e^{-x^2}\) (la integral Gaussiana) en el intervalo \([0, 2]\).

    • Utiliza la Regla de Simpson 1/3 Compuesta con \(n=6\) segmentos.
  3. Comparación de Precisión (\(n\) par vs. \(n\) impar): Integra \(f(x) = 1/x\) en \([1, 5]\).

    • a) \(n=4\) (Simpson 1/3): Calcula el resultado.
    • b) \(n=5\) (Combinado): Divide en \(n=2\) segmentos para Trapecio (al inicio) y \(n=3\) para Simpson 3/8 (al final), o usa simps de SciPy, que maneja automáticamente el último segmento. Compara con la solución exacta (\(\ln(5) \approx 1.6094\)).
  4. Error de Truncamiento en el Trapecio: La integral \(\int_{0}^{2} x^4 dx\) tiene un valor exacto de 6.4.

    • Calcula el valor de la integral usando la Regla del Trapecio Compuesta con \(n=2\) y \(n=4\) segmentos.
    • Análisis: ¿Cómo cambia el error al duplicar el número de segmentos? (El error del Trapecio es \(O(h^2)\)).
  5. Regla de Simpson 3/8 Pura: Integra \(f(x) = \sqrt{x} + 2\) en \([0, 3]\).

    • Utiliza la Regla de Simpson 3/8 Compuesta con \(n=3\) segmentos.

B. Análisis de Error y Convergencia
#

  1. Convergencia de Simpson 1/3: Integra \(f(x) = e^x\) en \([0, 1]\). La solución exacta es \(e-1 \approx 1.71828\).

    • Calcula la integral usando la Regla de Simpson 1/3 Compuesta para \(n=2, 4, 8\) segmentos.
    • Análisis: Muestra cómo el error decrece rápidamente a medida que duplicas \(n\), confirmando el orden de error \(O(h^4)\).
  2. Integral con Parámetros Adicionales: Calcula \(\int_{0}^{5} e^{-ax^2} dx\) para el caso donde \(a=0.5\).

    • Utiliza scipy.integrate.quad pasando el parámetro \(a\) a través del argumento args=(0.5,).
  3. Integral Impropa (Límites Infinitos): Evalúa la integral \(\int_{0}^{\infty} e^{-x^2} dx\).

    • Utiliza scipy.integrate.quad y el valor especial de NumPy np.inf para el límite superior infinito. (Compara con el resultado analítico \(\sqrt{\pi}/2\)).

C. Aplicaciones de Ingeniería con Datos Discretos
#

  1. Trabajo Realizado por un Resorte: La fuerza \(F\) de un resorte se mide a varias extensiones \(x\). El trabajo \(W = \int_{0}^{0.8} F(x) dx\).

    Extensión (\(x\)) [m] Fuerza (\(F(x)\)) [N]
    0.0 0.0
    0.2 2.1
    0.4 4.5
    0.6 7.2
    0.8 9.8
    • Utiliza scipy.integrate.trapz para estimar el trabajo total.
  2. Carga Acumulada con Datos Dispares: La corriente \(I(t)\) en un circuito se mide discretamente. \(Q = \int_{0}^{5} I(t) dt\).

    Tiempo (\(t\)) [s] Corriente (\(I(t)\)) [A]
    0.0 0.2
    1.0 1.8
    2.0 3.5
    3.0 4.6
    4.0 5.1
    5.0 4.8
    • Utiliza scipy.integrate.simps para estimar la carga total.
  3. Volumen de un Estanque Cilíndrico con Radio Variable: El radio \(R(z)\) de un estanque varía con la altura \(z\). El volumen \(V = \int_{0}^{8} \pi R(z)^2 dz\).

    Altura (\(z\)) [m] Radio (\(R(z)\)) [m]
    0 5.0
    2 4.5
    4 3.8
    6 3.0
    8 2.5
    • Calcula la función del integrando \(f(z) = \pi R(z)^2\).
    • Utiliza scipy.integrate.trapz para estimar el volumen total.
  4. Energía Disipada por una Potencia Variable: La potencia \(P(t)\) es función del tiempo. La energía total \(E = \int P(t) dt\).

    Tiempo (\(t\)) [s] Potencia (\(P(t)\)) [W]
    0 100
    0.5 95
    1.0 80
    1.5 60
    2.0 35
    2.5 10
    • Utiliza scipy.integrate.simps para estimar la energía total disipada.

D. Aplicaciones Avanzadas
#

  1. Longitud de Arco y Derivación Numérica: La longitud de arco \(L\) de \(f(x) = \sin(x) + x/2\) en \([0, 2\pi]\) es \(L = \int_{0}^{2\pi} \sqrt{1 + [f'(x)]^2} dx\).

    • Define el integrando usando la derivada analítica \(f'(x) = \cos(x) + 1/2\).
    • Utiliza scipy.integrate.quad para obtener el resultado.
  2. Integración Doble (Volumen Numérico): Calcula el volumen bajo la superficie \(f(x, y) = x y^2\) sobre la región \([0, 1] \times [0, 2]\).

    • Utiliza scipy.integrate.dblquad para integrar numéricamente \(\int_{0}^{2} \int_{0}^{1} x y^2 dx dy\).
  3. Valor Promedio de una Función: El valor promedio \(\bar{f}\) de una función \(f(x)\) en \([a, b]\) es \(\bar{f} = \frac{1}{b-a} \int_{a}^{b} f(x) dx\).

    • Calcula el valor promedio de \(f(x) = x \ln(x)\) en el intervalo \([1, 3]\).
    • Utiliza scipy.integrate.quad para encontrar la integral y luego calcula el promedio.
  4. Integral con Singularidad: Evalúa la integral \(\int_{0}^{1} \frac{1}{\sqrt{x}} dx\). (El valor exacto es 2).

    • Pregunta de Análisis: Intenta usar la Regla del Trapecio Compuesta con \(n=10\) y compara el resultado con el resultado de scipy.integrate.quad. Explica por qué quad (método adaptativo) maneja la singularidad en \(x=0\) mucho mejor que el método de Trapecio simple.
Métodos Numéricos - Este artículo es parte de una serie.
Parte 5: Este artículo