Está en la página 1de 5

Método de Simpson 1/3 de segmentos múltiples en OCTAVE

El algoritmo del método es el siguiente:

function s = intsimp(f, a, b, n)

h = (b - a) / n;

i2 = 2 * (0:(n/2 - 1));

x = a + i2 * h;

s = sum(feval(f, x) + 4 * feval(f, x + h) + feval(f, x + 2 * h));

s = s * h / 3;

end

Análisis del algoritmo.

Una manera de escribir el método de Simpson es el siguiente:


𝑥1 𝑥4 𝑥𝑛
𝐼 = ∫ 𝑓 (𝑥)𝑑𝑥 + ∫ 𝑓 (𝑥)𝑑𝑥 + … + ∫ 𝑓 (𝑥)𝑑𝑥
𝑥0 𝑥2 𝑥𝑛−2

𝑓(𝑥0 ) + 4𝑓(𝑥1 ) + 𝑓(𝑥2 ) 𝑓(𝑥2 ) + 4𝑓(𝑥3 ) + 𝑓(𝑥4 ) 𝑓(𝑥𝑛−2 ) + 4𝑓(𝑥𝑛−1 ) + 𝑓(𝑥𝑛 )


𝐼 ≈ 2ℎ + 2ℎ + ⋯ + 2ℎ
6 6 6

𝑛⁄ −1
2
𝑏

∫ 𝑓(𝑥)𝑑𝑥 ≈ ∑ [𝑓(𝑎 + 2𝑖ℎ) + 4𝑓(𝑎 + (2𝑖 + 1)ℎ) + 𝑓(𝑎 + (2𝑖 + 2)ℎ)]
𝑎 3
𝑖=0

Esta es la fórmula de aproximación del método de Simpson 1/3 para segmentos múltiples, posiblemente no
se parezca a la que han trabajado en clase, pero es otra manera de representar la fórmula y sobre esta fórmula
se trabajará el algoritmo.

function s = intsimp(f, a, b, n)

En esta primera línea del algoritmo se define una función llamada intsimp, donde como datos de
entrada será la función que queremos integrar, 𝑓, los límites de integración (𝑎, 𝑏) y los segmentos
𝑛, el cual le llamaremos los parámetros de la función, y el resultado de la función queda definido
con la letra 𝑠.

h = (b - a) / n;

En la siguiente línea se define ℎ que será la anchura de cada uno de los segmentos,

i2 = 2 * (0:(n/2 - 1));
En las siguientes líneas ya se define propiamente el algoritmo del método de Simpson, voy a tratar
de explicarlo mejor con un ejemplo, vamos a suponer que queremos determinar una integral por el
método de Simpson 1/3 donde n=6, entonces la fórmula queda de la siguiente forma:

𝑓(𝑥0 ) + 4𝑓(𝑥1 ) + 𝑓(𝑥2 ) 𝑓(𝑥2 ) + 4𝑓(𝑥3 ) + 𝑓(𝑥4 ) 𝑓(𝑥4 ) + 4𝑓(𝑥5 ) + 𝑓(𝑥6 )


𝐼 ≈ 2ℎ + 2ℎ + 2ℎ
6 6 6

𝑛⁄ −1
2
𝑏

∫ 𝑓(𝑥)𝑑𝑥 ≈ ∑ [𝑓(𝑎 + 2𝑖ℎ) + 4𝑓(𝑎 + (2𝑖 + 1)ℎ) + 𝑓(𝑎 + (2𝑖 + 2)ℎ)]
𝑎 3
𝑖=0

Con 𝑛 = 6
4
𝑏

∫ 𝑓(𝑥)𝑑𝑥 ≈ ∑[𝑓(𝑎 + 2𝑖ℎ) + 4𝑓(𝑎 + (2𝑖 + 1)ℎ) + 𝑓(𝑎 + (2𝑖 + 2)ℎ)]
𝑎 3
𝑖=0

Pasemos a la siguiente línea del programa:

i2 = 2 * (0:(n/2 - 1));

Don de se define el vector 𝑖2, lo voy a explicar de acuerdo a l ejemplo 𝑛 = 6

i2 = 2 * (0:(6/2 - 1))= 2 * (0:(3 - 1))= 2*(0:2)=2*(0 1 2) = (0 2 4)

El cual define el vector (0 2 4) para el cado donde 𝑛 = 6

Nota: Si revisan el manual de OCTAVE, la instrucción (0:2) define un vector de esta forma (0 1 2)
con 3 elementos, es una forma simplificada de especificar un vector donde sus elementos van en
secuencia.

Veamos la siguiente línea

x = a + i2 * h; 𝑥 es un vector ¡

definimos un vector 𝑥 si lo defino para el ejemplo 𝑛 = 6 queda de la siguiente manera

𝑥 = 𝑎 + (0 2 4)ℎ

𝑥 = 𝑎 + (0ℎ 2ℎ 4ℎ )
𝑥 = (𝑎 𝑎 + 2ℎ 𝑎 + 4ℎ )
Nota: En algebra lineal nos dicen que solo se suman matrices del mismo tamaño aquí en este caso
en OCTAVE se está sumando un escalar 𝑎 con el vector (0ℎ 2ℎ 4ℎ ) funciona de distinta manera
la suma para el OCTAVE porque el escalar se suma a cada elemento del vector,

Ya estamos listos para la siguiente línea

s = sum(feval(f, x) + 4 * feval(f, x + h) + feval(f, x + 2 * h));


La función 𝑠𝑢𝑚(𝑥) evalúa la suma de los elementos del vector 𝑥, la función 𝑓𝑒𝑣𝑎𝑙(𝑥) ya se explico
en la práctica básicamente es evaluar la función en el vector 𝑥 (estas dos funciones ya son funciones
de OCTAVE y no es necesario crearlas, solo se llaman desde el programa)

Para nuestro ejemplo 𝑛 = 6 lo voy a expresar de la siguiente forma


𝑠 = 𝑠𝑢𝑚(𝑓𝑒𝑣𝑎𝑙(𝑓, (𝒂 𝒂 + 𝟐𝒉 𝒂 + 𝟒𝒉)) + 4 ∗ 𝑓𝑒𝑣𝑎𝑙(𝑓, (𝒂 𝒂 + 𝟐𝒉 𝒂 + 𝟒𝒉) + ℎ) + 𝑓𝑒𝑣𝑎𝑙(𝑓, (𝒂 𝒂 + 𝟐𝒉 𝒂 + 𝟒𝒉) + 2ℎ))

𝑠 = 𝑠𝑢𝑚(𝑓𝑒𝑣𝑎𝑙(𝑓, (𝒂 𝒂 + 𝟐𝒉 𝒂 + 𝟒𝒉)) + 4 ∗ 𝑓𝑒𝑣𝑎𝑙(𝑓, (𝒂 + 𝒉 𝒂 + 𝟑𝒉 𝒂 + 𝟓𝒉)) + 𝑓𝑒𝑣𝑎𝑙(𝑓, (𝒂 + 𝟐𝒉 𝒂 + 𝟒𝒉 𝒂 + 𝟔𝒉)))

La siguiente línea de comando complementa el algoritmo

s = s * h / 3;
𝑓(𝑥0 ) + 4𝑓(𝑥1 ) + 𝑓(𝑥2 ) 𝑓(𝑥2 ) + 4𝑓(𝑥3 ) + 𝑓(𝑥4 ) 𝑓(𝑥4 ) + 4𝑓(𝑥5 ) + 𝑓(𝑥6 )
𝐼 ≈ 2ℎ + 2ℎ + 2ℎ
6 6 6
Con la relación de los colores especifico lo que se está calculando con la fórmula esto para el
ejemplo con 𝑛 = 6

Y el renglón s = s * h / 3; complementa la formula y determina el valor de la aproximación de la


integral.

Espero que se haya comprendido el algoritmo del método de bisección tómate tu tiempo analiza
cada instrucción. Vamos a ponerlo en práctica

Ejemplo

Utilice OCTAVE para calcular la siguiente integral por el método de Simpson 1/3 de segmentos
múltiples con n=10
2
𝑥 2⁄
∫ (5𝑥𝑒 4 + 8)𝑑𝑥 =
−1

Ya describimos el algoritmo de Simpson 1/3 vamos a definir la función quedando de la siguiente


forma: A este archivo le llamamos f.m

function y = f(x);
y = 5*x.*exp(x.^2/4)+8;

El punto que se coloca delante de la 𝑥 indica que la multiplicación y la potencia se efectúan


elemento por elemento, recuerdas que 𝑥 es un vector,

El algoritmo de Simpson 1/3 vuelvo a ponerlo. A este archivo le llamamos intsimp.m


function s = intsimp(f, a, b, n)

h = (b - a) / n;

i2 = 2 * (0:(n/2 - 1));

x = a + i2 * h;

s = sum(feval(f, x) + 4 * feval(f, x + h) + feval(f, x + 2 * h));

s = s * h / 3;

end

El cálculo del Área con las funciones previamente definidas queda como:

Este es el archivo que corres (RUN) y hace el llamado a las funciones que previamente definimos.
El cual llamamos EjercicioSimpson1/3.m

s = intsimp("f", -1,2 ,10)

Definiendo los archivos correspondientes queda de la siguiente forma:


Bibliografía: Ejercicio tomado de:

Dr. Alfonso Alba Cadena. Facultad de ciencias UASLP. “Programación numérica”.

Chapra S. & Canale R.. (1987). Métodos numéricos para ingenieros, México: Mc Graw Hill

También podría gustarte