Metodi di soluzione numerica per equazioni differenziali ordinarie

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

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

Metodi di Eulero

Metodo di Eulero esplicito (o "in avanti")

Lo stesso argomento in dettaglio: Metodo di Eulero.

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

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

con la condizione iniziale:

y ( x = x 0 ) = y 0 {\displaystyle y(x=x_{0})=y_{0}}

definita nel dominio x [ a , b ] {\displaystyle x\in [a,b]} è necessario prima di tutto discretizzare il dominio con un passo h {\displaystyle h} , ottenendo i punti discreti { x 0 , x 1 , , x N } {\displaystyle \lbrace x_{0},x_{1},\dots ,x_{N}\rbrace } , dove x n = x 0 + n h {\displaystyle x_{n}=x_{0}+nh} , con x 0 = a {\displaystyle x_{0}=a} e x N = b {\displaystyle 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 ( x 1 x 0 ) {\displaystyle y_{1}-y_{0}=f_{x_{0},y_{0}}\cdot (x_{1}-x_{0})}
y 2 y 1 = f x 1 , y 1 ( x 2 x 1 ) {\displaystyle y_{2}-y_{1}=f_{x_{1},y_{1}}\cdot (x_{2}-x_{1})}
{\displaystyle \dots }
Y y n 1 = f x n 1 , y n 1 ( x n x n 1 ) {\displaystyle 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 ( x x 0 ) T r + f x 1 , y 1 ( x x 1 ) T r + + f x n 1 , y n 1 ( x x n 1 ) T r {\displaystyle 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 ) T r = { 0  se  x x i 1 x x i 1  se  x i 1 x x i x i x i 1  se  x i x {\displaystyle (x-x_{i-1})^{Tr}={\begin{cases}0&{\text{ se }}x\leq x_{i-1}\\x-x_{i-1}&{\text{ se }}x_{i-1}\leq x\leq x_{i}\\x_{i}-x_{i-1}&{\text{ se }}x_{i}\leq x\end{cases}}}

per i = 1 , , n {\displaystyle i=1,\ldots ,n} .

Metodo di Eulero implicito (o all'indietro)

Lo stesso argomento in dettaglio: Metodo di Eulero all'indietro.

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

d y d x y n y n 1 h {\displaystyle {\frac {dy}{dx}}\approx {\frac {y_{n}-y_{n-1}}{h}}}

che applicato all'equazione differenziale diventa:

y n y n 1 h = f ( x n , y n ) {\displaystyle {\frac {y_{n}-y_{n-1}}{h}}=f(x_{n},y_{n})}

equivalente a:

y n + 1 y n h = f ( x n + 1 , y n + 1 ) {\displaystyle {\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 + h f ( x n + 1 , y n + 1 ) {\displaystyle 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-Nicolson)

Lo stesso argomento in dettaglio: Metodo di Crank-Nicolson.

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

d 2 x d t 2 + x = 0 {\displaystyle {\frac {d^{2}x}{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 + h 2 ( f n + f n + 1 ) = y n + h 2 ( y n + y n + 1 ) {\displaystyle 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

Lo stesso argomento in dettaglio: Metodo di Heun.

Dapprima, calcolare:

y n + 1 ( 0 ) = y n + h f n {\displaystyle y_{n+1}^{(0)}=y_{n}+hf_{n}}

Poi, calcolare:

y n + 1 = y n + h 2 ( f ( x n , y n ) + f ( x n + h , y n + 1 ( 0 ) ) ) {\displaystyle y_{n+1}=y_{n}+{\frac {h}{2}}(f(x_{n},y_{n})+f(x_{n}+h,y_{n+1}^{(0)}))}

Metodi multipasso

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

Metodo di Adams-Bashforth

Metodo esplicito:

y n + 1 = y n + h 12 ( 23 f n 16 f n 1 + 5 f n 2 ) {\displaystyle y_{n+1}=y_{n}+{\frac {h}{12}}(23f_{n}-16f_{n-1}+5f_{n-2})}

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

Metodo di Adams-Moulton

Metodo implicito:

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

Formule di differenziazione all'indietro

Lo stesso argomento in dettaglio: Formula di differenziazione all'indietro.

Le formule di differenziazione all'indietro (BDF) sono una famiglia di metodi impliciti usati specialmente per la soluzione di equazioni differenziali rigide.

Metodi predittore-correttore

Un metodo predittore-correttore si forma di un metodo esplicito (il predittore) e un metodo implicito (il correttore). Dapprima il metodo esplicito è utilizzato per calcolare un'approssimazione di y n + 1 {\displaystyle y_{n+1}} , poi questa approssimazione di y n + 1 {\displaystyle y_{n+1}} è utilizzata nel metodo implicito per calcolare una migliore approssimazione di y n + 1 {\displaystyle y_{n+1}} . Il vantaggio di questo tipo di metodo è di evitare di risolvere un'equazione implicita per y n + 1 {\displaystyle 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

Lo stesso argomento in dettaglio: 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

Si consideri:

y = 5 y {\displaystyle y'=5y}

Si costruisce formalmente le serie:

k = 0 + k a k x k 1 = 5 k = 0 + a k x k {\displaystyle \sum _{k=0}^{+\infty }ka_{k}x^{k-1}=5\cdot \sum _{k=0}^{+\infty }a_{k}x^{k}}

valutando i primi termini:

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

uguagliando alle rispettive potenze della x {\displaystyle x} :

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

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

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

Bibliografia

  • (EN) D. M. Young e R. T. Gregory A survey of numerical mathematics (Dover, New York, 1988)
  • (EN) L. Fox, The numerical solution of two-point boundary problems in ordinary differential equations. (Oxford University Press, 1957).
  • (EN) W. E. Milne, Numerical solution of differential equations. (John Wile & sons, Nueva York, 1953).
  • (EN) M. Abramowitz e I. Stegun Handbook of Mathematical Functions (Dover, Nueva York, 1964) (sezione 25.5).
  • (EN) E. T. Whittaker e G. Robinson The Calculus Of Observations: A Treatise On Numerical Mahematics (Blackie and Sons, Londra, 1924) (metodo di Adams-Bashforth, capitolo 14)
  • (EN) F. Bashforth e J. C. Adams An attempt to test the theories of capillary action by comparing the theoretical and measured forms of drops of fluid. With an explanation of the method of integration employed in constucting the tables which give the theoretical forms of such drops (Cambridge University Press, 1883) (storico; metodo originale di Adams e Bashforth)

Voci correlate

Collegamenti esterni

  • Università degli Studi di Brescia Metodi di Adams et di Crank-Nicolson; Metodi Predittore Correttore
  • (EN) Frank Vesely Introduction to Computational Physics sez. II-4
  • (EN) Richard Fitzpatrick Computational Physics: An introductory course (Integration of ODEs)
  • (EN) Stuart Daziel Numerical Methods Lecture Notes sez. 6-7
  • (FR) J. Rappaz Cours d'analyse numérique pour ingénieurs
  • (EN) J. C. Kirkpatrick (1976) The Adams formulas for numerical integration of differential equations from 1st to 20th order Nasa Technical Report NASA-TM-X-58182
  • (EN) E. Fehlberg (1968) Classical fifth-, sixth-, seventh-, and eighth-order Runge-Kutta formulas with stepsize control
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica