Metodi di soluzione numerica per equazioni differenziali ordinarie

Da Wikipedia, l'enciclopedia libera.

I metodi di soluzione numerica per equazioni differenziali ordinarie permettono di risolvere in maniera approssimata equazioni differenziali ordinarie altrimenti non trattabili.

Metodi a passo singolo[modifica | modifica sorgente]

Un metodo numerico per la risoluzione di una equazione differenziale si definisce ad un passo se per ogni n>0, y_{n+1} dipende solamente da y_{n}. Altrimenti si parla di metodo a più passi o multistep.

Metodi di Eulero[modifica | modifica sorgente]

Exquisite-kfind.png Per approfondire, vedi Metodo di Eulero.

Metodo di Eulero esplicito (o "in avanti")[modifica | modifica sorgente]

Si tratta di un metodo esplicito per risolvere un'equazione differenziale. Data l'equazione nella forma:

y' = \frac{dy}{dx}=f(x, y)

con la condizione iniziale:

 y(x=x_0)= y_{0}

definita nel dominio x\in [a, b] è necessario prima di tutto discretizzare il dominio con un passo h, ottenendo i punti discreti \lbrace x_0, x_1, \dots, x_N \rbrace, dove x_n=x_0+nh , con x_0=a e x_N=b . A questo punto il procedimento è quello di sostituire l'equazione della tangente alla funzione:

y_{1} - y_{0} = f_{x_0,y_0} \cdot (x_{1} - x_{0})
y_{2} - y_{1} = f_{x_1,y_1} \cdot (x_{2} - x_{1})
\dots
Y - y_{n-1} = f_{x_{n-1},y_{n-1}} \cdot (x_{n} - x_{n-1})

In questo modo la soluzione diviene una somma di funzioni lineari "troncate":

Y = y_{0} + f_{x_0,y_0} \cdot (x - x_{0})^{Tr} + f_{x_1,y_1} \cdot (x - x_{1})^{Tr} + \cdots + f_{x_{n-1},y_{n-1}} \cdot (x - x_{n-1})^{Tr}

in cui:

(x-x_{i-1})^{Tr}=\begin{cases} 0 & \text{ se } x\le x_{i-1}\\
x-x_{i-1} & \text{ se } x_{i-1}\le x\le x_i\\
x_i-x_{i-1} & \text{ se } x_i\le x\end{cases}

per i=1, \ldots ,n.

Metodo di Eulero implicito (o all'indietro)[modifica | modifica sorgente]

Si tratta di un metodo implicito per risolvere un'equazione differenziale, ricavato dall'approssimazione della derivata con le differenze finite all'indietro:

\frac{dy}{dx}\approx\frac{y_n-y_{n-1}}{h}

che applicato all'equazione differenziale diventa:

\frac{y_n-y_{n-1}}{h}=f(x_n, y_n)

equivalente a:

\frac{y_{n+1}-y_n}{h}=f(x_{n+1}, y_{n+1})

da cui otteniamo la formula risolutiva generica:

y_{n+1}=y_{n}+hf( x_{n+1}, y_{n+1})

Per risolvere l'equazione ci si riconduce pertanto ad un problema di ricerca di zeri di una funzione. Pur essendo anch'esso un metodo del prim'ordine, è in generale più stabile dell'analogo metodo esplicito. I metodi di Eulero sono usati quasi esclusivamente in analisi numerica, poiché permettono di risolvere semplicemente equazioni differenziali mediante l'utilizzo del computer.

Metodo dei trapezi (o metodo di Crank-Nicholson)[modifica | modifica sorgente]

Non sempre i metodi precedenti sono utilizzabili nell'approssimazione numerica di equazioni differenziali. Ad esempio, nel caso del pendolo lineare:

\frac{d^2x}{dt^2} + x = 0

i due metodi di Eulero porteranno, durante il processo di numerizzazione, a trasformare il centro in un fuoco. Esistono, dunque, altri metodi, uno di questi è il metodo dei trapezi. Questo metodo deriva comunque dai metodi di Eulero: è sufficiente sommare membro a membro la formula del metodo di Eulero esplicito e quella di Eulero implicito per ricavarne il nuovo metodo, come segue:

y_{n+1} = y_n + \frac{h}{2}(f_n + f_{n+1})=y_n + \frac{h}{2}(y' _n + y'_{n+1})

Il nome del metodo deriva dal fatto che la formula risultante ha la stessa forma utilizzata per approssimare l'integrale definito di una funzione come l'area di un trapezio.

Metodo di Heun[modifica | modifica sorgente]

Dapprima, calcolare:

 y_{n+1}^{(0)}=y_n+h f_n

Poi, calcolare:

 y_{n+1}=y_n+\frac{h}{2}(f(x_n,y_n)+f(x_n+h,y_{n+1}^{(0)}))

Metodi Multistep[modifica | modifica sorgente]

Questi metodi utilizzano non solamente f_n e f_{n+1} per calcolare y_{n+1} ma anche i valori f_{n-k}. Con tutti questi metodi, è necessario utilizzare da primo un metodo a singolo passo (come il metodo di Eulero) per calcolare i primi valori dei f_{n-k}.

Metodo di Adams-Bashforth[modifica | modifica sorgente]

Metodo esplicito:

y_{n+1}=y_n+\frac{h}{12} (23 f_n-16 f_{n-1}+5 f_{n-2})

Fu utilizzata da John Couch Adams per risolvere le equazioni differenziali della teoria della capillarità (vedi la bibliografia).

Metodo di Adams-Moulton[modifica | modifica sorgente]

Metodo implicito:

y_{n+1}=y_n+\frac{h}{12} (5 f_{n+1}+ 8 f_{n}- f_{n-1})

Metodi Predictor-Corrector[modifica | modifica sorgente]

Un metodo predittore-correttore si forma di un metodo esplicito (il predittore) e un metodo implicito (il correttore). Da primo, il metodo esplicito è utilizzato per calcolare un'approssimazione di y_{n+1}. Poi, questa approssimazione di y_{n+1} è utilizzata nel metodo implicito par calcolare una migliore approssimazione di y_{n+1}. Il vantaggio di questo tipo di metodo è di evitare di risolvere un'equazione implicita per y_{n+1}. Un esempio di metodo predittore correttore è il metodo di Adams-Bashforth (il predittore) con il metodo di Adams-Moulton (il correttore).

Metodo di approssimazione a serie di potenze[modifica | modifica sorgente]

Exquisite-kfind.png Per approfondire, vedi Serie di potenze e Convergenza.

Le Serie di potenze sono un algoritmo per costruire funzioni e quindi soluzioni di equazioni differenziali lineari. Il procedimento è quello di costruire formalmente una serie di potenze in modo che i suoi coefficienti soddisfino l'equazione differenziale, in particolare utilizzando le serie derivate, e controllare poi che la scelta dei coefficienti dia una serie convergente, quindi converga ad una funzione.

Esempio[modifica | modifica sorgente]

Si consideri:

y' = 5y

Si costruisce formalmente le serie:

\sum_{k=0}^{+\infty} k a_{k} x^{k-1} = 5 \cdot \sum_{k=0}^{+\infty} a_{k} x^{k}

valutando i primi termini:

a_{1} + 2 a_{2} \cdot x + 3 a_{3} \cdot x^{2} + ... = 5 a_{0} + 5 a_{1} \cdot x + 5 a_{2} \cdot x^{2} + ...

uguagliando alle rispettive potenze della x:

a_{1}  = 5 a_{0} che corrisponde a a_{1}  = 5 a_{0}
 2 a_{2} = 5 a_{1} che corrisponde a a_{2}  = \frac{5^2}{2} a_{0}
 3 a_{3} = 5 a_{2} che corrisponde a a_{3}  = \frac{5^3}{3!} a_{0}
\dots
 k a_{k} = 5 a_{k-1} che corrisponde alla serie:
a_{0} \sum_{k=0}^{+\infty} \frac{5^{k} \cdot x^{k}}{k!}

Questa serie è convergente in \mathbb{R} per ogni scelta di a_0 (potendosi ricondurre alla serie esponenziale con la sostituzione \xi =5x) e la somma di tale serie, che è funzione di classe C^1(\mathbb{R} ), fornisce una soluzione dell'equazione differenziale.

Naturalmente l'algoritmo vale anche per equazioni differenziali lineari di ordini superiori.

Bibliografia[modifica | modifica sorgente]

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

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