Integración numérica con las técnicas del grado

Vamos a implementar varias reglas de integración numérica que los alumnos de esta Escuela vistéis en Cálculo I. Comenzaremos con la "regla simple del punto izquierdo", que aproxima la integral de $f$ en e intervalo $[a,b]$ por el área del rectángulo de base $b-a$ y altura $f(a)$: $$ \int_a^b f(x)\:d x \approx (b-a)f(a) $$

In [1]:
function I=punto_izquierdo_simple(f, a, b)
%Aproxima la integral de f en el intervalo [a,b] por (b-a)*f(a)
%    
%    El primer argumento es una función de variable real a valores reales
    I= (b-a)*f(a);
end
In [3]:
f = @ (x)( 1 + sin(x));
punto_izquierdo_simple(f, 0 ,pi)
ans =  3.1416

Vamos a verlo gráficamente

In [4]:

Out[4]:
<matplotlib.legend.Legend at 0x7f2869485ba8>

La función que implementa esta regla es sencilla: aproximamos la integral por el área de un rectángulo.

In [5]:
function I=punto_izquierdo_simple(f, a, b)
%Aproxima la integral de f en el intervalo [a,b] por (b-a)*f(a)
%    
%    El primer argumento es una función de variable real a valores reales
    I= (b-a)*f(a);
end

La regla del punto medio también aproxima la integral por el área de un rectángulo, pero la altura es la función evaluada en el punto medio del intervalo.

In [4]:
function I=punto_medio_simple(f, a, b)
%Aproxima la integral de f en el intervalo [a,b] por (b-a)*f(m)
%donde m = (a+b)/2 es el punto medio del intervalo
%    
%    El primer argumento es una función de variable real a valores reales
    I= (b-a)*f((a+b)/2);
end

Gráficamente

In [7]:

Out[7]:
<matplotlib.legend.Legend at 0x7f2868d7b588>
In [8]:

Out[8]:
<matplotlib.collections.PolyCollection at 0x7f2868cfe5f8>

Reglas compuestas

En las reglas compuestas descomponemos el intervalo de integración es $N$ partes iguales, y en cada parte aplicamos la regla de integración correspondiente.

In [9]:

In [10]:

In [11]:

Implementando las reglas compuestas

Queremos escribir funciones que devuelvan la aproximación a la integral mediante las reglas compuestas, es decir, un número.

Podemos seguir dos enfoques:

  • Llamar a la función que implementa la regla simple.
  • Hacer las cuentas que corresponden a la regla compuesta directamente, que será más eficiente.

Mostramos los dos enfoques para la regla del punto medio:

In [13]:
function I = punto_medio_compuesto_v1(f, a, b, N)
%Aproxima la integral de f en el intervalo [a,b] usando la regla
%    del punto medio compuesta. Evalua la función en el punto medio de
%    cada subintervalo
%    
%    El primer argumento es una función de variable real a valores reales
    h = (b-a)/N;
    I = 0;
    for j = [0:N-1]
        xj = a + j*h;
        I = I + punto_medio_simple(f, xj, xj+h);
    end
end
In [16]:
function I = punto_medio_compuesto_v2(f, a, b, N)
%Aproxima la integral de f en el intervalo [a,b] usando la regla
%    del punto medio compuesta. Evalua la función en el punto medio de
%    cada subintervalo
%    
%    El primer argumento es una función de variable real a valores reales
    h = (b-a)/N;
    puntos_medios = linspace(a + h/2, b-h/2, N);
    I = h*sum(f(puntos_medios));
end

Comprobamos que obtenemos el mismo resultado

In [17]:
a = 0;
b = pi;
N = 5;

quad(f, a, b)
punto_medio_compuesto_v1(f, a, b, N)
punto_medio_compuesto_v2(f, a, b, N)
ans =  5.1416
ans =  5.1749
ans =  5.1749

Regla del trapecio simple

En la regla del trapecio, aproximamos la función por una función lineal que concide con $f$ en los extremos del intervalo (es un polinomio interpolador), e integramos esta función lineal.

El polinomio lineal $P$ que pasa por $(a,f(a))$ y $(b,f(b))$ se puede calcular en forma de Lagrange o en forma de Newton. En forma de Newton $$ P(x) = f(a) + f[a,b](x-a) = f(a) + \frac{f(b)-f(a)}{b-a}(x-a) $$ y su integral en el intervalo $[a,b]$ es: $$ \int_a^b P = f(a)(b-a) + f[a,b]\frac{1}{2}(b-a)^2= f(a)(b-a) + \frac{1}{2}(f(b)-f(a))(b-a) $$ $$ \int_a^b P = \left(\frac{f(b)+f(a)}{2}\right)(b-a) $$

In [15]:

Out[15]:
<matplotlib.collections.PolyCollection at 0x7f2868af0908>

Regla de Simpson

En la regla de Simpson, aproximamos la función $f$ en el intervalo $[a,b]$ por un polinomio cuadrática que concide con $f$ en $a$, $b$ y $(a+b)/2$ (es un polinomio interpolador de grado $2$), e integramos este polinomio.

In [16]:

Ejercicio

  • Escribe una función que aproxima a integral a una función f en un intervalo [a, b] mediante la regla del trapecio simple
  • Realiza los cálculos a mano, o busca en tus apuntes de grado, o en internet, el resultado de integrar el polinomio interpolador de la regla de Simpson, escribe una función que implementa esta regla de cuadratura.
In [ ]:

In [ ]:

In [ ]:

Reglas del trapecio y Simpson compuestas

Por supuesto, podemos dividir el intervalo de integración en $N$ partes iguales, y luego aplicar la regla simple en cada subintervalo.

In [17]:

In [18]:

Ejercicio

  • Escribe una función que devuelva la aproximación a la integral de f en un intervalo [a,b], usando la regla del trapecio compuesta con N subintervalos.
  • Escribe una función que devuelva la aproximación a la integral de f en un intervalo [a,b], usando la regla de Simpson compuesta con N subintervalos.
In [ ]:

In [ ]:

In [ ]: