Sei sulla pagina 1di 29

5 EQUAZIONI DIFFERENZIALI ORDINARIE 96

5 Equazioni Differenziali Ordinarie


Si consideri la soluzione dell’equazione differenziale ordinaria:

dy d2 y d3 y dn y
 
F x, y, , 2 , 3 , . . . , n = 0. (5.1)
dx dx dx dx

Questa equazione è detta di ordine n perché le derivate in essa presenti sono al massimo
di ordine n; inoltre, è detta ordinaria perché in essa compaiono solo derivate ordinar-
ie o totali (non ci sono derivate parziali in quanto c’è una sola variabile indipendente,
x). Una funzione y(x) che soddisfa tale equazione deve essere differenziabile n volte ed
è detta soluzione dell’equazione. In generale ci sono molte funzioni che soddisfano la
generica equazione differenziale (5.1), ma per ottenere una soluzione unica è necessario
fornire delle informazioni addizionali riguardanti il valore di y(x) e/o delle sue derivate
per alcuni specifici valori di x. Per un’equazione di ordine n, sono normalmente sufficienti
n condizioni per ottenere una soluzione unica. Se tutte le condizioni sono assegnate per lo
stesso valore di x (x0 , per esempio), si parla di problema ai valori iniziali. Quando invece
le condizioni sono fornite per più valori di x, si parla di problema ai valori al contorno.
Una equazione differenziale ordinaria di ordine n può essere scritta come un sistema
di n equazioni del primo ordine, definendo n − 1 nuove variabili. Per esempio, si consideri
la seguente equazione del second’ordine, nota come equazione di Bessel:

dy 2 dy
x2 2
+ x + (x2 − p2 )y = 0, (5.2)
dx dx
dove p è una costante. Definendo la nuova variabile z = dy/dx, tale equazione del secondo
ordine può essere riscritta come un sistema di due equazioni del prim’ordine:
dy
− z = 0,
dx
(5.3)
dz
x2 + xz + (x2 − p2 )y = 0.
dx
Sulla base di questa considerazione si analizzerà solo la soluzione numerica di equazioni
differenziali del prim’ordine e dei sistemi di equazioni differenziali del prim’ordine.

5.1 Equazioni differenziali del primo ordine


Un’equazione del prim’ordine è del tipo
 
dy
F x, y, =0 (5.4)
dx

o, equivalentemente,
dy
= f (x, y). (5.5)
dx
5 EQUAZIONI DIFFERENZIALI ORDINARIE 97

Si deve determinare una soluzione y(x) che soddisfi questa equazione per una data con-
dizione iniziale. Escludendo la ricerca della soluzione per via analitica, si procede a
dividere in n sottointervalli, o passi, l’intervallo [a, b] in cui si sta calcolando la soluzione.
Il valore esatto della soluzione y(x) è approssimato in corrispondenza di n + 1 valori di x
ugualmente spaziati, (x0 , x1 , . . . , xn ), in modo che la dimensione h del passo è

b−a
h= (5.6)
n
con
xi = x0 + i h, i = 1, 2, . . . , n. (5.7)
La soluzione sarà data in forma discreta in corrispondenza degli n+1 valori di x. Sia y(x i )
il valore che la soluzione esatta assume nei punti xi , mentre yi indichi il valore calcolato
(approssimato) in corrispondenza degli stessi xi :

yi ' y(xi ). (5.8)

Il valore esatto della derivata dy/dx in corrispondenza dei punti base sarà approssimato
da f (xi , yi ):
fi = f (xi , yi ) ' f (xi , y (xi )) . (5.9)
Nel caso in cui i calcoli effettuati siano esatti, cioè non siano affetti da errori di arrotonda-
mento (vedi dopo), la differenza tra il valore ottenuto numericamente, yi , e il valore esatto,
y(xi ), della soluzione viene detta errore di discretizzazione o errore di troncamento:

εi = yi − y(xi ). (5.10)

L’errore di discretizzazione incontrato nell’integrare un’equazione differenziale su un uni-


co intervallo (passo) è chiamato errore di troncamento locale. Questo tipo di errore sarà
quindi indipendente dalle caratteristiche della macchina usata per effettuare i calcoli, ma
dipenderà unicamente dalla natura delle approssimazioni presenti nel metodo usato per
ottenere la soluzione numerica dell’equazione differenziale. L’errore che dipende dal tipo
di macchina usata per effettuare i calcoli è di natura diversa e si dice errore di arroton-
damento (round-off error). Questo è dovuto al fatto che i computer usano un numero
finito di cifre significative per rappresentare un numero. Quindi un numero irrazionale,
o comunque con un numero di cifre superiore a quelle che possono essere immagazzinate,
viene memorizzato con un valore approssimato, o meglio arrotondato.
I più comuni algoritmi di soluzione numerica delle equazioni differenziali del prim’or-
dine con condizione iniziale y(x0 ) si basano su uno dei due seguenti approcci:

1. uso diretto o indiretto dell’espansione di Taylor della funzione y(x);

2. uso di formule di integrazione chiuse o aperte dello stesso tipo di quelle viste a
proposito dell’integrazione numerica.
5 EQUAZIONI DIFFERENZIALI ORDINARIE 98

Si può quindi fare un’ulteriore classificazione: metodi one-step e metodi multi-step. I


primi permettono di calcolare yi+1 noti che siano l’equazione differenziale, xi e yi . I metodi
multi-step richiedono in aggiunta i valori di yj e/o fj in corrispondenza di altri valori di xj
al di fuori dell’intervallo di integrazione considerato [xi , xi+1 ]. Uno svantaggio dei metodi
multi-step è quello di richiedere numerose informazioni per inizializzare la procedura di
calcolo: di norma è data la condizione iniziale y(x0 ), mentre i valori y(x1 ), y(x2 ) non sono
noti; bisogna quindi usare altri metodi (di norma un metodo one-step) per fornire tali
valori e poter utilizzare un metodo multi-step. Un’altra difficoltà dei metodi multi-step è
che risulta complicato cambiare la dimensione del passo h una volta avviata la procedura
(come sarà più chiaro nel seguito); per le procedure one-step questo inconveniente non
esiste. Infine, i metodi multi-step richiedono una mole di calcoli inferiore rispetto ai
metodi one-step per produrre risultati di pari accuratezza.

5.1.1 Approccio basato sull’espansione di Taylor


Un metodo per approssimare la soluzione dell’equazione (5.5) si ottiene esprimendo y(x)
in serie di Taylor a partire da un punto iniziale x0 :

h2 0 h3 00
y (x0 + h) = y(x0 ) + hf (x0 , y(x0 )) + f (x0 , y(x0 )) + f (x0 , y(x0 )) + . . . , (5.11)
2! 3!
dove
0 d 00 d2
f (x, y(x)) = f (x, y(x)) , f (x, y(x)) = 2 f (x, y(x)) , . . .
dx dx
Se y(x0 ) è la condizione iniziale, f (x0 , y(x0 )) può essere calcolata direttamente dall’e-
quazione differenziale di partenza (5.5),

dy
= f (x, y).
dx
Per calcolare le derivate di ordine superiore nell’espansione in serie di Taylor, bisogna
differenziare f (x, y(x)) usando la regola di derivazione a catena (chain-rule), dato che f
è funzione sia di x che di y:
df ∂f ∂f dy
= + . (5.12)
dx ∂x ∂y dx
Esempio:
dy
= f (x, y) = x2
dx
con condizione iniziale y(x0 ) = y0 . Dall’equazione (5.12) si ha:

f 0 (x, y) = 2x, f 0 (x0 , y0 ) = 2x0 ;


f 00 (x, y) = 2, f 00 (x0 , y0 ) = 2;
f 000 (x, y) = 0, f 00 (x0 , y0 ) = 0;
f (n) (x, y) = 0, f (n) (x0 , y0 ) = 0, n > 3.
5 EQUAZIONI DIFFERENZIALI ORDINARIE 99

Sostituendo questi valori nell’espansione in serie di Taylor si ottiene:


h3
y (x0 + h) = y(x0 ) + hx20 + h2 x0 + .
3
L’integrazione analitica dopo la separazione delle variabili è:
Z y(x0 +h) Z x0 +h  3 x0 +h
2 x 2 2 h3
dy = x dx = =⇒ y (x0 + h) = y(x0 ) + hx0 + h x0 + ,
y(x0 ) x0 3 x0 3
espressione identica a quella trovata con l’espansione di Taylor. Non c’è errore di dis-
cretizzazione (o troncamento) in questo caso perché tutte le derivate di ordine superiore
al secondo si annullano.
Esempio:
dy
= f (x, y) = 2y
dx
con condizione iniziale y(x0 ) = y0 . Usando l’equazione (5.12) si ha:
f 0 (x, y) = 4y, f 0 (x0 , y0 ) = 4y0 ;
f 00 (x, y) = 8y, f 00 (x0 , y0 ) = 8y0 ;
f 000 (x, y) = 16y, f 00 (x0 , y0 ) = 16y0 ;
.. ..
. .
f (n) (x, y) = 2n+1 y, f (n) (x0 , y0 ) = 2n+1 y0 .
Sostituendo questi valori nell’espansione in serie di Taylor si ottiene:

4h2 y(x0 ) 8h3 y(x0 )


y (x0 + h) = y(x0 ) + 2hy (x0 ) + h2 x0 + + +... =
" 2! 3! #
(2h)2 (2h)3 (2h)4
= y(x0 ) 1 + 2h + + + + . . . = y(x0 )e2h ,
2! 3! 4!

in quanto il termine tra parentesi quadre esprime l’espansione in serie di Taylor di e2h
rispetto a h = 0. L’integrazione analitica è invece:
Z y(x0 +h) Z x0 +h
dy
=2 dx =⇒ y (x0 + h) = y(x0 )e2h .
y(x0 ) y x0

Ancora una volta la soluzione analitica e numerica coincidono, quindi non c’è errore di
troncamento. Tuttavia, se nell’espressione numerica la serie è interrotta al termine f (n−1) ,
i due risultati differiscono dell’errore di troncamento
(2h)n+1
ε = y(ξ) , ξ ∈ [x0 , x0 + h].
(n + 1)!

Esempio: Sia data al seguente equazione differenziale


dy
= f (x, y) = x + y,
dx
5 EQUAZIONI DIFFERENZIALI ORDINARIE 100

con condizione iniziale y(x0 ) = y0 . Usando l’equazione (5.12) si ha:


f 0 (x, y) = 1 + x + y, f 0 (x0 , y0 ) = 1 + x0 + y0 ;
f 00 (x, y) = 1 + x + y, f 00 (x0 , y0 ) = 1 + x0 + y0 ;
f 000 (x, y) = 1 + x + y, f 00 (x0 , y0 ) = 1 + x0 + y0 ;
.. ..
. .
f (n) (x, y) = 1 + x + y, f (n) (x0 , y0 ) = 1 + x0 + y0 .
Sostituendo questi valori nell’espansione in serie di Taylor si ottiene:
h (x0 + y(x0 )) h2 (1 + x0 + y(x0 )) h3 (1 + x0 + y(x0 ))
y (x0 + h) = y(x0 ) + + + +...
1! 2! 3!
Aggiungendo e sottraendo a secondo membro il termine (x0 + h + 1), si ha:
h2 h3
 
y (x0 + h) = −x0 − h − 1 + (1 + x0 + y(x0 )) 1 + h + + +... =
2! 3!
= −x0 − h − 1 + (1 + x0 + y(x0 )) eh ,
dove il termine tra parentesi quadre è pari a eh e tale soluzione è anche quella analitica.
Ancora una volta, l’errore di troncamento che si ha troncando la serie dopo il termine con
f (n−1) vale
hn+1
ε = (1 + ξ + y(ξ)) , ξ ∈ [x0 , x0 + h].
(n + 1)!

Dagli esempi appena visti si deduce che l’espansione in serie di Taylor nel punto x0
consente di avere il valore di y in x0 + h. Analogamente gli algoritmi che procedono
da xi a xi+1 = x + h possono essere basati sull’espansione di Taylor di y(x) rispetto a xi :
h2 f 0 (xi , y (xi ))
y (xi+1 ) = y (xi + h) = y (xi ) + hf (xi , y (xi )) + +...
2!
hn f (n−1) (xi , y (xi )) hn+1 f (n) (ξ, y (ξ))
...+ + , ξ ∈ [xi , xi+1 ] . (5.13)
n! n!
L’algoritmo che si ottiene tralasciando l’ultimo termine al secondo membro e sostituendo
y (xi+1 ) con yi+1 si dice di ordine hn . L’errore è di ordine hn+1 . L’errore di troncamen-
to locale, et , ottenuto dall’applicazione di questo metodo su un unico intervallo, è cosı̀
delimitato in valore
hn+1
|et | ≤ M, (5.14)
(n + 1)!
con
M ≥ f (n) (η, y (η)) max , η ∈ [xi , xi+1 ] .

Nel caso di una funzione f (x, y) generica, trovare l’espressione delle derivate che com-
paiono nell’espansione in serie di Taylor può diventare estremamente complicato. Per-
tanto, per le equazioni differenziali del prim’ordine spesso non si usano tutti i termini
dell’espansione, ma ci si ferma ai primi due termini:
y (xi+1 ) = y (xi ) + hf (xi , y (xi )) + O h2 ,

(5.15)
5 EQUAZIONI DIFFERENZIALI ORDINARIE 101

y1
Y

y(x0)

y(x1)

X
x0 x1

Figura 9: Metodo di Eulero.

dove il simbolo O ( ) indica i termini di ordine ( ). Dato che y (x0 ) è normalmente l’unico
valore di y (xi ) noto esattamente (assumendo che la condizione iniziale non sia affetta da
errori), si può sostituire nell’equazione (5.15) y (xi ) con yi . L’algoritmo assume la forma
seguente:
y1 = y (x0 ) + hf (x0 , y (x0 )) (5.16)
yi+1 = yi + hf (xi , yi ) = yi + hfi , i ≤ 1, (5.17)
ed è noto come metodo di Eulero .

5.1.2 Metodo di Eulero


Si può dare una semplice interpretazione geometrica del metodo di Eulero. Infatti, l’uso
dell’equazione (5.16) implica che la soluzione nell’intervallo [x0 , x1 ] segua la tangente a
y(x) in x0 , come mostrato in figura 9. Quando il metodo di Eulero è applicato in sequenza
su più intervalli, la soluzione apparirà come un poligono con lati aventi pendenza pari
a fi , i = 0, 1, 2, ..., n − 1. A titolo di esempio si consideri la soluzione dell’equazione
differenziale
dy
= f (x, y) = x + y,
dx
nell’intervallo [0, 1], con condizione iniziale x0 = 0, y(x0 ) = 0. La soluzione esatta di tale
equazione è y(x) = ex − x − 1. I risultati ottenuti usando il metodo di Eulero e h = 0.1
sono riportati nella tabella seguente, che fornisce sia la soluzione numerica, yi , che quella
esatta, y(xi ), oltre all’errore, εi = yi − y(xi ).
5 EQUAZIONI DIFFERENZIALI ORDINARIE 102

xi yi y(xi ) εi
0. 0. 0. 0.
0.1 0. 0.005171 −0.005171
0.2 0.01 0.021403 −0.011403
0.3 0.031 0.049859 −0.018859
0.4 0.0641 0.091825 −0.027725
0.5 0.11051 0.148721 −0.038211
0.6 0.171561 0.222119 −0.050558
0.7 0.248717 0.313753 −0.065036
0.8 0.343589 0.425541 −0.081952
0.9 0.457948 0.559603 −0.101655
1. 0.593742 0.718282 −0.124539
Il valore di yi usato in ogni intervallo, ad eccezione del primo dove y0 = y(x0 ), è approssi-
mato, essendo il risultato di calcoli precedenti che contengono già essi stessi degli errori
di troncamento. Quindi man mano che si procede da x0 verso xn , l’errore commesso nel
calcolare yi aumenta sempre più: si dice che il metodo produce una propagazione dell’er-
rore. Esaminiamo meglio tale proprietà del metodo di Eulero analizzando la soluzione
dell’equazione (5.5) con condizione iniziale y(x0 ) = y0 . Se la soluzione y(x) esiste e la sua
derivata prima è continua, si ha:

00 0
∂f (x, y) ∂f (x, y)
|y (x)| = |f (x, y)| = + f (x, y) ≤ M, (5.18)
∂x ∂y


∂f (x, α) ∗
|f (x, y ) − f (x, y)| = |y − y| ≤ K |y ∗ − y| , (5.19)
∂y
con K e M costanti e y ∗ < α < y. Avendo definito l’errore nell’equzione (5.10), l’errore
addizionale generato nel valutare la soluzione in xi+1 a partire da quella a xi vale:

εi+1 − εi = [yi+1 − y(xi+1 )] − [yi − y(xi )] = yi+1 − yi − [y(xi+1 ) − y(xi )] (5.20)

o, equivalentemente,
∆εi = ∆yi − ∆y(xi ), (5.21)
con ε0 = 0. Applicando il metodo di Eulero si ha:

yi+1 − yi = h f (xi , yi ), (5.22)

mentre, usando l’espansione in serie di Taylor (5.13), si ha:

h2 0
y(xi+1 ) − y(xi ) = h f (xi , y(xi )) + f (ξ, y(ξ)), xi < ξ < xi+1 . (5.23)
2!
Quindi l’equazione (5.21) si può riscrivere:

h2 0
∆εi = h [f (xi , yi ) − f (xi , y(xi ))] − f (ξ, y(ξ)). (5.24)
2
5 EQUAZIONI DIFFERENZIALI ORDINARIE 103

Questa relazione, unitamente alle equazioni (5.18) e (5.19), porta a scrivere:

M 2
|∆εi | = |εi+1 − εi | ≤ h K |yi − y(xi )| + h , (5.25)
2
o, equivalentemente,
M 2
|εi+1 − εi | ≤ h K |εi | + h . (5.26)
2
Poiché
|εi+1 | ≤ |εi+1 − εi | + |εi |
si ha:
M 2
h,
|εi+1 | ≤ (1 + h K) |εi | + i > 0. (5.27)
2
Questa equazione, che consente di determinare |εi | a partire da ε0 = 0. Si può verificare
che una soluzione generale di tale equazione è
Mh
|εi | ≤ (1 + h K)i − 1

. (5.28)
2K
Poiché dall’espansione in serie di Taylor di ehK segue che

1 + h K < ehK ,

l’equazione (5.28) diventa


Mh M h ihK
|εi | ≤ eihK − 1 ≤ e . (5.29)
2K 2K
Quindi, mediante questa equazione è possibile valutare la stima l’errore complessivo in
xn , cioè alla fine dell’intervallo di integrazione:
M h LK
|εn | ≤ e , (5.30)
2K
dove L = n h. Da quanto detto si deduce che, facendo tendere h a zero anche l’errore
tende a zero e il metodo si dice convergente. Si nota inoltre che il metodo converge con
un errore complessivo
|εi | = |yi − y(xi )| = O(h), (5.31)
per cui il metodo di Eulero presenta un errore di troncamento locale di ordine h2 , mentre
l’errore di troncamento globale è di ordine h. Questo può essere verificato risolvendo
l’esempio precedentemente svolto usando un passo dimezzato, h = 0.05. I risultati sono
riportati nella tabella seguente per i soli punti base distanziati di 0.1 per i quali è possibile
il confronto con la precedente soluzione.
5 EQUAZIONI DIFFERENZIALI ORDINARIE 104

xi yi y(xi ) εi
0. 0. 0. 0.
0.1 0.0025 0.005171 −0.002671
0.2 0.015506 0.021403 −0.005897
0.3 0.040096 0.049859 −0.009763
0.4 0.077455 0.091825 −0.014369
0.5 0.128895 0.148721 −0.019827
0.6 0.195856 0.222119 −0.026262
0.7 0.279932 0.313753 −0.033821
0.8 0.382875 0.425541 −0.042666
0.9 0.506619 0.559603 −0.052984
1. 0.653298 0.718282 −0.064984

5.1.3 Metodi di Runge–Kutta


La soluzione delle equazioni differenziali tramite l’uso diretto dell’espansione in serie di
Taylor della soluzione y(x) non è molto pratica se si necessita di derivate di ordine su-
periore al primo. Questo perché nella maggior parte di casi il calcolo delle derivate di
ordine superiore diventa estremamente complicato; inoltre, tale procedura produce una
serie specifica per ogni problema. Quindi quando si necessita di un errore con termini di
ordine più elevato, non è possibile ottenere algoritmi semplici come quello di Eulero diret-
tamente dall’espansione in serie di Taylor. I metodi Runge–Kutta sono metodi one-step
che fanno uso delle sole derivate prime per ottenere risultati equivalenti in accuratezza alle
espansioni in serie di Taylor con termini di ordine superiore al primo. In questi metodi le
approssimazioni della soluzione al secondo, terzo e quarto ordine (ossia approssimazioni
con accuratezze equivalenti alle espansioni di Taylor di y(x) che contengono rispettiva-
mente termini in h2 , h3 , h4 ) richiedono il calcolo di f (x, y) in corrispondenza di due, tre,
quattro valori di x all’interno dell’intervallo [xi , xi+1 ]. Tutti i metodi Runge–Kutta hanno
algoritmi delle forma seguente

yi+1 = yi + hφ (xi , yi , h) . (5.32)

La funzione φ, detta incremento, è una opportuna approssimazione di f (x, y) nell’inter-


vallo [xi , xi+1 ]. Vediamo in dettaglio lo sviluppo del solo algoritmo del secondo ordine. Lo
sviluppo delle formule di ordine più elevato seguiranno possono essere ricavate mediante
un procedimento analogo.
Sia φ la media pesata dei valori k1 e k2 assunti dalla derivata in due punti all’interno
dell’intervallo [xi , xi+1 ]:
φ = ak1 + bk2 , (5.33)
con
k1 = f (xi , yi ), (5.34)
k2 = f (xi + ph, yi + qhf (xi , yi )) = f (xi + ph, qhk1 ) , (5.35)
5 EQUAZIONI DIFFERENZIALI ORDINARIE 105

dove p e q sono costanti definite nel seguito. In questo modo si può scrivere l’algoritmo
di Runge–Kutta come
yi+1 = yi + h (ak1 + bk2 ) (5.36)
Si ricorda che i primi termini dell’espansione di Taylor di una funzione di due variabili
sono:

f (x + r, y + s) = f (x, y) + rfx (x, y) + sfy (x, y)+


fxx (x, y) fyy (x, y)
r2 + rsfxy (x, y) + s2 + O (|r| + |s|)3 ,
 
2 2
Tornando ora al metodo di Runge–Kutta, si espande k2 (funzione di due variabili) in serie
di Taylor:

k2 = f (xi + ph, yi + qhf (xi , yi )) = f (xi , yi ) + phfx (xi , yi ) + qhf (xi , yi )fy (xi , yi ) + O h2 .


(5.37)
Sostituendo i valori di k1 e k2 nell’equazione (5.36), si ha:

yi+1 = yi + h [af (xi , yi ) + bf (xi , yi )] + h2 [bpfx (xi , yi ) + bqf (xi , yi )fy (xi , yi )] + O h3 .


(5.38)
Si espanda ora in serie di Taylor La funzione y(x) nell’intorno di xi ,

h2 0 h3
y(xi +h) = y(xi+1 ) = y(xi )+hf (xi , y(xi ))+ f (xi , y(xi ))+ f 00 (ξ, y(ξ)) ξ ∈ (xi , xi+1 ) .
2 3!
(5.39)
Usando la regola di derivazione in catena, equazione (5.12), si ha:

f 0 (xi , y(xi )) = fx (xi , y(xi )) + fy (xi , y(xi ))f (xi , y(xi ))

e l’equazione (5.39) diventa:

h2
y(xi+1 ) = y(xi ) + hf (xi , y(xi )) + [fx (xi , y(xi )) + fy (xi , y(xi ))f (xi , y(xi ))]
2
h3
+ f 00 (ξ, y(ξ)) ξ ∈ (xi , xi+1 ) . (5.40)
3!
I coefficienti dei termini con le stesse potenze di h nelle equazioni (5.38) e (5.40) sono:

Potenza di h Espansione di y(x) Algoritmo di Runge–Kutta


0 y(xi ) yi
1 f (xi , y(xi )) (a
 + b)f (xi , yi )
1

2 2
[fx (xi , y(xi )) + fy (xi , y(xi ))f (xi , y(xi ))] bpfx (xi , yi ) + bqf (xi , y) fy (xi , yi )
Assumendo yi = y(xi ), per ottenere l’uguaglianza di questi termini dovrà essere
1 1
a + b = 1, bp = , bq = ,
2 2
5 EQUAZIONI DIFFERENZIALI ORDINARIE 106

da cui:
a + b = 1,
1 (5.41)
p=q=
.
2b
Il sistema (5.41) contiene tre equaqzioni in quattro incognite, quindi si può scegliere
arbitrariamente una variabile: due scelte molto comuni sono b = 1 e b = 21 .

Caso b=1/2. Per b = 12 , a = 12 , p = 1, q = 1 e l’algoritmo di Runge–Kutta, equazione (5.36),


diventa:
h
yi+1 = yi + [f (xi , yi ) + f (xi + h, yi + hf (xi , yi )]), (5.42)
2
che può essere riscritto:
h 
yi+1 = yi + f (xi , yi ) + f (xi+1 , y i+1 ) , (5.43)
2
con
y i+1 = yi + hf (xi , yi ). (5.44)
L’algoritmo one-step costituito dalle equazioni (5.43) e (5.44) è noto come metodo di
Eulero migliorato o metodo di Heun. La sua interpretazione geometrica è mostrata nella
figura 5.1.3. In questo caso si applica due volte di seguito il metodo di Eulero. Si usa prima

Y pendenza f(xi+1,yi+1)

yi+1

1 yi+1

yi
h

X
xi xi+1

Figura 10: Metodo di Eulero migliorato.

l’equazione (5.44) per “predire” y i+1 , cioè una prima stima di yi+1 : y i+1 è l’ordinata in
corrispondenza di xi+1 della retta ➀, passante per (xi , yi ) e avente pendenza f (xi , yi ) = k1 .
Quindi si riapplica il metodo di Eulero per ottenere una stima più accurata di yi+1 tramite
l’uso dell’equazione (5.43); la pendenza della linea ➁, usata a tale scopo, è la media
pesata delle approssimazioni di f ai due estremi dell’intervallo. Si noti che, sebbene
la derivata in xi+1 sia f (xi+1 , y(xi+1 )), si considera la sua approssimazione f (xi+1 , y i+1 )
5 EQUAZIONI DIFFERENZIALI ORDINARIE 107

dato che y(xi+1 ) non è noto. La prima applicazione dell’algoritmo di Eulero può essere
(1)
vista come un’equazione predittiva per y i+1 (la prima approssimazione di yi+1 ), mentre la
seconda può essere vista come una correzione di tale prima approssimazione, che produce
un miglioramento della stima di yi+1 . L’equazione (5.43) può anche essere applicata
in maniera ricorsiva per ottenere una sequenza di correzioni per la valutazione di yi+1 :
(m)
y i+1 , m = 2, 3, . . . . In questo modo le equazioni (5.43) e (5.44) costituiscono il più semplice
dei metodi detti di predizione-correzione (predictor-corrector) descritti in seguito.

Caso b=1. Per b = 1, a = 0, p = 12 , q = 12 , e l’algoritmo di Runge–Kutta diventa


 
h
yi+1 = yi + hf xi + , y i+ 1 , (5.45)
2 2

con
h
y i+ 1 = yi + f (xi , yi ). (5.46)
2 2
L’algoritmo costituito da queste equazioni è detto metodo di Eulero modificato. La sua
interpretazione geometrica è illustrata nella figura 11. Anche in questo caso il metodo di
Y

pendenza f(xi+h/2,yi+1/2)

yi+1/2 yi+1

1
2

yi
h/2 h/2

X
xi xi+1

Figura 11: Metodo di Eulero modificato.

Eulero è applicato due volte in sequenza. La prima volta, utilizzando l’equazione (5.46),
per ottenere un’approssimazione y i+ 1 in corrispondenza del punto di mezzo dell’intervallo
2
h
di integrazione, xi + . La seconda volta, applicando l’equazione (5.45), per valutare
2
h
f (x, y) in x = xi + e y = y i+ 1 , e usare questa pendenza su tutto l’intervallo.
2 2

I metodi Runge–Kutta di ordine più elevato si sviluppano in maniera analoga. Per


esempio la funzione di incremento per il metodo del terzo ordine è
φ = ak1 + bk2 + ck3 , (5.47)
5 EQUAZIONI DIFFERENZIALI ORDINARIE 108

dove k1 , k2 , k3 sono approssimazioni della derivata in vari punti dell’intervallo di inte-


grazione [xi , xi+1 ]:
k1 = f (xi , yi ),
k2 = f (xi + ph, yi + phk1 ), (5.48)
k3 = f (xi + rh, yi + shk2 + (r − s)hk1 ).
Gli algoritmi di Runge–Kutta del terzo ordine sono dati dalla formula seguente:

yi+1 = yi + h (ak1 + bk2 + ck3 ) (5.49)

Per determinare i coefficienti a, b, c, p, r, s bisogna prima espandere k2 e k3 in serie di


Taylor rispetto a (xi , yi ). Quindi si espande y(x), equazione (5.13), e poi, come fatto in
precedenza per i metodi del secondo ordine, si uguagliano i coefficienti che moltiplicano
i termini con le medesime potenze di h. In particolare, bisognerà uguagliare i coefficienti
dei termini h, h2 e h3 per avere un errore di troncamento locale di ordine h4 . Si ottengono
nuovamente più incognite (6) che equazioni (4):

a + b + c = 1,
1
bp + cr = ,
2
1 (5.50)
bp2 + cr 2 = ,
3
1
cps = .
6
Per il set di costanti usato da Kutta si ottiene il seguente metodo del terzo ordine:
h
yi+1 = yi + (k1 + 4k2 + k3 ) ,
6
k1 = f (xi , yi ),
(5.51)
k2 = f (xi + 12 h, yi + 12 hk1 ),
k3 = f (xi + h, yi + 2hk2 − hk1 ).

Si noti che se f (x, y) fosse una funzione della sola x, allora quella appena scritta si
ridurrebbe alla regola di integrazione di Simpson.
Le formule del quarto ordine sono tutte del tipo

yi+1 = yi + h (ak1 + bk2 + ck3 + dk4 ) (5.52)


5 EQUAZIONI DIFFERENZIALI ORDINARIE 109

Ci sono molti algoritmi del quarto ordine. Il seguente è quello attribuito a Kutta:
h
yi+1 = yi + (k1 + 2k2 + 2k3 + k4 ) ,
6
k1 = f (xi , yi ),
k2 = f (xi + 12 h, yi + 12 hk1 ), (5.53)

k3 = f (xi + 12 h, yi + 12 hk2 ),
k4 = f (xi + h, yi + hk3 ).

Anche in questo caso il metodo si ridurrebbe alla regola di Simpson se f (x, y) fosse una
funzione della sola x. Un altro metodo del quarto ordine proposto da Kutta è il seguente:
h
yi+1 = yi + (k1 + 3k2 + 3k3 + k4 ) ,
8
k1 = f (xi , yi ),
k2 = f (xi + 13 h, yi + 13 hk1 ), (5.54)

k3 = f (xi + 23 h, yi − 13 hk1 + hk2 ),


k4 = f (xi + h, yi + hk1 − hk2 + hk3 ).

Questo metodo si riduce alla seconda regola di Simpson se f (x, y) è una funzione della
sola x.

5.1.4 Stima dell’errore di troncamento e controllo del passo nei metodi Runge–
Kutta
In generale l’errore εi+1 che si commette nel calcolare la soluzione dell’equazione differen-
ziale nel punto xi è
εi+1 = εi + ei + et , (5.55)
dove ei è l’errore di propagazione del singolo intervallo, cioè l’errore che si commette
nel calcolare la soluzione nel punto xi+1 per il solo fatto che si parte da un valore, in
corrispondenza di xi , approssimato (partendo da un valore non esatto, anche avendo a
disposizione un metodo privo di errori si otterrà un valore approssimato); et è l’ errore
di troncamento locale, ossia l’errore che si commette nell’usare un dato metodo numerico
per ottenere il valore della soluzione in corrispondenza di xi+1 a partire da quello in
corrispondenza di xi . La somma εi + ei è detta errore di propagazione complessivo.
Considereremo per il momento trascurabile ei , si può scrivere in maniera approssimata:

εi+1 − εi ' et . (5.56)

Riguardando il procedimento con cui sono stati ottenuti gli algoritmi di Runge–Kutta,
si nota che il passaggio fondamentale è stato l’aver imposto l’uguaglianza dei coefficienti
5 EQUAZIONI DIFFERENZIALI ORDINARIE 110

contenenti hm , con m = 1, 2, . . ., fra l’espansione in serie di Taylor e l’algoritmo di Runge–


Kutta stesso. Nel caso del metodo di Runge–Kutta del second’ordibe sono però tralasciati
i termini dell’espansione in serie di Taylor superiori al secondo ordine: l’errore commesso
sarà quindi O(h3 ). In generale per avere un metodo di ordine m, l’errore di troncamento
locale dovrà essere:
et = khm+1 + O(hm+2 ), (5.57)
dove k indica un valore che in generale dipende da f (x, y) e dalle sue derivate di ordine
superiore.
Si vuole ora calcolare una stima di et che consenta di determinare il valore ottimale del
passo di integrazione h. Infatti, da un lato il passo deve essere piccolo per poter ottenre
l’accuratezza richiesta, mentre dall’altro deve essere grande per poter tenere sotto controllo
gli errori di arrotondamento e evitare un numero eccessivo di calcoli. Un approccio a
questo problema sta nell’assumere che l’errore di troncamento locale abbia la forma

et ' khm+1

con k = cost (in prima approssimazione); in questo modo sono stati trascurati i termini
di ordine più elevato (seconda approssimazione): questo equivale a dire che h è piccolo
abbastanza da rendere i termini O(hm+2 ) trascurabili. Successivamente, una stima del-
l’errore di troncamento locale può essere fatta integrando tra due punti, indicato con x n
e xn+1 , usando due diversi valori del passo h1 e h2 . Si otterranno quindi due soluzioni per

yn+1 (risultato dell’integrazione) che indicheremo con yn+1,1 e yn+1,2 . Indicando con yn+1
la soluzione esatta, si ha:
xn+1 − xn

et1 = yn+1 − yn+1,1 = kh1m+1 , (5.58)
h1
xn+1 − xn

et2 = yn+1 − yn+1,2 = khm+1
2 . (5.59)
h2
Utilizzando ora la tecnica dell’estrapolazione di Richardson, vista a proposito dell’in-
tegrazione numerica, si divide membro a membro l’equazione (5.58) per la (5.59), per
ottenere  m  m
e t1 h1 h1
= =⇒ et1 = et2 . (5.60)
e t2 h2 h2
Poiché

yn+1 = yn+1,1 + et1 = yn+1,2 + et2 , (5.61)
usando l’equazione (5.60), si ha:
 m
∗ h1
yn+1 = yn+1,1 + et2 = yn+1,2 + et2 , (5.62)
h2
da cui
yn+1,2 − yn+1,1
e t2 =   m . (5.63)
h1
−1
h2
5 EQUAZIONI DIFFERENZIALI ORDINARIE 111


D’altro canto yn+1 = yn+1,2 + et2 , quindi:
 m
h1
yn+1,1 − yn+1,2
∗ h2
yn+1 =  m . (5.64)
h1
1−
h2
h1
Scegliendo h2 = 2
, ossia raddoppiamo il numero di intervalli,

∗ yn+1,1 − yn+1,2 2m
yn+1 = . (5.65)
1 − 2m
h
Ponendo adesso h1 = h e h2 = 2
, si ha et1 = et che è proprio l’errore di troncamento
nell’intervallo [xn , xn+1 ]:
yn+1,1 − yn+1,2 2m m yn+1,1 − yn+1,2
et = − y n+1,1 = 2 . (5.66)
1 − 2m 1 − 2m
Nel caso del metodo di Runge–Kutta del quarto ordine, m = 4 e si ottiene un errore di
troncamento locale
16
et = (yn+1,2 − yn+1,1 ) . (5.67)
15
Si è cosı̀ ottenuto la stima che si cercava. Questa tecnica di monitoraggio, basata sul
calcolo della stima dell’errore di troncamento locale, presenta l’inconveniente che, se fatta
su ogni intervallo di integrazione [xn , xn+1 ], porta a triplicare i calcoli perché bisogna
eseguire una prima volta i calcoli per h1 = h, quindi una seconda e una terza volta per
eseguire i due passi h2 = h2 . Un buon compromesso è eseguire questo controllo meno
frequentemente, ad esempio ogni k intervalli di integrazione.
La determinazione di un limite superiore per l’errore di propagazione dei metodi di
Runge–Kutta non è agevole. In generale, se l’errore di troncamento locale di un metodo
one-step è O(hm+1 ), l’errore complessivo sarà O(hm ); si ha quindi la riduzione di un ordine
cosı̀ come si è ricavato per il metodo di Eulero. Si può dimostrare che tutti i metodi di
Runge–Kutta sono convergenti.

5.1.5 Sistemi di equazioni differenziali ordinarie


Consideriamo la soluzione del seguente sistema di n equazioni differenziali ordinarie del
primo ordine
dy1
= f1 (x, y1 , y2 , . . . , yn ) ,
dx
dy2
= f2 (x, y1 , y2 , . . . , yn ) ,
dx (5.68)
..
.
dyn
= fn (x, y1 , y2 , . . . , yn ) ,
dx
5 EQUAZIONI DIFFERENZIALI ORDINARIE 112

con le condizioni iniziali date in corrispondenza del punto x0 :

y1 (x0 ) = y1,0 ,
y2 (x0 ) = y2,0 ,
.. (5.69)
.
yn (x0 ) = yn,0 .

La risoluzione di questo sistema consiste nello scegliere un algoritmo di soluzione tra


quelli visti in precedenza e applicarlo alle n equazioni perallelamente ad ogni passo di
integrazione. Si consideri, ad esempio, il seguente sistema di due equazioni:
dy
= x + y + z = f (x, y, z),
dx
dz
= x + y + 2z = g(x, y, z).
dx
Usando l’algoritmo di Eulero, questo si applica in sequenza alle due equazioni:

yi+1 = yi + hf (xi , yi , zi ) = yi + h(xi + yi + zi ),


zi+1 = zi + hg(xi , yi , zi ) = zi + h(xi + yi + 2zi ).
1
Volendo invece usare il metodo di Runge–Kutta del second’ordine con b = 2
bisogna
prima calcolare
y i+1 = yi + hf (xi , yi , zi ),
z i+1 = zi + hg(xi , yi , zi ),
e successivamente la soluzione al passo i + 1:
h
yi+1 = yi + [f (xi , yi , zi ) + f (xi , y i , z i )] ,
2
h
zi+1 = zi + [g(xi , yi , zi ) + g(xi , y i , z i )] .
2
A questo punto si può passare al passo successivo avendo ottenuto i nuovi valori di y e z.
La procedura è analoga per i metodi di Runge–Kutta del terzo e quarto ordine.
Dovendo risolvere una singola equazione differenziale di ordine superiore,

dm y dy d2 y dm−1 y
 
= F x, y, , 2 , ..., m−1 (5.70)
dxm dx dx dx

con le appropriate condizioni iniziali

dy(x0 ) dm−1 y(x0 )


y(x0 ), ,..., , (5.71)
dx dxm−1
si può notare come essa possa essere riscritta come un sistema di equazioni del primo
ordine.
5 EQUAZIONI DIFFERENZIALI ORDINARIE 113

5.1.6 Stabilità
In generale una soluzione si dice instabile se gli errori introdotti in un qualsiasi livello di
esecuzione dei calcoli (condizioni iniziali sbagliate, errori di arrotondamento o troncamen-
to, etc.) si amplificano nei calcoli successivi. Certe equazioni con particolari condizioni
iniziali non possono essere risolte con nessun metodo di integrazione per intervalli succes-
sivi senza mostrare instabilità: si parla in questo caso di instabilità inerente. Si consideri
per esempio l’equazione
dy
= f (x, y) = x + y,
dx
la cui soluzione analitica è

y(x) = −x − 1 + [1 + x0 + y(x0 )]ex−x0

che con la condizione iniziale y(0) = −1 diventa y(x) = −x − 1; per queste particolari
condizioni iniziali si ha l’annullamento del termine esponenziale. Un piccolissimo cam-
biamento nelle condizioni iniziali, per esempio y(0) = −0.99999, causerebbe un drastico
cambiamento della soluzione per valori di x elevati. Infatti, anche se il coefficiente del
termine esponenziale è piccolo, il contributo dell’esponenziale può anche superare il valore
del termine lineare. Nel caso in cui un’equazione di questo tipo venga risolta con un meto-
do one-step, ogni nuovo passo può essere visto come la soluzione di un nuovo problema al
valor iniziale. Anche se la condizione iniziale non è affetta da errori al primo intervallo,
la condizione iniziale per i passi successivi conterrà inevitabilmente degli errori introdotti
dall’arrotondamento e dal troncamento dei passi precedenti: quindi per elevati valori di
x la soluzione ottenuta non sarà più ragionevole. L’instabilità inerente dipende quindi
dall’equazione e dalle condizioni iniziali considerate, e non dipende dal metodo.
L’instabilità parziale dipende invece anche dal metodo one-step usato e si può verificare
per i casi di equazioni inerentemente stabili. In questo caso è importante la dimensione
h del passo. Vediamo in particolare che succede nel caso del metodo di Eulero. L’errore
totale in corrispondenza dei punti xi e xi+1 è ripettivamente

εi = yi − y(xi ), εi+1 = yi+1 − y(xi+1 ), (5.72)

da cui
εi+1 − εi = yi+1 − y(xi ) − [y(xi+1 ) − y(xi )] . (5.73)
L’algoritmo di Eulero si scrive

yi+1 = yi + hf (xi , yi ) ⇐⇒ yi+1 − yi = hf (xi , yi ) ; (5.74)

quindi
εi+1 − εi = hf (xi , yi ) − [y(xi+1 ) − y(xi )] (5.75)
Sviluppando y(xi+1 ) in serie di Taylor rispetto a xi si ottiene:

h2
y (xi+1 ) − y (xi ) = hf (xi , y (xi )) + f (ξ, y (ξ)) , ξ ∈ (xi , xi+1 ) . (5.76)
2
5 EQUAZIONI DIFFERENZIALI ORDINARIE 114

Quindi:
h2 0
εi+1 = εi + h [f (xi , yi ) − f (xi , y (xi ))] − f (ξ, y (ξ)) . (5.77)
2
Per il teorema del valor medio differenziale
 
∂f
f (xi , yi ) − f (xi , y (xi )) = [yi − y (xi )] (5.78)
∂y xi ,α

con α ∈ [yi , y (xi )]. Poiché yi − y (xi ) = εi l’equazione (5.77) diventa:


  !
∂f h2
εi+1 = εi 1 + − f (ξ, y (ξ)) . (5.79)
∂y xi ,α 2

Confrontando questa equazione con l’espressione dell’errore al passo i + 1,

εi+1 = εi + ei + et ,

si nota che il primo termine a secondo membro nell’equazione (5.79), corrisponde al-
l’errore di propagazione complessivo, mentre il secondo è l’errore di troncamento locale.
∂f
Chiaramente, se è negativo, allora si potrà trovare un valore di h tale che il fattore di
∂y
propagazione sia minore di uno:
  !
∂f
1+ < 1; (5.80)
∂y xi ,α

∂f
in questo si ottiene una riduzione dell’errore e la soluzione è stabile. Se è positivo,
∂y
indipendentemente da h risulta
  !
∂f
1+ > 1; (5.81)
∂y xi ,α

quindi l’errore commesso in corrispondenza di xi sarà amplificato nel passaggio a xi+1


e la soluzione tenderà verso l’instabilità. Tuttavia, anche in questi casi è possibile con-
tenere l’errore di propagazione specialmente nelle fasi iniziali dell’integrazione, scegliendo
un passo h sufficientemente piccolo in maniera da mantenere il fattore di propagazione
prossimo ad uno. Si parla in questo caso di stabilità condizionata.
Poiché in generale ci possono essere equazioni in cui la soluzione y crescre indefinita-
mente con x, la condizione più appropriata da verificare è che l’errore relativo εi /yi non
cresca in maniera apprezzabile.
5 EQUAZIONI DIFFERENZIALI ORDINARIE 115

5.2 Metodi multi-step


I metodi one-step trattati sin qui approssimano la soluzione dell’equazione del primo
ordine
df
= f (x, y)
dx
con condizione iniziale y0 = y (x0 ). Se consideriamo il metodo di Eulero questo obbiet-
tivo viene raggiunto attraverso l’integrazione dell’equazione su più intervalli consecutivi
all’interno dei quali viene considerato costante il valore di f (figura 12):
Z x1
y1 = y 0 + f0 dx,
x0
Z x2
y2 = y 1 + f1 dx,
x1 (5.82)
..
. Z xi+1
yi+1 = yi + fi dx.
xi

Per un’integrazione su k + 1 intervalli che termini in xi+1 queste equazioni portano a


scrivere: Z xi+1
yi+1 = yi−k + ψi (x) dx, (5.83)
xi−k

dove ψi (x) indica la funzione costante a tratti con ordinate fj = f (xj , yj ) nell’intervallo
[xj , xj+1 ), j = i − k, i. L’integrale nell’equazione (5.83) può essere visto come l’area
contenuta entro i limiti xi−k , xk in figura 13.

f i+1

fi

f i+2

h h h

x i
x i+1
x i+2 x

Figura 12: Integrazione secondo il metodo di Eulero.


5 EQUAZIONI DIFFERENZIALI ORDINARIE 116

ψi (x)

fi−k+1    


 

~

fi−k


~


        fi  


        


          


        


  x        
~
~
x i−k i−k+1 xi x i+1 x

Figura 13: Integrazione multi-step.

È intuitivo pensare che si potrà ottenere una maggiore accuratezza sostituendo la


funzione ψi nell’equazione (5.83) con un polinomio interpolatore φ(x) che passi per i
punti (xj , fj ). Tale approccio si basa sull’uso delle formule di interpolazione. Il numero
dei valori fj richiesti dipende da:

1. grado del polinomio interpolatore che si vuole utilizzare;

2. disponibilità dei valori fj .

Assumendo infatti che l’integrazione sia già avanzata fino al punto base xi , saranno noti
tutti i valori fj con 0 ≤ j ≤ i. In generale fi+1 non sarà però noto, dato che f è funzione
sia di x che di y, e yi+1 non è stato ancora calcolato. I più comuni metodi multi-step sono
descritti quindi dalla seguente equazione:
Z xi+1
yi+1 = yi−k + φ (x) dx (5.84)
xi−k

con r
X
φ (x) = a j xj , (5.85)
j=0

avendo indicato con r il grado del polinomio interpolatore.

5.2.1 Formule di integrazione aperte


Dato che i valori xj usati per la costruzione del polinomio interpolatore sono equamente
distanziati e che i valori fi , fi−1 , fi−2 , . . . , fi−r sono noti, il modo più semplice di esprimere
φ (x) è quello di usare la formula di interpolazione di Newton basata su differenze finite
5 EQUAZIONI DIFFERENZIALI ORDINARIE 117

all’indietro:
∇2 f i ∇3 f i
φ (xi + αh) = fi + α∇fi + α (α + 1) + α (α + 1) (α + 2) +
2! 3!
∇r f i
. . . + α (α + 1) (α + 2) . . . (α + r − 1) , (5.86)
r!
x − xi
dove fi = f (xi , yi ), x = xi + αh da cui α = . I punti base xi−k possono essere
h
definiti in due modi:
xi−k = xi − kh, xi−k = xi + αh,
con α = −k. Dato che dx = hdα, l’integrale nell’equazione (5.84) si può scrivere:
Z xi+1 Z 1
φ (x) dα = h φ (xi + αh) dα =
xi−k −k
1
∇2 f i
Z 
=h fi + α∇fi + α (α + 1) +
−k 2!
∇r f i

. . . + α (α + 1) (α + 2) . . . (α + r − 1) dα. (5.87)
r!
Da cui:
xi+1
α2 α 1 ∇2 f i
Z   
2
yi+1 = yi−k + φ (x) = yi−k + h αfi + ∇fi + α +
xi−k 2 3 2 2!
 2  3  3 1
3α2 11α ∇4 f i

2 α ∇ fi 2 α
+α +α+1 + ...+α + + +3 +... (5.88)
4 3! 5 2 3 4! −k

Nelle formule precedenti bisogna definire sia il grado r del polinomio interpolatore che k
cioè il numero di passi indietro rispetto a xi usati nell’integrazione. Si noti che vengono
utilizzati i punti che vanno da xi a xi−k per costruire un polinomio che però viene usato per
ottenere il valore f in xi+1 : questo corrisponde ad un’estrapolazione. Ancora, l’espressione
dell’integrale nell’equazione (5.88) è equivalente (basta rinominare i pedici) alle formule
di integrazione aperte di Newton–Cotes.
Usando k = 0, implica che l’integrazione è effettuata da i ad i + 1: l’uso di un solo
intervallo per l’integrazione non implica che il metodo sia one-step in quanto se r 6= 1
vengono impiegate informazioni provenienti da più intervalli; se r = 1 il metodo coincide
con il metodo di Eulero classico. Considerando r generico si ha:
 
1 5 2 3 3 251 4
yi+1 = yi + h fi + ∇fi + ∇ fi + ∇ fi + ∇ fi + . . . ; (5.89)
2 12 8 720
per k = 1 (integrazione tra i − 1 e i + 1), si ha:
 
1 2 1 3 29 4
yi+1 = yi−1 + h 2fi + 0 ∇fi + ∇ fi + ∇ fi + ∇ fi + . . . ; (5.90)
3 3 90
5 EQUAZIONI DIFFERENZIALI ORDINARIE 118

per k = 2, si ha:
 
3 3 2 3 3 27 4
yi+1 = yi−2 + h 3fi − ∇fi + ∇ fi + ∇ fi + ∇ fi + . . . ; (5.91)
2 4 8 80
per k = 3, si ha:
 
8 2 3 14 4
yi+1 = yi−3 + h 4fi − 4 ∇fi + ∇ fi + 0 ∇ fi + ∇ fi + . . . ; (5.92)
3 45
Si noti che, in generale, per valori dispari di k, il coefficiente della k-esima differenza divisa
è nullo. Per questo motivo le formule aperte di integrazione più usate sono quelle per k
dispari che utilizzano i soli primi k + 1 termini del polinomio interpolatore (r = k). In
questi casi il termine (k + 1)-esimo si annulla, sicché si otterrà un errore corrispondente
ad un polinomio di grado r pur avendo usato un polinomio di grado r − 1.
Per quanto riguarda l’accuratezza dell’integrazione, si ricorda che l’errore associato al
generico polinomio interpolatore è

f (x, y) = pn (x) + Rn (x), (5.93)

per cui si potrà scrivere l’errore associato al polinomio di grado r come


f r+1 (ξ)
R (xi + αh) = hr+1 α(α + 1)(α + 2) . . . (α + r) . (5.94)
(r + 1)!
In effetti quello che interessa è l’integrale del polinomio e quindi è necessario valutare
l’integrale dell’errore ad esso associato:
Z xi+1 Z 1
R (xi + αh) dx = h R (xi + αh) dα =
xi−k −k
1
f r+1 (ξ)
Z
r+2
h α(α + 1)(α + 2) . . . (α + r) dα, xi−k < ξ < xi+1 . (5.95)
−k (r + 1)!
Dato che ξ è incognito, per avere una stima dell’errore si opera la seguente approssi-
mazione:
f r+1 (ξ)
= cost, (5.96)
(r + 1)!
che consente di portare questo termine fuori dall’integrale.
Per k = 0 e r = 3, si ha:
 
1 5 2 3 3
yi+1 = yi + h fi + ∇fi + ∇ fi + ∇ fi ,
2 12 8 (5.97)
h
yi+1 = yi + [55fi − 59fi−1 + 37fi−2 − 9fi−3 ] ,
24
con
251 5 (4)
R= h f (ξ) (5.98)
720
5 EQUAZIONI DIFFERENZIALI ORDINARIE 119

ovvero con un errore O (h5 ). Se consideriamo un metodo di Runge–Kutta del quarto


ordine esso avrà l’espressione
h
R = O h5 .

yi+1 = yi + (k1 + 3k2 + 3k3 + k4 ) ,
8
La differenza tra i due metodi sta nel fatto che mentre nel metodo multi-step le derivate
sono tutte già calcolate perché derivanti dalle integrazioni ai passi precedenti, nel metodo
Runge–Kutta le derivate presenti nei termini ki sono tutte da calcolare. Come controparti-
ta si nota subito che nel metodo multi-step il cambiamento del passo h significa modificare
tutti gli intervalli considerati e rifare quindi tutte le integrazioni; ancora, i metodi multi-
step non sono autopartenti come i metodi one-step: si deve usare un metodo one-step per
calcolare le derivate nei primi r punti per potere valutare il punto (r + 1)-esimo.
Per k = 1 e r = 1, si ha:
yi+1 = yi−1 + h (2 fi + 0 ∇fi ) =⇒ yi+1 = yi−1 + 2 hfi , (5.99)
con
1
R = h3 f (2) (ξ) . (5.100)
3
Per k = 3 e r = 3, si ha:
 
8 2 3
yi+1 = yi−3 + h 4 fi − 4 ∇fi + ∇ fi + 0 ∇ fi ,
3 (5.101)
4
yi+1 = yi−3 + h (2 fi − fi−1 + 2 fi−2 ) ,
3
con
14 5 (4)
R= h f (ξ) . (5.102)
45
Quest’ultima viene detta formula di Milne ed è un metodo del quarto ordine.

5.2.2 Formule di integrazione chiuse


Mentre nelle formule di integrazione aperte è stata utilizzata un’estrapolazione per ot-
tenere il valore di f in xi+1 , utilizzando come punti base i valori di f nei punti da xi a
xi−k , nelle formule chiuse si utilizza un’interpolazione in cui viene preso in considerazione
anche il valore di f in corrispondenza di xi+1 . In questo secondo caso si otterrà quindi
un’equazione implicita in yi+1 (in quanto il valore di f in corrispondenza di xi+1 non è
noto), che dovrà essere risolta iterativamente.
Come già fatto in precedenza si considera x = xi + α h, mentre si esprime x in funzione
di xi e non di xi+1 (altrimenti si riotterrebbero nuovamente le formule aperte):
x = xi + αh = xi + h + αh − h = xi+1 + h (α − 1) (5.103)
Si è visto in precedenza che i metodi multi-step si possono esprimere come
Z xi+1
yi+1 = yi−k + φ (x) dx, (5.104)
xi−k
5 EQUAZIONI DIFFERENZIALI ORDINARIE 120

da cui, operando il cambiamento di variabile x = xi + αh, si ha:


Z 1
yi+1 = yi−k + h φ (xi + αh) dα. (5.105)
−k

Nel caso di formule di integrazione chiuse, il polinomio φ (xi + αh) sarà espresso mediante
la formula di Newton all’indietro con punto di partenza xi+1 (non xi come nelle formule
aperte):
1
(α − 1) α 2
Z
yi+1 = yi−k + h fi+1 + (α − 1) ∇fi+1 + ∇ fi+1 +
−k 2!

(α − 1) α (α + 1) 3 (α − 1) α (α + 1) . . . (α + r − 2) r
+ ∇ fi+1 + . . . + ∇ fi+1 dα; (5.106)
3! r!

da questa equazione, integrando con le stesse ipotesi fatte nel caso delle formule aperte,
si ottiene:
 
α 1

2
α α −
 3 2
∇2 fi+1 +

yi+1 = yi−k + h 
αfi+1 + α 2 − 1 ∇fi+1 + 2!

α2 1
 5
α4 α3
  
α

2 2
α − + − −α
4 2 3 5 2 3
∇4 fi+1 . . .

+ ∇ fi+1 +  . (5.107)
3! 4!

Questa equazione è l’analoga della formula generale di Newton-Cotes di integrazione


chiusa, con polinomio interpolatore scritto in termini di differenze all’indietro di f (xi+1 , yi+1 ).
Per k = 0 si ottiene:
 
1 1 2 1 3 19 4
yi+1 = yi + h fi+1 − ∇fi+1 − ∇ fi+1 − ∇ fi+1 − ∇ fi+1 + . . . ; (5.108)
2 12 24 720

per k = 1, si ha:
 
1 2 3 1 4
yi+1 = yi−1 + h 2fi+1 − 2∇fi+1 + ∇ fi+1 + 0 ∇ fi+1 − ∇ fi+1 + . . . ; (5.109)
3 90

per k = 3, si ha:
 
20 2 8 3 14 4 5
yi+1 = yi−3 + h 4fi+1 − 8∇fi+1 + ∇ fi+1 − ∇ fi+1 + ∇ fi+1 + 0 ∇ fi+1 . . . .
3 3 45
(5.110)
5 EQUAZIONI DIFFERENZIALI ORDINARIE 121

Per queste formule l’errore dovuto al troncamento dei termini dopo quello contenente la
differenza di ordine r risulta
Z 1
r+2 (α − 1) α (α + 1)(α + 2) . . . (α + r − 1) (r+1)
h f (ξ) dα, xi−k < ξ < xi+1 . (5.111)
−k (r + 1)!

Come si può vedere, per valori dispari di k il coefficiente di ∇k+2 fi+1 si annulla. Quindi,
le formule di questo tipo più usate sono quelle con k dispari e r = k + 2.
Per k = 0 e r = 3, si ha:
 
1 1 2 1 3 19 5 (4)
yi+1 = yi + h fi+1 − ∇fi+1 − ∇ fi+1 − ∇ fi+1 , R=− h f (ξ) ;
2 12 24 720
(5.112)
per k = 1 e r = 3, si ha:
 
1 2 3 1
yi+1 = yi−1 + h 2fi+1 − 2∇fi+1 + ∇ fi+1 + 0 ∇ fi+1 , R = − h5 f (4) (ξ) ;
3 90
(5.113)
per k = 3 e r = 5, si ha:
 
20 2 8 3 14 4
yi+1 = yi−3 + h 4fi+1 − 8∇fi+1 + ∇ fi+1 − ∇ fi+1 + ∇ fi+1 ,
3 3 45
8 7 (6)
R=− h f (ξ) . (5.114)
945
In queste equazioni, il punto ξ giace nell’intervallo compreso tra il più piccolo e il più
grande xj nella formula. Inoltre, il termini R indica l’errori di troncamento locale per
un’unica applicazione della formula di integrazione nel caso in cui ψ (x) = f (x, y), yj =
y (xj ) , fj = (xj , (xj )) (j indica il pedice che identifica i punti considerati nella formula).
Le formule di integrazione cosı̀ ricavate possono essere espresse in funzione dei valori
approssimati fj invece che delle loro differenze all’indietro:
k = 0, r = 3:
h
yi+1 = yi + (9 fi+1 + 19 fi − 5 fi−1 + fi−2 ) , R = O(h5 ); (5.115)
24
k = 1, r = 3:
h
yi+1 = yi−1 + (fi+1 + 4 fi + fi−1 ) , R = O(h5 ); (5.116)
3
k = 3, r = 5:
2h
yi+1 = yi−3 + (7 fi+1 + 32 fi + 12 fi−1 + 32 fi−2 + 7 fi−3 ) , R = O(h7 ); (5.117)
45
Le formule di integrazione cosı̀ ricavate non consento di ricavare yi+1 in maniera diretta
poiché in generale fi+1 = f (xi+1 , yi+1 ). Quindi, ad eccezione dei casi in cui f dipende
5 EQUAZIONI DIFFERENZIALI ORDINARIE 122

solo da x, le formule di integrazione chiuse risultano implicite in yi+1 e vanno risolte iter-
ativamente. Una possibilità è quella di usare per la risoluzione il metodo delle successive
sostituzioni. Se yi+1,j è la j-esima approssimazione della soluzione, allora la relazione
ricorsiva della formula (5.116) può essere scritta come

h
yi+1,j+1 = yi−1 + [f (xi+1 , yi+1,j ) + 4fi + fi−1 ] . (5.118)
3
Qundi per risolvere questa equazione: (a) si assume un valore per yi+1,0 , (b) si calcola
f (xi+1 , yi+1,0 ), (c) si trova yi+1,1 con la formula ricorsiva, (d) si calcola poi f (xi+1 , yi+1,1 ) e
yi+1,2 con la formula ricorsiva, etc. Il processo continua fino a che la sequenza yi+1,0 , yi+1,1 , yi+1,2
non converge, ossia fino a che yi+1,j+1 non differisce da yi+1,j di un valore abbastanza pic-
colo. Per essere sicuri che la procedura fornisca una soluzione bisogna trovare le condizioni
per cui essa converge. Dato che yi−1 , fi , fi−1 , h, xi+1 sono costanti per un fissato valore di
i l’equazione (5.118) si può scrivere:

h
yi+1,j+1 = f (xi+1 , yi+1,j ) + c = F (yi+1,j ) (5.119)
3
dove c è una costante. Ricordando i criteri di convergenza per il metodo delle successive
sostituzioni, si nota che la convergenza avrà luogo se |F 0 (yi+1,j )| è minore di uno:

0 h ∂f (yi+1 )
|F (yi+1,j )| = < 1. (5.120)
3 ∂y

Quindi la dimensione del passo deve soddisfare la condizione


3
h < . (5.121)
∂f (yi+1 )

∂y

A causa della necessità del calcolo iterativo da eseguire ad ogni passo, il metodo multi-step
chiuso appena descritto (k = 1 e r = 3) è sicuramente più complicato rispetto al metodo
multi-step della formula aperta
4h
R = O h5

yi+1 = yi−3 + (2fi − fi−1 + 2fi−2 )
3
ricavata per k = 3 e r = 3, ed equivalente in termini di ordine di grandezza dell’errore.
Tuttavia la formula aperta non è usata quasi mai per generare una sequenza di valori
della soluzione y1 , y2 , . . . , yn . I metodi chiusi sono preferiti perché l’errore di troncamento
locale ad essi associato è notevolmente inferiore rispetto a quello dei metodi aperti anche
se le due formule sono dello stesso ordine. Questo può essere notato osservando i termini
di errore della formula aperta,
14 5 (4)
R= h f (ξ) , ξ ∈ (xi−3 , xi+1 ) ,
45
5 EQUAZIONI DIFFERENZIALI ORDINARIE 123

e della formula chiusa


1 5 (4) 
R=− h f ξ ξ ∈ (xi−1 , xi+1 ) .
90
Queste sono ovviamente solo stime dell’errore dato che, come abbiamo visto, sono state
ottenute supponendo che yi = y (xi ) , yi−1 = y (xi−1 ) , . . . e fi = f (xi , y (xi )) , fi−1 =
f (xi−1 , y (xi−1 )) , . . ., mentre in realtà queste quantità sono calcolate numericamente. Se
h è sufficientemente piccolo si può assumere in effetti f (ξ) ' f ξ e quindi si nota in
questo caso che la formula chiusa è molto più accurata di quella aperta. In generale si vede
che le formule chiuse sono più accurate di quelle aperte. Questo perché le formule aperte si
basano su una estrapolazione nell’intervallo [xi , xi+1 ] del polinomio interpolatore, mentre
le formule chiuse utilizzano una interpolazione. I metodi chiusi possono essere usati per
la generazione della soluzione approssimata della generica equazione differenziale purché
siano noti i valori necessari a far partire il metodo (valori che possono essere calcolati
anche con l’uso di un metodo one-step); inoltre, la dimensione del passo di integrazione h
deve soddisfare il criterio di convergenza (5.121). Dato che ogni iterazione di una formula
chiusa richiede il calcolo della derivata f (xi+1 , yi+1,j ) è importante che la convergenza sia
molto rapida. Il numero di iterazioni richiesto per raggiungere la convergenza dipende
da molti fattori: i due su cui il programmatore ha più controllo sono la stima iniziale
yi+1,0 e la dimensione del passo h. In pratica si è visto che se per la convergenza sono
necessarie più di una o due iterazioni sulla formula chiusa i metodi multi-step non possono
competere con quelli one-step. Per esempio il metodo di Runge–Kutta del quarto ordine
richiede l’esecuzione di quattro valutazioni della derivata per ogni passo, con il vantaggio
che è richiesta la conoscenza di un unico valore della derivata (quello nel punto iniziale) e
che la dimensione del passo può essere variata con poche difficoltà da un passo all’altro.
D’altro canto la formula chiusa multi-step del quarto ordine ha lo svantaggio di non essere
autopartente, in quanto richiede la conoscenza della soluzione in x0 e x1 , e di presentare
notevoli difficoltà nel momento in cui si vuole cambiare la dimensione del passo.
La formula chiusa multi-step corrispondente al metodo di Runge–Kutta del quarto
ordine è l’equazione (5.118), ottenuta per k = 1 e r = 3. Il principale vantaggio di questa
formula è che può essere usata per produrre soluzioni di equazioni differenziali (con accu-
ratezza comparabile con il metodo di Runge–Kutta del quarto ordine) con due sole valu-
tazioni della derivata per ogni passo, f (xi+1 , yi+1,0 ) e f (xi+1 , yi+1,1 ). Per sfruttare questa
proprietà si utilizzano i metodi di predizione-correzione (metodi predictor-corrector ).
La tecnica usata è quella di scegliere una formula chiusa e una formula aperta con uguale
ordine di grandezza dell’errore di troncamento locale. La formula aperta è usata per
predire il valore di yi+1,0 , mentre la formula chiusa è usata per correggere la stima con una
procedura iterativa del tipo visto nell’equazione(5.118). La formula aperta è comunemente
detta predictor, mentre la formula chiusa è detta corrector. Un metodo predictor-corrector
del quarto ordine è quello di Milne:
predictor
4h
R = O h5 ;

yi+1 = yi−3 + (2fi − fi−1 + 2fi−2 ) , (5.122)
3
5 EQUAZIONI DIFFERENZIALI ORDINARIE 124

corrector
h
R = O h5 .

yi+1 = yi−1 +(fi+1 + 4fi + fi−1 ) , (5.123)
3
Il metodo di Adams modificato, anch’esso del quarto ordine, si scrive:
predictor
h
R = O h5 ;

yi+1 = yi + (55fi − 59fi−1 + 37fi−2 − 9fi−3 ) , (5.124)
24
corrector
h
R = O h5 .

yi+1 = yi + (9fi+1 + 19fi − 5fi−1 + fi−2 ) , (5.125)
24

Potrebbero piacerti anche