DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS

60
Pr 2 - Derivación numérica de EDO’s: Runge-Kutta Jaime Martínez Verdú Página 1 RUNGE KUTTA.

description

 

Transcript of DERIVACIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES ORDINARIAS

  • 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%"[email protected]"%% 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