DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS
Preview:
DESCRIPTION
Citation preview
- 1. Pr 2 - Derivacin numrica de EDOs: Runge-Kutta RUNGE KUTTA.
Jaime Martnez Verd Pgina 1
- 2. Pr 2 - Derivacin numrica de EDOs: Runge-Kutta Resumen La
convergencia lenta del mtodo de Euler y lo restringido de su regin
deestabilidad absoluta nos lleva a considerar mtodos de orden de
convergenciamayor. En clase mencionamos que en cada paso el mtodo
de Euler se mueve a lolargo de la tangente de una cierta curva que
esta "cerca" a la curva desconocida obuscada. Los mtodos
Runge-Kutta extienden esta idea geomtrica al utilizarvarias
derivadas o tangentes intermedias, en lugar de solo una, para
aproximar lafuncin desconocida. Los mtodos Runge-Kutta ms simples
se obtienen usandodos de estas derivadas intermedias. Cdigo
empleado A continuacin, se describir el cdigo empleado para la
obtencin desoluciones para ecuaciones diferenciales ordinarias a
partir del mtodo de Runge-Kutta. Para la realizacin de este
ejercicio se programaron dos cdigos. El primero,edosrungekutta.m,
se emple para facilitar la obtencin de grficas, mientras
quemirungekutta.m se utiliz para la obtencin de los resultados de
la EDO. En el primero de los dos, al principio del cdigo, se
incluye entrecomentarios una posible ejecucin. Posteriormente se
solicita al usuario queintroduzca los datos necesarios para le
ejecucin y se procede a calcular el paso. Alcdigo se le ha aadido
la peculiaridad de poder obtener grficas para distintascondiciones
iniciales. El cdigo lo podemos dividir en cuatro bloques. El
primero esla introduccin de parmetros, el segundo se emplea para
obtener grficas enfuncin de distintas anti-imgenes de condiciones
iniciales, el tercero tiene lamisma finalidad que el anterior pero
en este caso para las imgenes y el cuartopara combinar los dos
ltimos. Para representar los resultados para distintas condiciones
iniciales a senecesita hacer una comprobacin primero para saber si
se desea una nicacondicin inicial o ms. Posteriormente se
representa empleando para ellomirungekutta y plot. De igual modo se
acta para las imgenes de las condicionesiniciales. Finalmente, en
el ltimo bloque se procede a combinar los resultados. Enste se
realizan tres comprobaciones para representar correctamente. La
funcin mirungekutta permite calcular las soluciones a la
ecuacindiferencial. El detalle ms interesante est dentro del bucle
donde se emplea elsiguiente cdigo:
k(i,1)=h*feval(f,tj+h*M(i-1,1),yj+M(i-1,:)*k). Una vez mostrado el
cdigo se mostrarn unos resultados obtenidos para lafuncin f.m Jaime
Martnez Verd Pgina 2
- 3. Pr 2 - Derivacin numrica de EDOs:
Runge-Kuttaedosrungekutta.m%Ejemplo de datos%M=[0 0 0 0 0;1/2 1/2 0
0 0;1/2 0 1/2 0 0;1 0 0 1 0;0 1/6 2/6 2/6
1/6];%a=0;%ya=0;%b=10;%m=10;%k=20;%l=1;%u=20;%v=40;M=input(Introduzca
la matriz del mtodo:);a=input(Introduzca el punto
inicial:);b=input(Introduzca el punto final:);ya=input(Introduzca
la primera condicin inicial:);m=input(Introduzca el nmero de
pasos:);k=input(Introduzca el nmero de condiciones iniciales
anti-imgenes:);l=input(Introduzca el paso entre cada condicin
inicial:);u=input(Introduzca el nmero de diferentes
imgenes:);v=input(Introduzca el paso entre cada
imagen:);h=(b-a)/m;figure;if k==0
[TVEC1,YVEC1]=mirungekutta(f,M,a,ya,h,m); plot(YVEC1,TVEC1);
title(Solucin) xlabel(t);ylabel(y(t));else TVEC1=zeros(k,m+1);
YVEC1=zeros(k,m+1); for i=0:1:k
[TVEC1(i+1,:),YVEC1(i+1,:)]=mirungekutta(f,M,a+i*l,ya,h,m); end for
i=0:1:k plot(YVEC1(i+1,:),TVEC1(i+1,:)); hold on; end title(Solucin
para distintos y(a)) xlabel(t);ylabel(y(t));endfigure;if u==0
[TVEC2,YVEC2]=mirungekutta(f,M,a,ya,h,m); plot(YVEC2,TVEC2);
title(Solucin) xlabel(t);ylabel(y(t));else TVEC2=zeros(u,m+1);
YVEC2=zeros(u,m+1); for i=0:1:u
[TVEC2(i+1,:),YVEC2(i+1,:)]=mirungekutta(f,M,a,ya+i*v,h,m); end for
i=0:1:u plot(YVEC2(i+1,:),TVEC2(i+1,:)); hold on; end title(Solucin
para distintos a) xlabel(t);ylabel(y(t));end Jaime Martnez Verd
Pgina 3
- 4. Pr 2 - Derivacin numrica de EDOs: Runge-Kuttaif
(k==0&&u~=0) figure; plot(YVEC1,TVEC1); for i=0:1:u
plot(YVEC2(i+1,:),TVEC2(i+1,:)); hold on; end title(Solucin para
distintos a); xlabel(t);ylabel(y(t)); returnelseif
(k~=0&&u==0) figure; for i=0:1:k
plot(YVEC1(i+1,:),TVEC1(i+1,:)); hold on; end plot(YVEC2,TVEC2);
title(Solucin para distintos y(a)) xlabel(t);ylabel(y(t));else
figure; for i=0:1:k plot(YVEC1(i+1,:),TVEC1(i+1,:)); hold on; end
for i=0:1:u plot(YVEC2(i+1,:),TVEC2(i+1,:)); hold on; end
title(Solucin para distintos a e y(a))
xlabel(t);ylabel(y(t));endreturnf.mfunction z = f(t,y)z=t^2-y;end
Jaime Martnez Verd Pgina 4
- 5. Pr 2 - Derivacin numrica de EDOs: Runge-Kuttafunction [T,Y]
=
mirungekutta(f,M,a,ya,h,m)%---------------------------------------------------------------------%RK4
Runge-Kutta solution for y = f(t,y) with y(a) = ya.% Sample call%
[T,Y] = rk4(f,a,b,ya,m)% Inputs% f name of the function% a left
endpoint of [a,b]% b right endpoint of [a,b]% ya initial value% m
number of steps% Return% T solution: vector of abscissas% Y
solution: vector of ordinates%% NUMERICAL METHODS: MATLAB Programs,
(c) John H. Mathews 1995% To accompany the text:% NUMERICAL METHODS
for Mathematics, Science and Engineering, 2nd Ed,1992% Prentice
Hall, Englewood Cliffs, New Jersey, 07632, U.S.A.% Prentice Hall,
Inc.; USA, Canada, Mexico ISBN 0-13-624990-6% Prentice Hall,
International Editions: ISBN 0-13-625047-5% This free software is
compliments of the author.% E-mail address:
in%"mathews@fullerton.edu"%% Algorithm 9.4 (Runge-Kutta Method of
Order 4).% Section 9.5, Runge-Kutta Methods, Page
460%---------------------------------------------------------------------b
= h*m + a;T = zeros(1,m+1);Y = zeros(1,m+1);[fil,col]=size(M);T(1)
= a;Y(1) = ya;k=zeros(fil,1)for j=1:m tj = T(j) yj = Y(j) i=3 while
i