Integracion Numerica
Integracion Numerica
Integracion Numerica
ESCUELA PROFESIONAL DE
INGENIERIA DE MINAS
TEMA:
“METODO DEL TRAPECIO”
ALUMNO :
INTEGRACIÓN NUMÉRICA
REGLA TRAPEZOIDAL
Objetivos: Resolver el problema de cálculo del área bajo la curva entre dos
límites conocidos, dividiendo en N sub áreas para calcular su valor asumiendo
cada sub área como un pequeño trapecio.
Temas:
9 Cálculo de áreas.
9 Método de los trapecios.
9 Programación del método de los trapecios.
9 Cálculo del área de múltiples funciones en base a subclases.
Cálculo de áreas
Uno de los problemas matemáticos más frecuentes es el cálculo del área que se
forma al graficar una función. Por ejemplo, se necesita calcular el área A que
aparece en la siguiente figura por debajo de la función f(x) entre los límites a y
b:
Fig. 1
difícil) obtener la solución algebraica, por lo que una solución numérica permite
ahorrar tiempo.
La Fig. 2 muestra de color verde como sería el cálculo del área bajo la curva de
la función f (x ) entre los límites a y b si se dividiera dicha subarea en un solo
trapecio. El error que se cometería sería demasiado grande con respecto al área
real que se desea obtener. Dependiendo de la forma de la curva el error que se
cometería sería por exceso o por defecto. En el caso del ejemplo, el error seria
por defecto, es decir el valor que arroje el cálculo de la integral será menor al
valor real del área.
Fig. 2
Fig. 3
pequeño tamaño y aproximar el área como la suma de las áreas de cada uno de
los trapecios que se forman:
Fig. 4
9 Se determinan los puntos del eje x que delimitarán cada trapecio. Estos
puntos son:
xi= a+i*dx, con i= 0, 1, 2, ..., n
9 Se evalúa la función f en cada uno de los puntos Xi:
yi= f(xi), i= 0, 1, 2, ..., n
9 Se calcula el área de cada trapecio como:
ai= (yi+y(i+1))*dx/2, i= 0, 1, 2, ..., n-1
9 Se suman las áreas de cada uno de los trapecios.
DEDUCCION DEL MÉTODO DEL TRAPECIO: (Deducción del método desde los
Polinomios de Interpolación)
b
b
∫
a
f ( x)dx ≈ ∫ f1 ( x)dx
a
Donde f1(x), es un polinomio de interpolación (obviamente de grado 1) para
los datos:
x a b
y f(a) f(b)
Fig 5
f (b) − f (a)
( x − a) = f ( x) − f (a)
b−a
f (b) − f (a)
f1 ( x) = f (a ) + ( x − a)
b−a
Integrando este polinomio, se tiene que:
b
b b
f (b) − f (a ) ( x − a) 2
∫ f ( x)dx ∫
1 f 1 ( x)dx = f (a ) x +
b−a 2
a a a
b
f (b) − f (a ) (b − a ) 2
∫
a
f1 ( x)dx = f (a )(b − a ) +
b−a 2
(b − a )
b
∫ f ( x)dx
a
1 = f (a )(b − a ) + ( f (b) − f (a ))
2
b
f (b) − f (a )
∫ f ( x)dx
a
1 = (b − a ) f (a ) +
2
f (a) + f (b)
b
∫ f ( x)dx
a
1 = (b − a)
2
b
f (a ) + f (b)
∫ f ( x)dx ≈ (b − a)
a 2
Fig. 6
Fig. 7
CASTRO HUAMAN DANIEL
Fig. 8
Llamando a las ordenadas Yi (i = 0,1, 2, 3, ...., n), las áreas de los trapecios son:
y + y1
A1 = ∆X 0
2
Y + Y2
A2 = ∆X 1
2
(1)
.
.
Y + Yn
An = ∆X n −1
2
Fig. 9
b
∆X
A = ∫ f ( x)dx ≅ ( y0 + 2 y1 + 2 y 2 + ... + 2 y n−1 + y n ) (3)
a
2
b
∆X
A = ∫ f ( x)dx ≅ (y0 + y n + 2∑ ( y 2 + y3 + ... + y n−1 )) (4)
a
2
b
∆X n −1
A = ∫ f ( x)dx ≅ y 0 + y n + 2∑ y i (5)
a
2 i =1
Ahora, y i sería la evaluación en cada uno de los puntos sobre el eje x de base
común a cada una de las sub áreas.
y1 = f (a + 1dx)
y 2 = (a + 2dx)
y 3 = (a + 3dx)
.
.
.
y i = (a + idx)
b
∆X n −1
A = ∫ f ( x)dx ≅ f (a ) + f (b) + 2∑ f (a + i * dx) (7)
a
2 i =1
Que también se pudiese representar como
b
f (a ) + f (b) n−1
A = ∫ f ( x)dx ≅ ∆X + ∑ f (a + i * dx) (8)
a 2 i =1
CASTRO HUAMAN DANIEL
1
et = − f ``(ξ )(∆x) 3 con xi −1 < ξ < xi (9)
12
Este error es la cantidad que se debe agregar al área del trapecio para obtener
el área real. Se llama Error por Truncamiento, ya que es el error que resulta de
utilizar una serie de Taylor truncada, en vez de una serie de Taylor completa,
para representar en forma de serie el área de una faja. Generalmente no se
puede valuar directamente el término mostrado como error por truncamiento.
Sin embargo, se puede obtener una buena aproximación de su valor para cada
faja suponiendo que f '' es suficientemente constante en el intervalo de la faja
(se supone que las derivadas de orden superior son despreciables) y evaluando f
'' para ξ = X i . La estimación del error por truncamiento para la integración
total se obtiene sumando las estimaciones para cada faja. Si la estimación
obtenida para el error total por truncamiento es mayor de lo que se puede
tolerar, se debe utilizar una subarea más angosta o un método más preciso.
Se puede demostrar que una aproximación al límite del error por redondeo es:
ye(b − a) 2 1
eR ≤ (10)
2 ∆x
1
x2
Ejemplo: Utilizar la regla del trapecio para aproximar la integral: ∫e dx .
0
Tenga en cuenta que el valor real es 1.4626…
Fig. 10
1
f (0) + f (1) 1 + e
∫e
x2
dx ≈ (1 − 0)
2 = 2 = 1.85914
0
»syms x
»f=exp(x^2);
»integral=int(f)
integral =
-1/2*i*pi^(1/2)*erf(i*x)
ex 4
4
ex f (2) + f (4) e
2
e4
∫2 x dx ≈ ( 4 − 2) 2
=
2 +
4
= 17.3441
b x1 x2 xn
b
f ( x0 ) + f ( x1 ) f ( xn−1 ) + f ( xn )
∫ f ( x)dx ≈ ( x1 − x0 ) 2 + ... + ( x n − x n −1 ) 2
a
Ahora bien, ya que todos los subintervalos tienen la misma longitud h, se tiene
que:
b
h
∫ f ( x)dx ≈ 2 [ f ( x
a
0 ) + 2 f ( x1 ) + 2 f ( x 2 ) + ... + 2 f ( x n −1 ) + f ( x n )]
n −1
b f ( x 0 ) + 2 ∑ f ( xi ) + f ( x n )
∫ f ( x)dx ≈ (b − a)
i =1
a 2n
Esta es la regla del trapecio para n sub intervalos. Obviamente, se espera que
entre más sub intervalos use, mejor sea la aproximación a la integral.
1
2
Ejemplo: Aplicar la regla del trapecio para aproximar la integral ∫ e x dx si se
0
subdivide en 5 intervalos.
∫ e x2
dx ≈ 1
[
1 + 2 e 0.2 + e 0.4 + e 0.6 + e 0.8 + e
2 2
2 2
]
0 10
1
x2
∫e dx ≈ 1.48065
0
Así, se nota que con 5 intervalos, la aproximación no es tan mala. Para hacer
cálculos con más subintervalos, es conveniente elaborar un programa que
aplique la fórmula con el número de subintervalos que se desee y que permita
obtener un valor más cercano al real. Deberírealizar su propio programa y
chequear con 50, 500, 1000, 10000 y 20000 subintervalos, para observar el
comportamiento de la aproximación.
1.2
Fig 11
Solución.
0.1
0.1 − 0
I1 = ∫ f ( x)dx = [ f (0) + f (0.1)] = 0.842
0 2
0.7
0.7 − 0.1
I2 = ∫ f ( x)dx = [ f (0.1) + 3 f (0.3) + 3 f (0.5) + f (0.7)] = 2.7712
0.1 8
1. 2
1.2 − 0.7
I3 = ∫ f ( x)dx = [ f (0.7) + 4 f (0.95) + f (1.2)] = 2.4658
0. 7 6
1.2
3.25
Ejemplo: Calcula la integral ∫ f ( x)dx , usando la siguiente tabla de datos:
−1
x -1 -0.5 0 1 1.75 2.5 3.25
f(x) 2 -3 1.5 -1 0.5 0.75 -2
Fig. 12
CASTRO HUAMAN DANIEL
0
0 − (−1)
I1 = ∫ f ( x)dx ≈ [ f (−1) + 4 f (−0.5) + f (0)] ≈ −1.41667
−1 6
1
1− 0
I 2 = ∫ f ( x)dx ≈ [ f (0) + f (1)] ≈ 0.25
0 2
3.25
3.25 − 1
I3 = ∫ f ( x)dx ≈ [ f (1) + 3 f (1.75) + 3 f (2.5) + f (3.25)] ≈ 0.210938
1 8
3.25
Vale la pena comentar que no siempre tiene que suceder que se apliquen
exactamente las tres reglas. En realidad, esto depende de cómo se encuentran
espaciados los intervalos de la tabla de datos y la forma que pueda tener la
curva.
Programa en lenguaje C: Se supone que la función area se debe llamar con los
parámetros a,b y n, que serían límite inferior, límite superior y número de sub
áreas respectivamente.
Esta solución es análoga a la que se programó para buscar los ceros de una
función. El problema de esta solución, es que cuando se desea calcular la
integral de varias funciones distintas, hay que programar una función para
calcular el área de cada función.
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <math.h>
void Lee_Datos(void);
double f(double x);
int n; // Variable para el numero de intervalos
float a,b; // Variables para os limites de la integral
#pragma argsused
int main(int argc, char* argv[])
{ float dx;
double Area;
double Suma = 0;
double Xi;
int i;
clrscr();
printf("\n MÉTODO DE INTEGRACIÓN POR TRAPECIOS ");
printf("\n==================================================");
printf("\n Dada una Función f(x)=x2 ");
printf("\n");
Lee_Datos();
CASTRO HUAMAN DANIEL
dx = (b-a)/n;
Xi = a;
for ( i = 1; i < n; i++)
{ Xi += dx;
Suma += 2*f(Xi);
}
Area = dx/2 *( f(a) + Suma + f(b));
printf("\n------------------------------------------");
printf("\n Area bajo La Curva es => %.8lf ",Area);
getche();
return 0;
}
void Lee_Datos(void)
{ printf("\n Numero de Subareas => n : ");
scanf("%d",&n);
printf("\n Valor de Límite inferior => a : ");
scanf("%f",&a);
printf("\n Valor de Límite Superior => b : ");
scanf("%f",&b);
}
double f(double x)
{ return x*x; // Ecuación a la cual se le calcula el área bajo la curva
}
Si la idea es crear objetos para evaluar múltiples funciones, entonces cada uno
de estos objetos poseerá un método eval para evaluar la función asignada. La
definición del método se hará en una subclase de una clase base común a todas
las funciones. Se llamará a esta clase Función:
Con esta clase ahora es posible calcular en un solo programa el área de sin(x),
de exp(x) y de xk:
{ return exp(x); }
// area se hereda
}
class FXk extends Funcion { int k; FXk(int k)
{ this.k= k; }
double eval(double x)
{ return pow(x, k); }
// area se hereda
}
...
void run()
{ println("area sin(x)= " + new FSin().area(0.0, PI/2, 100));
println("area exp(x)= " + new FExp().area(0.0, 1.0, 100));
println("area x^3= " + new FXk(3).area(0.0, 1.0, 100));
}
O si mejor desea utilizar MatLab ó Scilab entonces el código sería así, Se debe
aclarar que la función debe estar contenida en un archivo nombrado funcion.m
en un directorio que este configurado en el Path del MatLab.
clc
format long
echo on
% La función a evaluar esta contenida dentro del archivo 'funcion.m' y se
requiere introducir los valores de los límites, como se indica a continuación
pulsa una tecla...
pause
n= input('Digite el número de subareas => n :');
a= input('Digite el Límite inferior => a :');
b= input('Digite el Límite superior => b :');
dx=(b-a)/n;
suma=0;
% Algoritmo para la sumatoria de la regla trapezoidal de segmentos múltiples
% pulsa una tecla...
pause
for I=1:n-1
xi=a+i*dx
suma=suma+funcion(xi);
end