Mètodes de Runge-Kutta

En càlcul numèric, els mètodes de Runge–Kutta són una família de mètodes iteratius implícits i explícits per la integració d'equacions diferencials ordinàries.[1] Aquests mètodes van ser desenvolupats al voltant del 1900 pels matemàtics alemanys Carle David Tolmé Runge i Martin Wilhelm Kutta.

Descripció

Els mètodes de Runge-Kutta (RK) són un conjunt de tècniques numèriques per a l'aproximació de solucions d'equacions diferencials ordinàries, i concretament, permeten aproximar una solució al problema de valor inicial.

Sigui

y ( t ) = f ( t , y ( t ) ) {\displaystyle y'(t)=f(t,y(t))\,}

una equació diferencial ordinària, amb f : Ω R × R n R n {\displaystyle f:\Omega \subset \mathbb {R} \times \mathbb {R} ^{n}\to \mathbb {R} ^{n}} on Ω {\displaystyle \Omega \,} és un conjunt obert, juntament amb la condició que el valor inicial de ƒ sigui

( t 0 , y 0 ) Ω . {\displaystyle (t_{0},y_{0})\in \Omega .}

Llavors el mètode RK (d'ordre s) té la següent expressió, en la seva forma més general:

y n + 1 = y n + h i = 1 s b i k i {\displaystyle y_{n+1}=y_{n}+h\,\sum _{i=1}^{s}b_{i}k_{i}} ,

on h és el pas per la iteració o, cosa que és el mateix, l'increment Δ t n {\displaystyle \Delta t_{n}} entre els successius punts t n {\displaystyle t_{n}} i t n + 1 {\displaystyle t_{n+1}} . Els coeficients k i {\displaystyle k_{i}} són termes d'aproximació intermedis, avaluats en ƒ de manera local

k i = f ( t n + h c i , y n + h j = 1 s a i j k j ) i = 1 , . . . , s . {\displaystyle k_{i}=f\left(t_{n}+h\,c_{i}\,,y_{n}+h\,\sum _{j=1}^{s}a_{ij}k_{j}\right)\quad i=1,...,s.}

amb a i j , b i , c i {\displaystyle a_{ij},b_{i},c_{i}} coeficients propis de l'esquema numèric elegit, depenent de la regla de quadratura utilitzada. Els esquemes Runge-Kutta poden ser explícits o implícits depenent de les constants a i j {\displaystyle a_{ij}} de l'esquema. Si aquesta matriu és triangular inferior amb tots els elements de la diagonal principal iguals a zero; és a dir, a i j = 0 {\displaystyle a_{ij}=0} per a j = i , . . . , s {\displaystyle j=i,...,s} , els esquemes són explícits.

El mètode de Runge-Kutta clàssic

Els quatre pendents emprats al mètode RK4

El mètode més conegut de la família de mètodes de Runge-Kutta és l'anomenat habitualment "RK4" o mètode clàssic de Runge-Kutta.

Com en qualsevol mètode de solució d'equacions diferencials ordinàries l'objectiu és trobar una funció y ( t ) {\displaystyle y(t)} que compleixi:

d y d t = f ( t , y ) , y ( t 0 ) = y 0 . {\displaystyle {\frac {dy}{dt}}=f(t,y),\quad y(t_{0})=y_{0}.}

I igual en altres mètodes numèrics, anem trobant estimacions pel valor de y ( t ) {\displaystyle y(t)} per successius valors de la variable independent t {\displaystyle t} , en passos de mida h {\displaystyle h} . O sigui, l'objectiu en cada pas és, donat un valor de y ( t i ) {\displaystyle y(t_{i})} , trobar una bona aproximació del valor de y ( t i + 1 ) {\displaystyle y(t_{i+1})} on t i + 1 = t i + h {\displaystyle t_{i+1}=t_{i}+h} .

La derivada d y d t {\displaystyle {\frac {dy}{dt}}} (que és el pendent de la gràfica de y ( t ) {\displaystyle y(t)} ) és coneguda a t i {\displaystyle t_{i}} , perquè sabem el valor de y {\displaystyle y} i t {\displaystyle t} en aquest punt i podem substituir a d y d t = f ( t , y ) {\displaystyle {\frac {dy}{dt}}=f(t,y)} , i si el pendent fos constant entre t i {\displaystyle t_{i}} i t i + 1 {\displaystyle t_{i+1}} podríem calcular fàcilment y ( t i + 1 ) {\displaystyle y(t_{i+1})} . Ara bé, en general, el pendent no serà constant, i tot i que suposar que és constant podria ser una aproximació útil (seria el mètode d'Euler), millorar l'aproximació tenint en compte la variació del pendent milloraria el resultat.

Per això, el mètode RK4 fa servir successivament quatre aproximacions de la derivada entre t i {\displaystyle t_{i}} i t i + 1 {\displaystyle t_{i+1}} (vegeu el gràfic):

  • k 1 {\displaystyle k_{1}} és el pendent al principi de l'interval (a t i {\displaystyle t_{i}} ), com faria el mètode d'Euler.
  • Fent servir el pendent k 1 {\displaystyle k_{1}} aproximem el valor de y ( t i + h 2 ) {\displaystyle y(t_{i}+{\frac {h}{2}})} , o sigui, al centre de l'interval. k 2 {\displaystyle k_{2}} és el pendent en aquest punt.
  • Fent servir el pendent k 2 {\displaystyle k_{2}} tornem a aproximar el valor de y ( t i + h 2 ) {\displaystyle y(t_{i}+{\frac {h}{2}})} , que en general ens donarà una aproximació diferent de l'anterior. El pendent en aquest punt és k 3 {\displaystyle k_{3}} .
  • Amb el pendent k 3 {\displaystyle k_{3}} aproximem el valor de la funció a y ( t i + h ) {\displaystyle y(t_{i}+h)} , o sigui, al final de l'interval. El pendent en aquest punt és k 4 {\displaystyle k_{4}} .

Amb tot això tenim una aproximació a l'inici de l'interval, dues al centre i una al final. La variació del valor de y ( t ) {\displaystyle y(t)} entre t i {\displaystyle t_{i}} i t i + 1 {\displaystyle t_{i+1}} serà la integral del pendent en aquest interval, que en aquest mètode es calcula numèricament amb la regla de Simpson, que pondera els valors al centre i als extrems de l'interval donant un pes de 4 6 {\displaystyle {\frac {4}{6}}} al centre i 1 6 {\displaystyle {\frac {1}{6}}} a cada extrem.[2]

y i + 1 = y i + 1 6 h ( k 1 + 2 k 2 + 2 k 3 + k 4 ) , t i + 1 = t i + h {\displaystyle {\begin{aligned}y_{i+1}&=y_{i}+{\frac {1}{6}}h\cdot \left(k_{1}+2k_{2}+2k_{3}+k_{4}\right),\\t_{i+1}&=t_{i}+h\\\end{aligned}}}

on[3]

k 1 =   f ( t i , y i ) , k 2 =   f ( t i + h 2 , y i + h k 1 2 ) , k 3 =   f ( t i + h 2 , y i + h k 2 2 ) , k 4 =   f ( t i + h , y i + h k 3 ) . {\displaystyle {\begin{aligned}k_{1}&=\ f(t_{i},y_{i}),\\k_{2}&=\ f\left(t_{i}+{\frac {h}{2}},y_{i}+h\cdot {\frac {k_{1}}{2}}\right),\\k_{3}&=\ f\left(t_{i}+{\frac {h}{2}},y_{i}+h\cdot {\frac {k_{2}}{2}}\right),\\k_{4}&=\ f\left(t_{i}+h,y_{i}+h\cdot k_{3}\right).\end{aligned}}}

i y i = y ( t i ) {\displaystyle y_{i}=y(t_{i})}

Vegeu també

  • Mètode d'Euler, un altre mètode numèric per resoldre equacions i diferencials ordinàries, que és més senzill i menys exacte, però té punts en comú amb els mètodes de Runge-Kutta.

Referències

  1. Devries, Paul L.; Hasbun, Javier E. A first course in computational physics. Segona edició. Jones and Bartlett Publishers, 2011, p. 215. 
  2. E. Boyce, William; C. DiPrima, Richard. Elementary Differential Equation and Boundary Value Problem (en anglès). 10a. JohnWiley & Sons, Inc, 2012, p. 468. ISBN 978-0-470-45831-0. 
  3. Press et al. 2007, p. 908; Süli & Mayers 2003, p. 328

Bibliografia

  • Runge, Carl David Tolmé «Über die numerische Auflösung von Differentialgleichungen». Mathematische Annalen, Springer, 46, 2, 1895, pàg. 167-178. DOI: 10.1007/BF01446807.
  • Kutta, Martin «Beitrag zur näherungweisen Integration totaler Differentialgleichungen». Zeitschrift Für Mathematik Und Physik, 1901, pàg. 499.
  • Ascher, Uri M.; Petzold, Linda Ruth. Computer methods for ordinary differential equations and differential-algebraic equations. Primera edició. Philadelphia (USA): SIAM, 1998. ISBN 0898714125. 
  • Burden, Richard L.; Faires, J. Douglas. Análisis Numérico. Setena edició. Cengage Learning Latin America, 2001. ISBN 9706861343. 
  • Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. «Section 17.1 Runge-Kutta Method». A: Cambridge University Press. Numerical Recipes: The Art of Scientific Computing. 3rd, 2007. ISBN 978-0-521-88068-8. . Vegeu també: Section 17.2. Adaptive Stepsize Control for Runge-Kutta Arxivat 2011-08-11 a Wayback Machine..
  • Süli, Endre; Mayers, David. Cambridge University Press. An Introduction to Numerical Analysis, 2003. ISBN 0-521-00794-1. .