You are on page 1of 4

Departamento de Matemtica Aplicada.

Prcticas de Matemticas II. Curso 2014/15.


Prctica 4. Integracin Numrica
1.

Integracin Numrica. Repaso de Frmulas

Frmula de los trapecios:


Siendo h = ba
i = 0, 1, 2, ..., n, la siguiente frmula nos aproxima
n y denotando yi = f(xi ),
el valor de la correspondiente integral denda
b

y dx =
a

h
(y0 + 2y1 + 2y2 + ... + 2yn2 + 2yn1 + yn )
2

El error viene dado por la expresin:


R=

(b a)h2
(b a)3
nh3
y ()
y () =
y () =
12
12
12n2

donde [a, b].


Mtodo de Euler:
Consideremos una ecuacin diferencial de primer orden con valor inicial, es decir,
y = f(x, y), y(x0 ) = y0
Construimos una particin uniforme del intervalo [x0 , xn ] con n + 1 puntos:
x0 < x1 < ... < xn1 < xn ,

h = xi xi1 ,

i.

El siguiente algoritmo nos da los valores aproximados de la solucin de la ecuacin diferencial


para cada xi
yi+1 = yi + hf (xi , yi ),

i = 0, 1, 2, ..., n 1.

Mtodo de RK2 o PC2:


Partiendo de la misma situacin que en el caso anterior, el algoritmo del mtodo RK2 es:
yi+1 = yi +
Siendo:

2.

h
(k1 + k2 ),
2

i = 0, 1, 2, ..., n 1.

k1 = f (xi , yi )
k2 = f(xi + h, yi + hf(xi , yi ))

Ejercicios
2

1. Calcula mediante la frmula de los trapecios la integral 1 f (x)dx , utilizando la siguiente


tabla que nos da los valores yi = f (xi ) correspondientes a una malla de puntos igualmente
espaciados del intervalo [1, 2].
xi
yi

1
1.000

1.1
0.909

1.2
0.833

1.3
0.769

1.4
0.714

1.5
0.667

1.6
0.625

1.7
0.588

1.8
0.555

1.9
0.526

2
0.5

Para ello utiliza el siguiente archivo trapeciosp.m que nos calcula el valor de la integral
de una funcin f mediante la frmula de los trapecios, a partir de un conjunto de puntos
igualmente espaciados y de los valores de la funcin en dichos puntos.

Archivo trapeciosp.m
function T=trapeciosp(x,y)
% funcin que calcula mediante la frmula de los trapecios
% la integral de una funcin f de la que se conocen los
% valores en unos puntos igualmente espaciados x(i),
% es decir y(i)=f(x(i)).
% La integral se calcula entre el primer y ltimo punto
h=x(2)-x(1);
n=length(x)-1;
T=0.5*h*(y(1)+y(n+1)+2*sum(y(2:n)));
Sabiendo que los puntos proceden de la funcin f (x) = 1/x , aplica la regla de los
2
trapecios para calcular 1 dx
x utilizando n subintervalos de la misma longitud en los que se
subdivide el intervalo [1, 2], con n = 3, n = 6 y n = 11.
Para ello se puede utilizar la funcin anterior calculando la malla de puntos xi y los
valores yi = f(xi ) sobre la malla de puntos, o modicar un poco el archivo anterior. Si
hacemos esto ltimo obtenemos el siguiente archivo trapecios.m que nos calcula el valor
de la integral de una funcin f en un intervalo [a, b] mediante la frmula de los trapecios,
a partir de la funcin, los extremos del intervalo y el nmero de subintervalos de la misma
longitud en los que se subdivide el intervalo dado.
Archivo trapecios.m
function T=trapecios(a,b,n,f)
% funcin que calcula la integral de f en [a,b] con la regla
% de los trapecios y con n subintervalos iguales
h=(b-a)/n; x=[a:h:b]; % se genera la malla de puntos
y=f(x); % se generan los valores f(x(i)) sobre la malla
T=0.5*h*(y(1)+y(n+1)+2*sum(y(2:n)));
2. Se sabe que
1
0

dx

=
1 + x2
4

Utilizando alguna de las funciones anteriores, obtn el valor aproximado de la integral por el
mtodo de los trapecios dividiendo el intervalo en n partes iguales con n = 4, n = 8, n = 16,
n = 32, n = 64. Calcula, a priori, una cota de los errores que esperas obtener para cada n.
(De esta forma se puede obtener una aproximacin al valor de , con exactitud prejada).
Comprueba tus armaciones sobre las cotas del error.
3. Utilizando las funciones anteriores calcula la siguiente integral
1
P (X 1) =
2

ex

/2

dx,

con un error menor que 103 , sin calcular ninguna cota del error de integracin a
priori. Para ello, empieza con n = 4 intervalos, luego con n = 8, n = 16 .... Para cuando
lo creas conveniente. Explica las razones que te han hecho parar, y por qu crees que tu
resultado es correcto para la precisin indicada.

4. El mtodo de Euler proporciona un mecanismo para calcular aproximaciones numricas a la


solucin de una ecuacin diferencial. Para un problema de valores iniciales (PVI) de la forma
y = f(x, y)
y(x0 ) = y0
el mtodo de Euler funciona del siguente modo: A partir de los datos iniciales conocidos
(x0 , y0 ), y de h, que es el parmetro que dene la malla computacional para la variable
independiente, hay que calcular
yn+1 = yn + h f(xn , yn )

(1)

para n 0.

La implementacin en Matlab de este proceso es como sigue:


Archivo ee.m
function [x,y]=ee(f,x0,y0,h,xf)
% f es la funcin f(x, y) que especifica la ecuacin diferencial
% y que es necesario definir previamente
% x es el vector que contiene a la malla computacional
% y es el vector que contiene a la solucin aproximada
% x0,y0 son los datos iniciales
% h es el paso de malla
% [x0,xf] es el intervalo computacional
N=round((xf-x0)/h); % N es el nmero de intervalos
% en la malla
x0+N*h % se comprueba por precaucin que x0+N*h=xf
y(1)=y0; % datos iniciales que se introducen
x(1)=x0; % en la llamada de la funcin
% bucle de clculo de la solucin aproximada
for n=1:N
y(n+1)=y(n)+ h*f(x(n),y(n));
x(n+1)=x(n)+h;
end
Aplica la frmula (1), realizando manualmente los clculos, al siguiente problema de valores
iniciales
y = y x
y(0) = 2

para aproximar el valor de la solucin para x = 3, utilizando una malla de puntos igualmente
espaciados con paso h = 1. Repite los clculos para una malla con paso h = 0,5.
a) Utiliza ahora la funcin de Matlab denida antes para calcular las aproximaciones con
h = 1. Compara los valores que has obtenido en tus clculos manuales con los obtenidos
utilizando el cdigo en Matlab. Utiliza de nuevo la funcin para renar los valores
obtenidos: Considera ahora mallas con h = 0,5, h = 0,25 y h = 0,125.
Dibuja las soluciones obtenidas en cada una de las mallas consideradas con el comando
plot.

b) Mirando nica y exclusivamente los valores de la solucin aproximada en las mallas


utilizadas cuantos dgitos correctos podras garantizar para la solucin aproximada en
x = 2, ? Y para x = 3?
Utiliza tambien el cdigo para obtener valores en mallas mas nas: Rena, dividiendo
sucesivamente por 2 el paso de malla hasta que el resultado del clculo para y(2) en tres
mallas consecutivas tenga 4 dgitos coincidentes. Haz una tabla con el paso de malla y la
aproximacin a y(2) obtenida para ese paso de malla. Para qu pasos de malla sucede
que estas aproximaciones tienen 3 dgitos signicativos coincidentes?
5. El mtodo RK2 (tambin llamado PC2 o mtodo de Heun) es un mtodo de segundo orden.
Una programacin sencilla en Matlab de este mtodo se consigue modicando el programa
que has confeccionado para el mtodo de Euler explcito. La modicacin consiste en sustituir
las lneas:
y(n+1)=y(n)+h*f(x(n),y(n));
x(n+1)=x(n)+h;
por
k1=f(x(n),y(n));
ytil=y(n)+ h*k1;
x(n+1)=x(n)+h;
k2=f(x(n+1),ytil);
y(n+1)=y(n)+.5*h*(k1+k2);
Y as se obtiene un nuevo archivo archivo rk2.m
Razona que esta modicacin recupera la frmula que dene el mtodo de segundo orden.
Utiliza el mtodo de segundo orden para resolver numricamente el PVI del problema anterior:
Repite los clculos de cada uno de los apartados del problema anterior utilizando el mtodo de
segundo orden. Comenta las diferencias observadas al responder a cada uno de los apartados.
6. Aproxima el valor de la solucin del problema de valores iniciales
y = x2 + y,

y(0) = 1

en el punto x = 0,5, utilizando los dos mtodos numricos comentados antes: el mtodo de
Euler y el RK2. Utiliza las funciones de Matlab denidas antes para calcular las aproximaciones con h = 0,25 y despus rena, dividiendo sucesivamente por 2 el paso de malla hasta
que el resultado del clculo para y(0,5) en tres mallas consecutivas tenga 3 dgitos coincidentes. Haz una tabla con el paso de malla y la aproximacin a y(0,5) obtenida para ese paso
de malla para cada uno de los mtodos. Compara los resultados obtenidos entre si, y con el
valor exacto y(0,5) = 1,69616.

You might also like