Sie sind auf Seite 1von 16

Universidad Tcnica Federico Santa Mara

Departamento de Matemtica
Laboratorio de Computacin para las Aplicaciones de la Matemtica en Ingeniera

Laboratorio Mat 270 - Anlisis Numrico


ONCEAVA SESIN

Ecuaciones Diferenciales Ordinarias.


Semana del Martes 27 de Junio al 3 de Julio de 2017

Coordinador Acadmico del Laboratorio : Profesor Jaime Figueroa Nieto (jaime.gueroa@usm.cl)


Ayudante Coordinador y de Software : Hernn Caviedes (hernan.caviedes@alumnos.usm.cl); Gustavo
Ruiz (gustavo.ruiz.12@sansano.usm.cl)
Sitio web : http://lab.mat.utfsm.cl
Atencin Alumnos : Va e-mail a los ayudantes de sala y ayudante coordinador.

26 de junio de 2017

1
Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

ndice
1. APROXIMACION DE SOLUCIONES DE ECUACIONES Y SISTEMAS DE DIFE-
RENCIALES ORDINARIAS CON ALGORITMOS DE ORDEN UNO Y DOS 3
1.1. Mtodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Mtodo de Euler-Cauchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. APROXIMACIN DE SOLUCIONES DE SISTEMAS DE ECUACIONES DIFEREN-
CIALES ORDINARIAS 7
2.1. Mtodo de Runge-Kutta de orden 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Mtodo de Runge-Kutta de orden 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3. Mtodo de Adams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3. PROBLEMAS A VALORES EN LA FRONTERA PARA ECUACIONES DIFEREN-
CIALES ORDINARIAS (Opcional) 11
3.1. Mtodo del disparo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4. INESTABILIDAD DEL METODO DE MILNE 15
4.1. Mtodo de Milne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Primer semestre 2017 2


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

1. APROXIMACION DE SOLUCIONES DE ECUACIONES Y SIS-


TEMAS DE DIFERENCIALES ORDINARIAS CON ALGO-
RITMOS DE ORDEN UNO Y DOS
1.1. Mtodo de Euler

El mtodo de Euler es un mtodo de primer orden


Sea la ecuacin:
y
= f (x, y) (1.1.1)
x
Con un valor inicial denido "y(x0 ) = y0 ". La aplicacin del mtodo consiste en calcular sucesivamente
los valores de la funcin incgnita mediante la "discretizacin"de la derivada, esto es:
yn+1 = yn + hf (xn , yn ) (1.1.2)
Donde "h"se dene como el "paso", o distancia, entre los puntos "x"sucesivos.

NOTA: observar que mediante la aplicacin de este mtodo, la resolucin de la ecuacin diferencial an-
terior se reduce al clculo de valores de una sucesin, iniciada por el valor denido "y(x0 )"

Ejemplos

1) Sea el Problema de Valor Inicial, PVI:


y0 = y t2 + t 1,25 0<t<2
y(0) = 1,25
Cremos la funcin "f (t, y) los lmites del dominio [a,b] = [0,2]
2

f=@(t,y) y-t.^2+t-1.25;
a=0;
b=2;

Ahora denamos el paso (para este caso usaremos 0.1) y el valor inicial dado, dado que obtendremos una
sucesin de puntos, es conveniente utilizar un arreglo para "guardar"los valores de ", es decir y(1) = y0
2

h=0.1;
y(1)=1.25;

Con esto podemos aplicar fcilmente la frmula de Euler al problema dado utilizando la forma anterior y
un comando para realizar un loop, deniendo los valores de "t"previamente utilizando la informacin del
dominio y el paso.
t=a:h:b;
n=length(t);
for i=1:n-1
y(i+1)=y(i)+h*(f(t(i),y(i)));
end

As obtuvimos los valores de "para todo el recorrido "t"[0,2]. Ahora contrastemos la solucin obtenida
2

con la solucin real de la ecuacin:


y = (t + 0,5) et + 2

Primer semestre 2017 3


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

real=@(t)(t+0.5).^2-exp(t)+2
plot(t,real(t),'o',t,y,'r-')

Intentemos ahora con un paso ms pequeo

clear y
y(1)=1.25;
h=0.05;
t=a:h:b;
n=length(t);
for i=1:n-1
y(i+1)=y(i)+h*(f(t(i),y(i)));
end

Graquemos otra vez:

plot(t,real(t),'o',t,y,'r-')

Adicional : Intente con pasos ms pequeos


2) Problema bidimensional
y0 = 0,7y + 0,5z y(0) = 0
z0 = 0,2y 0,5z z(0) = 2

Denamos nuevamente las funciones F y(y, z) y F z(y, z) respectivamente

fy=@(y,z) -0.7*y+0.5*z;
fz=@(y,z) 0.2*y-0.5*z;

Ahora realizamos una operacin anloga al ejercicio anterior para pasos h= 0.1, 0.05 y 0.01 , para un
dominio t entre 0 y 2.

a=0;
b=2;
h=[0.1 0.05 0.01];

Para paso 0.1

j=1;
y1(1)=0;
z1(1)=2;
t1=a:h(j):b;
n=length(t1);
for i=1:n-1
y1(i+1)=y1(i)+h(j)*(fy(y1(i),z1(i)));
z1(i+1)=z1(i)+h(j)*(fz(y1(i),z1(i)));
end

Para paso 0.05

j=2;
y2(1)=0;
z2(1)=2;
t2=a:h(j):b;

Primer semestre 2017 4


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

n=length(t2);
for i=1:n-1
y2(i+1)=y2(i)+h(j)*(fy(y2(i),z2(i)));
z2(i+1)=z2(i)+h(j)*(fz(y2(i),z2(i)));
end

Para paso 0.01

j=3;
y3(1)=0;
z3(1)=2;
t3=a:h(j):b;
n=length(t3);
for i=1:n-1
y3(i+1)=y3(i)+h(j)*(fy(y3(i),z3(i)));
z3(i+1)=z3(i)+h(j)*(fz(y3(i),z3(i)));
end

Graquemos las tres alternativas

plot(t1,y1,'r-',t2,y2,'g',t3,y3,'b --')
figure(2)
plot(t1,z1,'r-',t2,z2,'g',t3,z3,'b --')

En 3d:

plot3(t1,y1,z1,'r-',t2,y2,z2,'g',t3,y3,z3,'b--')
grid on

Se observa que la solucin tiende a curvarse para rodear el origen, acercndose y bordendolo lentamente,
como si este fuera una especie de "sumidero". Tericamente para los sistemas lineales, los valores caracte-
rsticos indican el comportamiento cuando "t"tiende a innito, usemos el comando .eig"para obtener los
vectores y valores propios.

[V,D]=eig([-0.7 0.5;0.2 -0.5]);

La diagonal "Dontiene los valores propios, al ser ambos negativos se deduce que el origen es un sumidero
que atrae a las trayectorias, lo cual coincide con nuestra observacin.

1.2. Mtodo de Euler-Cauchy

Este mtodo es de orden 2. Sea nuevamente:


y
= f (x, y) (1.2.1)
x
Sin embargo ahora la aproximacin de los valores de la funcin incgnita se realiza mediante las siguientes
ecuaciones:
zn+1 = yn + hf (xn , yn ) (1.2.2)
h
yn+1 = yn + f (xn+1 , zn+1 + f (xn , yn )) (1.2.3)
2
Donde h, nuevamente, es el paso.

Ejemplos

Primer semestre 2017 5


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

P.V.I. Unidimensional
y0 = y t2 + t 1,25 0<t<2
y(0) = 1,25

NOTA: Se cuenta con la solucin del sistema con el objetivo de comparar:

y = (t + 0,5)2 et + 2
El planteo comienza de la misma forma que en el mtodo de Euler presentado anteriormente, ya que lo nico
que vara es la forma de clculo de la "sucesin":
clear all; close all
f=@(t,y) y-t.^2+t-1.25;
a=0;
b=2;
h=0.1;
y(1)=1.25;
real=@(t)(t+0.5).^2-exp(t)+2;
t=a:h:b;
n=length(t);
for i=1:n-1
z(i+1)=y(i)+h*f(t(i),y(i));
y(i+1)=y(i)+(h/2)*(f(t(i+1),z(i+1))+f(t(i),y(i)));
end
Vemos si los clculos coinciden a travs de un grco
plot(t,real(t),'o',t,y,'r-')
Notar que el parecido es mucho mayor que al aplicar la formula de Euler sola. Intentar con pasos menores
y analizar la magnitud del error absoluto.
Ejercicio Propuesto ( Problema bidimensional )
Aplicar el mtodo de Euler-Cauchy para aproximar la solucin del sistema :
x0 = 0,7x + 0,5y x(0) = 0
0
y = 0,2x 0,5y y(0) = 2

Primer semestre 2017 6


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

2. APROXIMACIN DE SOLUCIONES DE SISTEMAS DE ECUA-


CIONES DIFERENCIALES ORDINARIAS
2.1. Mtodo de Runge-Kutta de orden 4

Frmula de Runge-Kutta de orden 4 (RK-4):

Si 0 = f (t, ), (t0 ) = 0 entonces:


h
n+1 = n + (k1 + 2k2 + 2k3 + k4 ) (2.1.1)
6
Donde:
k1 = f (tn , n )
 
h h
k2 = f tn + , n + k1
2 2
 
h h
k3 = f tn + , n + k2
2 2
k4 = f (tn + h, n + hk3 )

Ejemplo (Problema bidimensional)

Como test para Runge-Kutta de 4to orden (RK-4) usemos el sistema:


y0 = z
y(0) = 1
0
z = 0,09y
z(0) = 0

La solucin de este sistema es y = cos(0,3t) , z = 0,3 sin(0,3t) la que determina una trayectoria elptica
en el plano de fase recorrida en sentido antihorario.

Probemos el mtodo con el ejemplo previo a crear la funcin rk-4:


function y=rk4(f,y,t)

y=reshape(y,length(y),1);
t=reshape(t,length(t),1);
h=t(2)-t(1);
for i=1:(length(t)-1)

k1=f(y(:,i),t(i));
k2=f(y(:,i)+(h/2)*k1,t(i)+(h/2));
k3=f(y(:,i)+(h/2)*k2,t(i)+(h/2));
k4=f(y(:,i)+h*k3,t(i)+h);
y(:,i+1)=y(:,i)+(h/6)*(k1+2*k2+2*k3+k4);
end
y=y';

clear all
h=0.1;
N=50;

Primer semestre 2017 7


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

t=[0:h:N*h];
f=@(W,t)[0 1;-0.09 0]*[W(1);W(2)];
w0=[1;0];
dd=rk4(f,w0,t);
plot(dd(:,1),dd(:,2))

No alcanzamos a dar una vuelta en el recorrido antihorario. Probemos con ms puntos;

N=100;
t=[0:h:N*h];
ddd=rk4(f,w0,t);
plot(ddd(:,1),ddd(:,2));
Se dan varias vueltas por el mismo crculo

Ejercicio. (Problema bidimensional)

Aplicar el mtodo para aproximar la solucin del sistema:


y0 = 0,7y + 0,5z
y(0) = 1
0
z = 0,2y 0,5z
z(0) = C

Calculamos la aproximacin y la trazamos

clear all
h=0.1;
N=100;
t=[0:h:N*h];
w0=[1;0];
f=@(W,t)[-0.7 0.5;0.2 -0.5]*[W(1);W(2)];
d3=rk4(f,w0,t);
plot(d3(:,1),d3(:,2))

2.2. Mtodo de Runge-Kutta de orden 5

Si = f (t, ), (t0 ) = 0 entonces:


0

1 5 27 125
n+1 = n + k1 + k4 + k5 + k6 (2.2.1)
24 48 56 336

Primer semestre 2017 8


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

Donde:
k1 = hf (tn , n )
 
h 1
k2 = hf tn + , n + k1
2 2
 
h 1 1
k3 = hf tn + , n + k1 + k2
2 4 4
k4 = hf (tn + h, n k2 + 2k3 )
 
2 7 10 1
k5 = hf tn + h, n + k1 + k2 + k4
3 27 27 27
 
1 28 1 546 54 378
k6 = hf tn + h, n + k1 k2 + k3 + k4 k5
5 625 5 625 625 625

function y=rk5(f,y,t)

y=reshape(y,length(y),1);
t=reshape(t,length(t),1);
h=t(2)-t(1);
for i=1:(length(t)-1)

k1=h*f(y(:,i),t(i));
k2=h*f(y(:,i)+(k1/2),t(i)+(h/2));
k3=h*f(y(:,i)+(k2/4)+(k1/4),t(i)+(h/2));
k4=h*f(y(:,i)+2*k3-k2,t(i)+h);
k5=h*f(y(:,i)+(7/27)*k1+(10/27)*k2+(1/27)*k4,t(i)+(2/3)*h);
k6=h*f(y(:,i)+(28/625)*k1-(1/5)*k2+(546/625)*k3+(54/625)*k4
-(378/625)*k5,t(i)+(h/5));
y(:,i+1)=y(:,i)+(k1/24)+(5/48)*k4+(27/56)*k5+(125/336)*k6;
end
y=y';
end

Resolvamos el primer problema de la sesin:


clear all
h=0.1;
N=50;
t=[0:h:N*h];
f=@(W,t)[0 1;-0.09 0]*[W(1);W(2)];
w0=[1;0];
dd=rk5(f,w0,t);
plot(dd(:,1),dd(:,2))

Primer semestre 2017 9


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

2.3. Mtodo de Adams

FRMULA DE ADAMS de orden 4 (Adams-4)


Si 0 = f (t, ), (t0 ) = 0 entonces:
h
n+1 = n + (55fn fn1 + 37fn2 9fn3 ) (2.3.1)
24
h
n+1 = n + (9(fn1 , n+1 ) + 19fn 5fn1 + fn2 ) (2.3.2)
24
En donde se denota fk = f (tk , k )
Para implementarlo se necesitan 3 aproximaciones iniciales, las cuales se obtienen con el RK-4 que tiene un
orden similar.
La idea es verlo en funcionamiento para un sistema bidimensional.

Ejemplo (Problema bidimensional)

Como test para Adams de 4o orden (Adams- 4) usemos el sistema:


y0 = z
y(0) = 1
z 0 = 0,09z
z(0) = 0

La solucin de este sistema es y = cos(0,3t) , y = 0,3 sin(0,3t) la que determina una trayectoria elptica
en el plano de fase recorrida en sentido antihorario.
La siguiente funcin implementa el mtodo. Ntese que primero se debe haber denido la funcin F, igual
que en el caso de RK4. Antes de comenzar los clculos, se utilizan puntos encontrados con la aproximacin
anterior.
Pongamos a prueba el metodo previo a crear la funcin:
function y=adams4(f,y,t)

y=reshape(y,length(y),1);
t=reshape(t,length(t),1);
h=t(2)-t(1);
for i=1:(length(t)-1)

if i<=3 %rk4 para las primeras 3 iteraciones


k1=f(y(:,i),t(i));
k2=f(y(:,i)+(h/2)*k1,t(i)+(h/2));
k3=f(y(:,i)+(h/2)*k2,t(i)+(h/2));
k4=f(y(:,i)+h*k3,t(i)+h);
y(:,i+1)=y(:,i)+(h/6)*(k1+2*k2+2*k3+k4);
else %adams propiamente tal
wp=y(:,i)+(h/24)*(55*f(y(:,i),t(i))-59*f(y(:,i-1),t(i-1))
+37*f(y(:,i-2),t(i-2))-9*f(y(:,i-3),t(i-3)));
y(:,i+1)=y(:,i)+(h/24)*(9*f(wp,t(i+1))+19*f(y(:,i),t(i))
-5*f(y(:,i-1),t(i-1))+f(y(:,i-2),t(i-2)));
end
end

Primer semestre 2017 10


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

y=y';
end

clear all
h=0.1;
N=57;
t=[0:h:N*h];
f=@(W,t)[0 1;-0.09 0]*[W(1);W(2)];
w0=[1;0];
d6=adams4(f,w0,t);
plot(d6(:,1),d6(:,2))

No se alcanza a dar una vuelta


N=200;
t=[0:h:N*h];
d6=adams4(f,w0,t);
plot(d6(:,1),d6(:,2))

Se dan varias vueltas.

Ejercicio Aproximar la solucin del pndulo no lineal:


d
= v
dt
dv b g
= v sin()
dt m l
Con condiciones iniciales: q=0; v=15 en t=0.
Constantes m=0.5, b=0.5, l=0.5, g=9.8.

3. PROBLEMAS A VALORES EN LA FRONTERA PARA ECUA-


CIONES DIFERENCIALES ORDINARIAS (Opcional)
3.1. Mtodo del disparo

El mtodo del disparo para el problema no lineal con valor de frontera de segundo orden y 00 = f (t, , y, y 0 ),
a < t < b , y(a) = y1 ; y(b) = y2 lleva ese nombre por la analoga con el procedimiento de dispararles a
objetos situados en un blanco jo.
Se comienza con un disparo y 0 (a) = z1 lo que determina un P.V.I. en t = a , el cual se resuelve obteniendose el
valor y(b) correspondiente. Si este valor no est cerca de y2 se corrige la elevacin hasta dar con l. Existiendo
otros procedimientos, sta vez emplearemos biseccin para acercarse a usando para ello dos elevaciones una
que de un valor y(b) por arriba y otro por abajo. Supondremos por esto que la funcin f cumple con las
condiciones para aplicar el teorema de existencia y unicidad de soluciones.

Ms detalles se encontrarn en la bibliografa del curso.

Ejemplo

Primer semestre 2017 11


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

Considere el problema a valores en la frontera


1
y 00 y 0 + 2(y ln(t))3 ,
= 2<t<3
t
1
y(2) = + ln(2)
2
1
y(3) = + ln(3)
3
Este ejercicio fue tomado del texto de R.Burden y J. Faires y tiene por solucin exacta:
1
y= + ln(t)
t
Transformemos la ecuacin de segundo orden a un sistema de primer orden:
y0 = z
0 1
z = z + 2(y ln(t))3
t
Y con las condiciones de frontera antes mencionadas.

Haremos el disparo con:

pendiente z=0.2
paso:0.1
nmero de puntos:10
tiempo inicial:2
punto incial:1/2 + log(2)

Para esto denimos la siguiente funcin:


function Wp = G(t,W)

y=W(1,1);
z=W(2,1);
Wp=[z ; z + 2*(y-log(t))^3 - 1/t];

Adems redenimos la funcin para iterar con RK4, de manera que utilice la funcin G:
function [W,t]=rk4d(h,N,ti,W0)

W(:,1) = W0;
Wn=W0;
tn = ti; t(1) = tn;

for n=1:N,
k1 = G(tn , Wn);
k2 = G(tn + 1/2*h , Wn + 1/2*h*k1);
k3 = G(tn + 1/2*h , Wn + 1/2*h*k2);
k4 = G(tn + h , Wn + h*k3);
W(:,n+1) = Wn + h/6*(k1 + 2*k2 + 2*k3 + k4);
tn = tn + h;

Primer semestre 2017 12


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

Wn = W(:,n+1);
t(n+1) = tn;
end

Ultima aproximacion:
lista(1,11)
Conclusin: con el paso 0.1 el tiempo avanzando en 10 iteraciones es t = 2 + 0,1 20 = 3. Se logr llegar
a la abcisa y = 1,33274 y necesitamos llegar a la abicsa y = 1,43195. Probemos con otro DISPARO.

Haremos otro disparo con:

pendiente z = 0.3
paso = 0.1
numero de puntos: 20
tiempo inicio : 2
punto inicial (1/2 + ln(2), 0.3)
lista = rk4d(0.1, 20, 2, [1/2 + log(2); 0.3]);
figure(1);
plot(lista(1,:),lista(2,:),'o');
grid on;

Ultima aproximacion:
lista(1,21)
Conclusin: Se logr llegar a la abcisa y = 1,53381 y necesitamos llegar a la abcisa y = 1,43195.
El disparo correcto se encontrar entre ambos.
Disparemos con pendiente entre 0.2 y 0.3 y coloquemos la pared en el objetivo y = 1,43195 para mirar el
efecto.
Uniremos los puntos con rectas para percibir mejor las trayectorias.

Haremos otro disparo con pendiente entre 0.2 y 0.3 paso = 0.1 ; numero de puntos : 10 ; tiempo inicio :
2, punto inicial ( 1/2 + log(2) , 0.3)
figure(1);
lista1 = rk4d(0.1, 10, 2, [1/2 + log(2); 0.2]);
lista1'
disp(sprintf('Ultima aproximacion: %d', lista1(1,11)))
subplot(2,2,1), plot(lista1(1,:),lista1(2,:)); grid on;
title('Pendiente 0.2'); axis([1.2 1.5 0 0.5]);
lista2 = rk4d(0.1, 10, 2, [1/2 + log(2); 0.23]);
lista2'
disp(sprintf('Ultima aproximacion: %d', lista2(1,11)))
subplot(2,2,2), plot(lista2(1,:),lista2(2,:)); grid on;
title('Pendiente 0.23'); axis([1.2 1.5 0 0.5]);
lista3 = rk4d(0.1, 10, 2, [1/2 + log(2); 0.26]);
lista3'
disp(sprintf('Ultima aproximacion: %d', lista3(1,11)))
subplot(2,2,3), plot(lista3(1,:),lista3(2,:)); grid on;
title('Pendiente 0.26'); axis([1.2 1.5 0 0.5]);

Primer semestre 2017 13


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

lista4 = rk4d(0.1, 10, 2, [1/2 + log(2); 0.29]);


lista4'
disp(sprintf('Ultima aproximacion: %d', lista4(1,11)))
subplot(2,2,4), plot(lista4(1,:),lista4(2,:)); grid on;
title('Pendiente 0.29'); axis([1.2 1.5 0 0.5]);

Ultima aproximacion:
lista4(1,11)

figure(1);
plot(lista1(1,:),lista1(2,:),'b', lista2(1,:),lista2(2,:),'b', lista3(1,:),lista3(2,:),
'b',lista4(1,:),lista4(2,:),'b', [1/3 + log(3) 1/3 + log(3)],[0 1],'r');
grid on;
De la lista se obtiene que la pendiente correcta es aproximadamente z = 0,26 Cmo automatizar el
disparo de tal manera de obtener el disparo correcto con precisin deseada?

Partimos de z1= 0.23; n1=1.39197; z2=0.26; n2=1.45209


Tomamos el punto medio: zz = (z1+z2)/2, calculamos la ltima aproximacin n y hacemos el test:

Si n <y3: z1 = zz , n1 = n ;
Si n >y3: z2 = zz , n2 = n ;
Esto se detiene hasta cuando
abs[fin- y3 ] < 10^(-5)

y3=1/3 + log(3);
z1 = 0.23;
fin1= 1.39197;
z2 = 0.26;
fin2 = 1.45209;
for i=1:30,
zz=(z1+z2)/2;
lista = rk4d(0.1, 10, 2, [1/2 + log(2); zz]);
fin=lista(1,11);
disp(sprintf('iteracion %d: zz=%d, fin=%d',i,zz,fin));
if fin < y3,
z1 = zz;
fin1 = fin;
elseif fin >=y3,
z2 = zz;
fin2 = fin;
end
if abs(fin-y3) <= 10^(-5)
break;
end
end

Aproximacin nal y comparacin con la solucin exacta

Haremos otro disparo con pendiente zz


paso = 0.1 ; numero de puntos : 10 ; tiempo inicio : 2, punto inicial ( 1/2 + Log[2] , 0.3)

Primer semestre 2017 14


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

lista = rk4d(0.1, 10, 2, [1/2 + log(2); zz]);


t=2:0.01:3;
y=1./t + log(t);
z=-1./(t.^2)+1./t;
figure(1);
plot(lista(1,:),lista(2,:),'o',y,z,'r'); grid on;

Comparacion:
format
t=2:0.1:3;
digits(6)
e=abs(lista(1,:)'- (1./t+log(t))');
disp(sprintf(' Tiempo Aproximacin Exacto Error'));
disp([vpa(t') vpa(lista(1,:)') vpa((1./t+log(t))') vpa(e)]);

Ejercicio

Considere el problema a valores en la frontera


1
y 00 = (32 + 2t3 y y 0 ) 1<t<3
8
y(1) = 17
y(3) = a

Este ejercicio fu tomado del mismo texto y tiene por solucin exacta:
16
y = t2 +
t

4. INESTABILIDAD DEL METODO DE MILNE


Los mtodos de Runge-Kutta y los mtodos predictor-corrector de Adams son numricamente estables.

Sin embargo existen mtodos o algoritmos que son inestables. Uno de ellos es el mtodo de Milne.

4.1. Mtodo de Milne

Es una frmula que se obtiene integrante la ecuacin diferencial y 0 (t) = f (t, y(t)) y utilizando las frmulas
de integracin abierta y cerrada de Newton-Cotes conocidas tambin con el nombre de frmulas de Simpson.
4h 28
yn+1 = yn3 + 0
(2yn2 0
yn1 + yn0 ) + h5 y (5) () (4.1.1)
3 90
h 0 h5
yn+1 = yn1 + (yn1 + 4yn0 + yn+1
0
) + y (5) () (4.1.2)
3 90
La ecuacin 4.1.1 Frmula de Milne predictor y 4.1.2 Frmula de Milne corrector.

Ejemplo:

Primer semestre 2017 15


Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270

Aplicar el mtodo corrector implcito de Milne al P.V.I.:


y0 = y
y(0) = 1
cuya solucin es y = et .
Se tiene para f (t, y) = y
h
yn+1 = yn1 + (yn1 + 4yn + yn+1 )
3
Aislando yn+1    
h 4h h
yn+1 1 = yn + 1 + yn1
3 3 3
Esto es
4h 3+h
yn+1 = yn + yn1
3h 3h
Este es el mtodo que se aplica a continuacin, inicindolo con datos exactos. Fijarse en el increble aumento
del error en la tercera columna:
clear
format
h=1/10;
y(1,1)=1;
y(2,1)= exp(h);
for i=1:99
y(i+2,1)=4*h*y(i+1,1)/(3-h)+(3+h)*y(i,1)/(3-h);
end
t=(0:100)'*h;
y1=exp(t);
figure(1)
subplot(2,1,1)
plot(t,y,'bo')
hold on
plot(t,y1,'r')
title('Solucion')
grid on
subplot(2,1,2)
plot(t,y-y1)
title('Error')
grid on

En la siguiente tabla se muestra los mismos resultados cada 1 segundo:


format long
j=0:10:100;
disp(' Tiempo Aproximacin Error')
disp([t(j+1,1) y(j+1,1) y(j+1,1)-y1(j+1,1)])

Ejercicio:

Comprobar que con el problema y 0 = y se obtiene que el error desciende, sin embargo, si se disminuye
el paso no se obtiene en correspondencia un descenso de acuerdo a la prediccin terica de cuarto orden, de
hecho el error se conserva. Eso tambin es signo de la inestabilidad.

Primer semestre 2017 16

Das könnte Ihnen auch gefallen