Lab Métodos Numéricos: integración numérica

1. Método del punto medio (o del rectángulo)

Suponemos que xk=x0+hkx_k = x_0 + hk son nodos equiespaciados con paso h=(ba)/mh = (b-a)/m y el punto medio del subintervalo [xk1,xk][x_{k-1}, x_k] es xk=(xk1+xk)/2\bar{x_k}= (x_{k-1} + x_k)/2. La integral queda: I=abf(x)dxhk=0mf(xk)I = \int^b_a f(x)dx \approx h \sum^m_{k=0} f(\bar{x_k}).

Implementarlo en Octave como una función rectangulo.m:

funcion [int]=rectangulo(fun,a,b,m)
...

Ejemplo de uso:

int=rectangulo('x^2',0,10,15)
exacta=10^3 / 3
error=(exacta-int)/exacta % porcentage de error
rectangulo('x^2',0,10,100)
error=(exacta-int)/exacta

2. Método del trapecio

Suponemos que xk=x0+hkx_k = x_0 + hk son nodos equiespaciados con paso h=(ba)/mh = (b-a)/m, la expresión matemática de la integral queda:

I=abf(x)dxh2k=1m(f(xk1)+f(xk))=h2(f(a)+f(b))+hk=1mf(xk)\displaystyle I=\int^b_a f(x)dx \approx \frac{h}{2} \sum^m_{k=1}(f(x_{k-1})+f(x_k)) = \frac{h}{2}(f(a)+f(b)) + h \sum^m_{k=1}f(x_k)

Implementarlo en Octave como una función trapecio.m:

funcion [int]=trapecio(fun,a,b,m)

Ejemplo de uso:

int=rectangulo('x^2',0,10,15)
exacta=10^3 / 3
error=(exacta-int)/exacta % porcentage de error
rectangulo('x^2',0,10,100)
error=(exacta-int)/exacta

3. Método de Simpson 1/3

Video de explicación del Método de Simpson 1/3

Obtenemos:

Ih3[f(x0)+2j=1(m/2)1f(x2j)+4j=1m/2f(x2j1)+f(xm)]\displaystyle I\approx \frac{h}{3}[ f(x_0) + 2 \sum^{(m/2)-1}_{j=1} f(x_{2j}) + 4 \sum^{m/2}_{j=1} f(x_{2j-1}) + f(x_m)]

Pseudocódigo:

Entradas: f, h, x0, xf

ans = 0
ans = ans + f(x0) + f(xf)
n = 2 * h

for xi = x0+h, adding n, to xf-h do
    ans = ans + 4 * f(xi)
end for

for xi2 = x0+2*h, adding n, to xf-2*h do
    ans = ans + 2 * f(xi2)
end for

ans = (ans * h)/3

print "La integral solucion es ans"

fin

Implementarlo en Octave como una función simpson13.m:

funcion [int]=simpson13(fun,a,b,m)

Ejemplo: Con la ecuación f(x)=0.2+25x200x2+675x3900x3+400x5f(x) = 0.2 + 25x - 200x^2 + 675x^3 - 900x^3 + 400x^5 desde a=0a=0 hasta b=0.8b=0.8.

> simp(f,0,0.8,2)
1.3675
> simp(f,0,0.8,4)
1.6235
> simp(f,0,0.8,6)
1.6372