Pagina 1 di 1

Metodo di Runge - Kutta

MessaggioInviato: 19 mar 2012, 19:25
da Antofilo
Salve a tutti.
Avrei bisogno di un aiuto circa l'analisi numerica delle equazioni differenziali, in particolare sul metodo RK.
Credo di aver capito, in teoria, cos'è, ma il credere di non saperlo applicare mi suona come campanello di allarme! Potete aiutarmi, per esempio, nella risoluzione della seguente equazione differenziale con relativa condizione iniziale?

y' = -y + x
y(0) = 1, nell'intervallo [0,1]

Scelgo io il valore di h, pari a h = 0.1.
Se non ho capito male, dovrei applicar la seguente formula:

y_i_+_1 = y_i + h/2 f(x_i,y_i) + h/2 f(x_i_+_1, y_i  + hf(x_i, y_i))
Posso dividere il mio calcolo in 3 step;

K_0 = hf(x_i,y_i)
K_1 = hf(x_i_+_1, y_i + K_0)
così da poter scrivere
y_i_+_1 = y_i + 1/2 (K_0 + K_1)

E' esatto il mio ragionamento?
PS. anche se è esatto (ne dubito) potete consigliarmi se esiste, un altro modo di ragionare per risolvere questi problemi?
Grazie

Re: Metodo di Runge - Kutta

MessaggioInviato: 19 mar 2012, 23:22
da DirtyDeeds
Mi sembra corretto. In ogni caso, poiché quell'equazione differenziale è risolvibile anche in modo analitico, hai un modo semplice per controllare se la soluzione numerica viene corretta (tenedo conto dell'approssimazione della soluzione numerica) ;-)

PS: la derivata scrivila come

Codice: Seleziona tutto
y^\prime = -y + x


y^\prime = -y + x

Re: Metodo di Runge - Kutta

MessaggioInviato: 20 mar 2012, 0:50
da Antofilo
Ti ringrazio per la risposta. Proverò al più presto a controllare come mi hai consigliato Tu, ma non so se riesco stanotte. Comunque, potresti spiegarmi un po' il metodo di Runge Kutta?

Grazie

Re: Metodo di Runge - Kutta

MessaggioInviato: 20 mar 2012, 13:04
da dimaios
Non capisco dove hai preso le formule che hai riportato.
In generale l'algoritmo di Runge-Kutta del secondo ordine denominato anche midpoint method prevede i seguenti passi.

k_{1} = h \cdot f(x_{n},y_{n})
k_{2} = h \cdot f(x_{n} + \frac{1}{2} \cdot h ,y_{n} + \frac{1}{2} \cdot k_{1})
y_{n+1} = y_{n} + k_{2} + O(h^{3})

In queste dispense http://www.dpa.unina.it/demarco/docs/app_sdqv_cap_2.pdf al paragrafo 2.2 troverai un'ottima spiegazione dell'algoritmo anche dal punto di vista grafico.

L'algoritmo Runge Kutta più utilizzato è comunque l' RK4 che consta di un numero superiore di passi. La spiegazione la trovi nel medesimo documento al paragrafo 2.3.

Antofilo ha scritto:.....comunque, potresti spiegarmi un po' il metodo di Runge Kutta?


La spiegazione più convincente che ho trovato è riportata nel seguente libro :

Schaum's outline of theory and problems of numerical analysis
Di Francis J. Scheid

A pagina 201 inizia una discussione interessante che illustra come risolvere l'equazione differenziale facendo uso dello sviluppo in serie di Taylor.

Ci si rende subito conto che il calcolo delle derivate superiori dello sviluppo in serie non è agevole e computazionalmente sconveniente per cui si cerca una soluzione che approssimi con lo stesso ordine di infinitesimo dello sviluppo in serie ma non necessiti il calcolo delle derivate superiori.
Il metodo di Runge Kutta provvede uno schema algoritmico che utilizza unicamente la funzione f(x,y) evitando il calcolo esplicito delle derivate.

ATTENZIONE : Il fatto che l'ordine di infinitesimo di RK4 sia il medesimo della corrispondente serie di Taylor opportunamente troncata non significa che diano lo stesso risultato ma che l'errore dovuto all'approssimazione converge a zero con determinate caratteristiche quando il passo di integrazione tende a zero.

Nel medesimo libro continuando la lettura viene fatto un esempio che illustra praticamente quanto ti ho espresso nella nota.
Il testo costa meno di 20 euro e contiene una serie di esercizi molto interessanti.

Re: Metodo di Runge - Kutta

MessaggioInviato: 20 mar 2012, 14:42
da DirtyDeeds
dimaios ha scritto:Non capisco dove hai preso le formule che hai riportato.


Abramowitz and Stegun, 25.5.6, p. 896.

Re: Metodo di Runge - Kutta

MessaggioInviato: 20 mar 2012, 16:07
da dimaios
Ok Foto UtenteDirtyDeeds. Ho riguardato il link Abramowitz and Stegun, 25.5.6, p. 896.

Secondo me c'è un piccolo fraintendimento nella nomenclatura.
Sotto il nome "Metodi Runge-Kutta" rientrano una lista abbastanza folta di algoritmi.

http://en.wikipedia.org/wiki/List_of_Runge%E2%80%93Kutta_methods

In realtà la formula riportata è quella relativa al metodo di Eulero-Heun.
http://calculuslab.deltacollege.edu/ODE/7-C-2/7-C-2-h.html

E come inquadramento negli algoritmi predictor-corrector.
http://calculuslab.deltacollege.edu/ODE/7-C-3/7-C-3-h.html

Era solo una considerazione di dettaglio non di sostanza sulla validità della formula.