Apuntes 15

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Apuntes de la clase de Programación Fecha: 16 de mayo de 2013

MSc. José Colbes

Métodos numéricos – Integración numérica

Los métodos numéricos para la integración numérica surgen de la necesidad de evaluar una integral definida
de una función que no tiene una “antiderivada” explícita o si la misma es difícil de obtener. El método básico
para aproximar ∫ ( ) es llamado cuadratura numérica. El mismo utiliza una sumatoria para la
aproximación:

∫ ( ) ∑ ( )

Los métodos de cuadratura que se verán están basados en polinomios de interpolación (los cuales no son
objetos de estudio en el presente curso). La interpolación consiste básicamente en aproximar una función
continua en un intervalo mediante un polinomio ( ) de cierto grado.

El teorema de aproximación de Weierstrass establece que para cualquier función definida y continua en
[ ] y para cualquier , existe un polinomio ( ) con la siguiente propiedad:

| ( ) ( )|

Es decir, se puede aproximar cualquier función tanto como se quiera, a través de un polinomio. La ventaja de
aproximar una función mediante polinomios es que las derivadas e integrales indefinidas son fáciles de
obtener. Para más detalles acerca de la interpolación, se puede consultar el libro “Numerical Analysis” de
Richard Burden.

Métodos de integración numérica

Los tres métodos que se estudian en este curso son: el método rectangular, el método trapezoidal y el método
de Simpson. Los mismos utilizan polinomios de Lagrange de grado cero, uno y dos, respectivamente. En cada
uno se consideran intervalos de valor , donde: ( ) , donde el valor de es definido de antemano,
y define de cierta forma la precisión del método. Para simplificar las explicaciones, en las definiciones se
considera .

Método rectangular

En este método, se tiene que la integral es:

∫ ( ) ( )
El algoritmo que implementa el primer método es el siguiente (se considera una función ( ) ):
#include<stdio.h>
#include<math.h>
double F(double x){
double r;
r=pow(2,(2-x));
return r;
}
double rectangular(double a, double b, int q){
int i;
double h=(b-a)/(1.0*q);
printf("El valor de h es: %lf\n",h);
double I=0.0;
for(i=0;i<q;i++){
I+=F(a+1.0*i*h);
}
I*=h;
return I;
}

int main(){
int i,q;
double h,x,a,b,I;
printf("Se deben ingresar los limites de integracion a y b.\n");
printf("Ingrese a: ");scanf("%lf",&a);
printf("Ingrese b: ");scanf("%lf",&b);
printf("\nIngrese la cantidad de intervalos: ");scanf("%d",&q);
I=rectangular(a,b,q);
printf("\nEl valor de la integral es: %lf\n",I);
return 0;
}

El resultado es:

Método trapezoidal

En el método trapezoidal, en vez de utilizar un rectángulo en cada intervalo, se utiliza un trapecio. Este método
tiene una mejor aproximación (al valor real de la integral) que el anterior. Considerando el área de un trapecio,
el método para aproximar la integral es:

∫ ( ) [ ( ) ( )]

Por lo tanto, la función que calcula de manera aproximada esta integral es:
double trapezoidal(double a, double b, int q){
int i;
double h=(b-a)/(1.0*q);
printf("El valor de h es: %lf\n",h);
double I=0.0;
for(i=0;i<q;i++){
I+=(F(a+1.0*i*h)+F(a+1.0*(i+1)*h));
}
I*=(h/2.0);
return I;
}

El resultado es:
Método de Simpson
Este método propone una aproximación utilizando un polinomio de Lagrange de grado 2. Este método tiene
una mejor aproximación (al valor real de la integral) que los dos anteriormente vistos. El área determinada por
este método dentro de un intervalo está dada por:

∫ ( ) [ ( ) ( ) ( )]

Donde es el punto medio entre y .

Por lo tanto, la función que calcula de manera aproximada esta integral es:
double simpson(double a, double b, int q){
int i;
double h=(b-a)/(1.0*q),m,a2,b2;
printf("El valor de h es: %lf\n",h);
double I=0.0;
for(i=0;i<q;i++){
a2=a+1.0*i*h;
b2=a+1.0*(i+1)*h;
m=(a2+b2)/2.0;
I+=(F(a2)+4*F(m)+F(b2));
}
I*=(h/6.0);
return I;
}

El resultado es:

Comparación de resultados
El valor exacto de la integral es:
[ ]
( )

Los resultados obtenidos con los tres métodos estudiados son:




Con esto, podemos observar que el método de Simpson es el que obtiene los mejores resultados para la
función considerada. De hecho, es el método que tiene el menor error de aproximación.

También podría gustarte