Metodi di Runge-Kutta

Da Wikipedia, l'enciclopedia libera.

In analisi numerica i metodi di Runge-Kutta [ˌʁʊŋəˈkʊta] sono un'importante famiglia di metodi iterativi impliciti ed espliciti per l'approssimazione delle soluzioni delle equazioni differenziali ordinarie. Queste tecniche furono sviluppate intorno al 1900 dai matematici tedeschi Carl Runge e Martin Wilhelm Kutta.

Introduzione[modifica | modifica wikitesto]

I metodi di Runge-Kutta (spesso abbreviati RK nei testi) sono una famiglia di metodi iterativi, discreti e ad un passo (one-step in inglese) utilizzati nell'approssimazione numerica di soluzioni di equazioni differenziali ordinarie (ODE) e più specificatamente per problemi ai valori iniziali (IVP).

Questi metodi fanno parte della famiglia più generale di metodi discreti per le equazioni differenziali ordinarie, ovvero di quella classe di metodi numerici che fornisce un'approssimazione della soluzione di un'equazione differenziale (o più precisamente di un problema di Cauchy) in un insieme discreto di punti.

Formalmente si vuole trovare un'approssimazione della funzione y(t):\mathbb{R}\to \mathbb{R}^dche verifichi il generico problema di Cauchy

\begin{cases} &y'(t)=f(t,y(t)) \\ &y(t_0)=y_0 \end{cases}

in un insieme discreto di punti in cui si considera il problema (solitamente nell'intervallo \left[ t_0, t_f \right]). Per fare ciò si considera una suddivisione dell'intervallo \Delta (solitamente) uniforme, cioè un insieme di punti \{ t_i \mid i=0\dots n \} dove t_i = t_0+ih e h=\frac{t_f - t_0}{n}.

Il metodo numerico fornirà allora l'approssimazione dei valori y(t_j). È chiaro che per ottenere una ricostruzione abbastanza fedele della funzione il numero n dovrà essere sufficientemente elevato.

Formulazione[modifica | modifica wikitesto]

L'idea che sta alla base dei metodi di Runge-Kutta è la trasposizione del problema dalla forma differenziale alla forma integrale per la quale esistono metodi numerici (formule di quadratura) che permettono l'approssimazione della soluzione. In generale un metodo di Runge-Kutta sarà caratterizzato da tre parametri: un vettore b = (b_i)_{i=0,\dots,s}, una matrice a=(a_{i,j})_{i,j=0,\dots,s} e un vettore \theta = (\theta_i)_{i=0,\dots,s}. L'approssimazione sarà allora data dal sistema:

\begin{cases}

&y_{n+1} = y_n + h\sum_{i=1}^s b_i f(t_n + \theta_i h, Y_i) \\
&Y_i = y_n + h \sum_{j=1}^s a_{ij} f(t_n+ \theta_j h, Y_j) \quad i=1,\dots,s

\end{cases}

dove i valori y_i approssimano il valore esatto y(t_i).

Costruzione tecnica[modifica | modifica wikitesto]

Consideriamo il generico problema di Cauchy:

\begin{cases}

&y'(t)=f(t,y(t))\\
&y(t_0)=y_0

\end{cases}

Si può considerare una sua riformulazione in forma integrale:

y(t)=y_0 + \int_{t_0}^t y'(s)\, ds = y_0 + \int_{t_0}^t f(s,y(s))\,ds

dove l'ultima sostituzione è legittima in quanto la funzione è soluzione dell'equazione differenziale.

Da questa riformulazione segue in particolare che, per una suddivisione uniforme \Delta = \{t_i\} = \{t_0+ih\}_{\{i=0,\dots,n\}}, il valore della soluzione nel punto t_1 sarà dato da:

y(t_1)=y_0 + \int_{t_0}^{t_0+h} f(s,y(s))\,ds

Da questo risultato, attraverso la sostituzione s=t_0 + \theta h possiamo normalizzare l'intervallo di integrazione e ottenere

y(t_1)=y_0 + h\int_0^1 f(t_0+\theta h,y(t_0 + \theta h))\,d\theta

Da questa scrittura appare evidente che con opportune sostituzioni si può esprimere il valore della funzione in ogni punto intermedio tra t_0 e t_1.

Ora si utilizza un'approssimazione per via numerica dell'integrale attraverso delle formule di quadratura sui nodi \theta_i e pesi b_i (che dipendono dalla scelta della formula di quadratura).

Si ottiene così l'approssimazione del valore y_1 data da:

y_1 = y_0 + h \sum_{i=0}^\nu b_i f(t_0+\theta_i h, Y_i)

dove i valori Y_i sono approssimazioni di y(t_0+\theta_i h), che sono ignote a priori. Riapplicando il ragionamento precedente possiamo scrivere che

y(t_0+\theta_i h) =  h\int_0^{\theta_i} f(t_0+v h,y(t_0 + v h))\,dv

Questi valori possono essere approssimati anch'essi utilizzando una formula di quadratura (per semplicità consideriamo formule con i medesimi nodi di quadratura di quelle usate in precedenza) con pesi a_{ij}; otteremo così che

Y_i=y_0 + h\sum_{j=1}^\nu a_{ij}f(t_0+\theta_j h , Y_j)

Iterando la costruzione appena descritta si ottengono tutte le approssimazioni nei punti t_i e come conseguenza la formulazione generale per i metodi di Runge-Kutta data all'inizio di questa sezione.

Voci correlate[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]


matematica Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica