Академический Документы
Профессиональный Документы
Культура Документы
ECUACIONES DIFERENCIALES
ORDINARIAS DE PRIMER ORDEN
SOLUCION NUMERICA
: ( x0 , x0 + ) R
tal que
Curva
solucin
pendiente
Conocemos (a) = ( x0 )
y ( x) y ( x0 ) + y '( x0 )( x x0 )
tomando x = x1 = x0 + h
obtenemos y ( x) = y ( x1 ) = y ( x0 + h) y ( x0 ) + y '( x0 ) h = y ( x0 ) + f ( x0 , y0 ) h
En resumen:
y1 = y ( x1 ) y ( x0 ) + f ( x0 , y0 )h
=y0 + f ( x0 , y0 )h
En general, tenemos
yk +1 = y ( xk +1 ) y ( xk ) + f ( xk , yk )h
=yk + f ( xk , yk )h
Ejemplo Mtodo de Euler
t = 0:0.01:5;
El siguiente comando crea la grfica de la solucin
plot(t,yexact(t,100,1,20))
TIPO SCRIPT
k = 1;
c = 20;
y0= 100;
npuntos = 50; %%Numero de pasos%%
h = 0.1;
plot (t,y,'-bo',t,z,'r')
grid on
xlabel('tiempo')
ylabel('y(t)')
legend('solucion numerica','solucion analitica')
title('Solucion numerica mediante Euler mejorado Vs
solucion analitica')
Euler mejorado
(Heun, predictor-corrector)
f ( x0 , y0 ) + f ( x1 , y%1 )
Predictor: y%1 = y0 + f ( x0 , y0 ) h Corrector: y1 = y0 + h
2
f ( x1 , y%1 )
f ( x0 , y0 )
y1
y%1 1
{ f ( x0 , y0 ) + f ( x1 , y%1 )}
2
x0 x1 = x0 + h x0 x1 = x0 + h
Predictor: y%i +1 = yi + f ( xi , yi ) h
f ( xi , yi ) + f ( xi +1 , y% i +1 )
Corrector: yi +1 = yi + h
2
Ejemplo Euler-mejorado
Comparacin Euler vs. Euler-mejorado
Estructura computacional del
Mtodo de Euler Mejorado
function tinic=0.0;
[t,y]=Euler_mejorado(f,tinic,yinic,tfinal,n) tfinal=1.0;
h=(tfinal-tinic)/n; yinic=50.0;
t=zeros(1,n+1); n=1000;
y=zeros(1,n+1); f=@(t,y) -2*(y-25);
t(1)=tinic; [t3,y3]=Euler_mejorado(f,tinic,yi
y(1)=yinic; nic,tfinal,n);
for i=1:n plot(t3,y3,'b')
t(i+1)=t(i)+h; title('Soluciones de dy/dt=-2*(y-
P1=f(t(i),y(i)); 25), y(0)=T mediante Euler-
P2=f(t(i)+h,y(i)+h*P1); mejorado')
y(i+1)=y(i)+(h/2)*(P1+P2); axis([0 1 20 55])
end xlabel('Tiempo');
ylabel('Temperatura')
axis([0 1 20 55])
Mtodo de Punto Medio (o Polgono mejorado)
h
yi +1/2 = yi + f ( xi , yi )
2
yi +1 = yi + f ( xi +1/ 2 , yi +1/ 2 )h
22
Geometra Punto Medio
Prediccin h
y 1 = y0 + f (x0, y0) y1 = y0 + f ( x0+ 1 , y0+ 1 ) h
0+ 2 2 2
2
f (x 1 ,y 1 )
0+ 0+
2 2
f ( x0 , y0 )
y1
( x0 , y0 )
y 1
0+
2
x0 x1 = x0 + h
1
x 1 = x0 + h
0+ 2
2
Punto Medio
h
Prediccin
y 1 = yi + f (xi, yi )
i+ 2
2
yi +1 = yi + f ( x 1 ,y 1 )h
i+ i+
2 2
Qu hemos hecho hasta el
momento?
Queremos aproximar numericamente soluciones de EDOs
de primer orden
dy
= f ( x, y )
dx
Filosofa:
Valor nuevo = valor viejo + pendiente * (tamao_paso)
yi +1 = yi + * h
yi +1 valor nuevo, yi valor viejo
pendiente, h tamao de paso
Runge Kuta
Buscamos un mtodo de la forma
ki ,2
ki ,1
ki ,4
ki ,3 yi +1
yi
1
ti ti + h ti +1 = ti + h
2
Ejemplo Runge Kuta Cuarto Orden
f (t , y ) = 1 t + 4 y
Tamao de paso:
Calculamos
las cuatro
pendientes
Repitiendo el proceso
Obtencin de Runge Kuta de
Segundo Orden
yi +1 = yi + h
= a1k1 + a2 k2 + K + aM kM
es una pendiente ponderada de salida
ai constantes
k1 = f (ti , yi )
k2 = f (ti + p1h, yi + q11k1h)
k3 = f (ti + p2 h, yi + q21k1h + q22 k2 h)
M
k M = f (ti + pM 1h, yi + qM 1,1k1h + ... + qM 1, M 11k N 11h)
Aproximacin de la solucin por serie de Taylor de
segundo orden alrededor de t = ti
h2
y (ti + h) = y (ti ) + y '(ti )h + y ''(ti ) + O(h3 )
2
Pero podemos calcular y '(ti ) y y ''(ti )
y '(ti ) = f (ti , y (ti ))
f (ti , y (ti )) f (ti , y (ti ))
y ''(ti ) = + y '(ti )
t y
f (ti , y (ti )) f (ti , y (ti ))
= + f (ti , y (ti ))
t y
La aproximacin obtenida est dada por
y (ti +1 ) = y (ti + h)
h2
y (ti ) + y '(ti )h + y ''(ti )
2
f (ti , y (ti )) f (ti , y (ti )) h2
=y (ti ) + f (ti , y (ti ))h + + f (ti , y (ti ))
t y 2
De esta forma,
f (ti , y (ti )) f (ti , y (ti )) h2
y (ti +1 )=y (ti ) + f (ti , y (ti ))h + + f (ti , y (ti ))
t y 2
Aproximacin por Serie de Taylor a primer orden de una
funcin de dos variables
f (ti , yi ) f (t , y )
f (ti + H , yi + K ) f (ti , yi ) + (H ) + i i (K )
t y
Para aproximar k2 tomamos H = p1h y K = q11k1h
= a1k1 + a2 k2
f (ti , yi ) f (ti , yi )
=a1 f (ti , yi ) + a2 f (ti , yi ) + [ p1h ] + [ q11k1h ]
t y
f (ti , yi ) f (ti , yi )
= [ a1 + a2 ] f (ti , yi ) + h a2 p1 + a2 q11k1
t y
f (ti , yi ) f (ti , yi )
= [ a1 + a2 ] f (ti , yi ) + h a2 p1 + a2 q11 f (ti , yi )
t y
En consecuencia,
yi +1 y (ti +1 ) = yi + h = y (ti ) + h
f (ti , yi ) f (ti , yi )
=y (ti ) + [ a1 + a2 ] f (ti , yi ) + h a2 p1 + a2 q11 f (ti , yi ) h
t y
f (ti , yi ) f (ti , yi ) 2
=y (ti ) + [ a1 + a2 ] f (ti , yi )h + a2 p1 + a2 q11 f (ti , yi ) h
t y
En resumen,
f (ti , yi ) f (ti , yi ) 2
y (ti +1 ) = y (ti ) + [ a1 + a2 ] f (ti , yi )h + a2 p1 + a2 q11 f (ti , yi ) h
t y
Hemos obtenido dos aproximaciones para y (ti +1 ) , a saber:
f (ti , yi ) f (ti , yi ) 2
y (ti +1 ) = y (ti ) + [ a1 + a2 ] f (ti , yi )h + a2 p1 + a2 q11 f (ti , yi ) h
t y
Igualando coeficientes
1 1
a1 + a2 = 1, a2 p1 = y a2 q11 =
2 2
Es decir,
1 1
a1 = 1 a2 , p1 = y q11 =
2a2 2a2
f (t , y ) + f (ti + h, yi + k1h)
yi +1 = yi + i i h
2
1 1
y% 1 = yi + k1h = yi + f (ti , yi ) h
i+
2 2 2
1 1
yi +1 = yi + f (ti + h, yi + k1h)h
2 2
=yi + f (t 1 , y% 1 )h
i+ i+
2 2
y
f (ti +1 , y% i +1 )
f (ti , yi )
y% i +1 yi +1
yi
1 t
t 1 = ti + h
ti i+
2 2 ti +1
h
Prediccin h
y 1 = y0 + f (x0, y0) y1 = y0 + f ( x0+ 1 , y0+ 1 ) h
0+ 2 2 2
2
f (x 1 ,y 1 )
0+ 0+
2 2
f ( x0 , y0 )
y1
( x0 , y0 )
y 1
0+
2
x0 x1 = x0 + h
1
x 1 = x0 + h
0+ 2
2
Sistemas de ecuaciones diferenciales
En consecuencia
x' = y
1 b c
y ' = F (t ) y x
a a a
x' = y x ' = f1 ( x, y, t ) = y
1 b c
y ' = F (t ) y x y ' = f 2 ( x, y, t ) = 1 F (t ) b y c x
a a a a a a
x x' x(t0 ) x0
Y = Y ' = , Y (t0 ) = = % = Y0
y y ' y (t0 ) x0
f1 ( x, y, t )
Tomamos F (Y , t ) =
f
2 ( x , y , t )
En resumen, obtenemos una ecuacin de la forma
Y ' = F (Y , t ), Y (t0 ) = Y0
Muy semejante a una vieja conocida:
y ' = f ( y, t ), y (t0 ) = y0
La cual aproximamos numricamente mediante distintos
algoritmos : P.ej. Euler
yi +1 = yi + hf ( yi , ti )
Extendiendo a sistemas de ecuaciones
Yi +1 = Yi + hF (Yi , ti )
xi +1 xi f1 ( xi , yi , ti )
= + h
yi +1 yi i f 2 ( xi , yi , ti )
xi +1 = xi + hf1 ( xi , yi , ti )
En resumen:
yi +1 = yi + hf 2 ( xi , yi , ti )
Euler para sistemas
f1 ( x, y ) = x 4 y,
f 2 ( x, y ) = x + y
xi +1 = xi + hf1 ( xi , yi , ti ) = xi + h ( xi 4 yi )
yi +1 = yi + hf 2 ( xi , yi , ti ) = xi + h ( xi + yi )
f1 ( x0 , y0 ) f 2 ( x0 , y0 )
f1 ( x1 , y1 ) f 2 ( x1 , y1 )
Punto Medio para
Sistemas de Ecuaciones
h yi +1 = yi + f ( y ,t )h
Prediccin y 1 = yi + f ( yi , ti ) 1 1 Correccin
i+ 2 i+ i+
2 2 2
h Yi +1 = Yi + f (Y 1 , t )h
Y 1 = Yi + F (Yi , ti ) 1
i+ 2 i+ i+
2 2 2
f1 ( x 1 , y 1 , ti )
xi +1 xi h i+ i+
x 1 = +
2 2
i + 2 xi h f1 ( xi , yi , ti )
yi +1 yi 2 f 2 ( xi + 1 , yi + 1 , ti )
y = y + 2 f (x , y , t ) 2 2
i+ 1 i 2 i i i
2
h h
x 1 = xi + f1 ( xi , yi , ti ) xi +1 = xi + f1 ( x 1 , y 1 , ti )
i+ 2 2 i+ i+
2 2 2
h h
y 1 = yi + f 2 ( xi , yi , ti ) yi +1 = yi + f 2 ( x 1 , y 1 , ti )
i+ 2 2 i+ i+
2 2 2
Dinmica de poblaciones:
depredador-presa
R 1
Y = Y (0) =
F 1
h = 0.1, n = 80
tinic=0.0, tfinal=8;
xinic=1.0,yinic=1.0; n=80;
f1=@(t,x,y) 2*x-1.2*x.*y;
f2=@(t,x,y) -y+0.9*x.*y;
[t1,x1,y1]=RK4_plano_MM(f1,f2,tinic,xinic,yinic,tfinal,n);
[t2,x2,y2]=Euler_clasico_plano(f1,f2,tinic,xinic,yinic,tfinal,n);
figure(1)
plot(t2,x2,'r',t2,y2,'b), legend('t vs x','t vs y')
title('t vs x,t vs y')
figure(2)
plot3(t2,x2,y2,'g'), title('t vs x vs y')
figure(3)
Rutina en Matlab
plot(x2,y2,'g'),title('x vx y') para comparar los
figure(4) mtodos de
plot(t1,x1,'r',t1,y1,'b'),legend('t vs x','t vs y')
title('t vs x,t vs y')
Euler simple y Runge-
figure(5) Kutta de orden 4
plot3(t1,x1,y1,'k), title('t vs x vs y')
figure(6)
plot(x1,y1,'k'), title('x vx y')
figure(7)
plot(x1,y1,'g',x2,y2,'k'), title('x vx y')
Tarea
Dar los esquemas iterativos para sistemas de
dos ecuaciones diferenciales de primer orden
para los mtodos de
Euler Mejorado