You are on page 1of 7

MTODO DE SIMPSON IMPLEMENTADO EN C++

Antes de empezar procederemos a explicar el mtodo de Simpson:

El mtodo de Simpson
En anlisis numrico, la regla o mtodo de Simpson (nombrada as en honor
de Thomas Simpson) y a veces llamada regla de Kepler es un mtodo de integracin
numrica que se utiliza para obtener la aproximacin de la integral:

Descripcin
En este procedimiento, se toma el intervalo de anchura 2h, comprendido
entre xi y xi+2, y se sustituye la funcin f(x) por la parbola que pasa por tres
puntos (xi, yi), (xi+1, yi+1), y (xi+2, yi+2).

Calculamos la contribucin a la integral del primer intervalo (x0, x0+2h) y


generalizaremos al resto de los intervalos.
La ecuacin de la parbola y=ax2+bx+c que pasa por los puntos (x0, y0), (x0+h, y1),
(x0+2h, y2) es

Este sistema de tres ecuaciones con tres incgnitas, se reduce a


Despejamos el coeficiente a, y 2ax0+b

Sustituimos la curva por la porcin de parbola en el intervalo (x0, x0+2h). La


integral aproximada vale

En general, el valor del rea aproximada, en el intervalo (xi, xi+2h) sombreada en


la figura, es

El rea aproximada en el intervalo [a, b] es

o bien, agrupando trminos

El primer parntesis, contiene la suma de los extremos, el segundo, la suma de


los trminos de ndice impar, y el tercero la suma de los trminos de ndice par.
PARA LA VERIFICACIN DEL ALGORITMOS UTILIZAREMOS EL SIGUIENTE
EJEMPLO:

n=4
ALGORITMO MTODO DE SIMPSON

1. Lo primero que tenemos que hacer es definir nuestras libreras a utilizar en


este caso utilizaremos

#include<iostream>: es una librera de entrada y salida, leer e imprimir por consola


#include<cmath>: es una librera para operaciones matemticas bsicas
2. Seguido definiremos un mtodo de tipo doubl que va a retornar nuestra
funcin a integrar para este ejemplo estamos utilizando:

Expresado en Lenguaje c++ seria de la siguiente manera:

1 / pow((1+ pow(x, 2)),0.5);

La funcin pow sirve para potencias en este caso utilizaremos tambin para la
radicacin, Para resolver el problema de races, se aprovecha una de las mas
elementales y conocida de las leyes de exponentes que dice:

Es por eso que primero elevamos a la potencia de 0.5 y adentro de esta funcin
ponemos nuestra suma de 1 mas X al cuadrado, de esta manera quedara nuestra
funcin f
3. Luego crearemos nuestro mtodo principal que llamaremos main() donde se
realizaran las operaciones para hallar nuestro resultado.

- Lo primero que hacemos es definir nuestras variables de tipo entero


o n para el numero de intervalo que ser leda por teclado
o i para cuando nuestro bucle for recorra el arreglo.
- Lo segundo es declarar nuestras variables de tipo doubl:
o a que ser el limite inicial esta variable se le asignar por teclado un
valor
o b que ser el limite final esta variable se le asignar por teclado un
valor
o h ser la anchura de nuestros intervalos
o sum inicializado en 0 que ser nuestra variable donde se almacenar
la suma
o integral que ser nuestra variable a quien se le asignar el resultado
final.
- Lo siguiente es leer nuestras variables a,b,n
- Definimos dos vectores X e Y de tamao 10
- Calculamos la anchura de nuestros intervalo que est dado por la formula
h=(b-a)/n
- Luego tendremos nuestro primer bucle for que se encargara de recorrer y
asignar las variables en este caso para X[i] se sumara el limite inicial a por
el valor de i que vas desde 0 hasta n y Y[i] se le asignara el valor que retornar
al enviar el arreglo x[i] a la funcin f definida al principio.
- El segundo bucle for lo que haces es recorrer desde 1 hasta n haciendo que
se sumen la variable sum + 4 por el arreglo Y[i].
- Y el tercer bucle for se encargar de recorrer desde 2 hasta n 1 con la
finalidad de sumar nuestro variable sum con la multiplicacin de 2 por
nuestro arreglo Y[i] que contiene los valores que se retornaron de la
funcin f.
- Realizamos la operacin dad por la frmula del MTODO SIMPSON que es
integral = h / 3.0*(y[0] + y[n] + sum);
- Por ultimo imprimimos el resultado final y procederemos hacer una pausa
para que no se cierre nuestra ventana.

RESULTADO DEL ALGORITMO


CDIGO DEL ALGORITMO

#include<iostream>
#include<cmath>

using namespace std;

double f(double x)
{
double a = 1 / pow((1+ pow(x, 2)),0.5);
return a;
}

int main()
{

int n, i;
double a, b, h, sum = 0, integral;
cout << "\nIngrese los limites\n\nLimite inicial a=";
cin >> a;
cout << "\nLimite Final b=";
cin >> b;
cout << "\nIngrese el numero de Intervalos \nn=";
cin >> n;
double x[10], y[10];
h = (b - a) / n;
for (i = 0; i<n + 1; i++)
{
x[i] = a + i*h;
y[i] = f(x[i]);
}
for (i = 1; i<n; i += 2)
{
sum = sum + 4.0*y[i];
}
for (i = 2; i<n - 1; i += 2)
{
sum = sum + 2.0*y[i];
}
integral = h / 3.0*(y[0] + y[n] + sum);
cout << "\nLa Integral definida es " << integral << "\n" << endl;
system("PAUSE");
return 0;
}

You might also like