Sei sulla pagina 1di 71

Sistemi di equazioni differenziali ordinarie 99

29. Sistemi di equazioni differenziali


ordinarie con condizioni iniziali
Ranocchia: Oggi ho messo in pratica unaltra delle regole che mi hai insegnato per migliorare la
velocit e la qualit di apprendimento.
Wooko: Quale?
Ranocchia: Oh! Quella di modificare non solo il ritmo di lettura, ma anche il grado di
approfondimento di un particolare argomento a seconda dei concetti che vi sono coinvolti.
29.1 Introduzione
In questo Capitolo viene considerato il problema della integrazione di un sistema di
equazioni differenziali ordinarie (OD! del primo ordine in forma esplicita:
("#$%! y& ' f(y( t!
con le condizioni iniziali:
("#$"! y(t
)
! ' y
)
Esempio:
Il dimensionamento di un reattore tipo plug flow con raffreddamento alla parete * governato da
tre equazioni differenziali:
d+
d,
' f
%
(+(-(.!
d-
d,
' f
"
(+(-(.!
d.
d,
' f
/
(+(-(.!
con le condizioni iniziali:
, ' )0 + ' )0 - ' -
)
0 . ' .
)
che permettono di ricavare la conversione( +( la temperatura( - e la pressione( . in funzione del
tempo di contatto( ,$
1n&equazione differenziale di ordine m che sia della forma:
100 Capitolo 29
("#$/! 2
(m!
' f(2( 2&( $$$( 2
(m3%!
!
con le condizioni iniziali:
("#$4! 2(t
)
! ' 2
)
2&(t
)
! ' 2&
)
$$$ 2
(m3%!
(t
)
! ' 2
)
(m3%!
pu5 essere trasformata in un sistema del tipo precedente ("#$%! mediante l&introduzione di
nuove variabili dipendenti$
Esempio:
6&equazione del terzo ordine:
2&&& ' t27 8 2& 8 (% 8 t 8 2!
"
8 sin(t!
27()! ' % 2&()! ' " 2()! ' /
viene trasformata nel sistema:
2&
%
' 2
"

2&
"
' 2
/

2&
/
' t2
/
8 2
"
8 (% 8 t 8 2
%
!
"
8 sin(t!
con le condizioni:
2
/
()! ' % 2
"
()! ' " 2
%
()! ' /
mediante l&introduzione delle variabili:
2
%
' 2
2
"
' 2& ' 2&
%
2
/
' 27 ' 2&
"

I programmi numerici per la soluzione di equazioni differenziali generalmente


richiedono all&utente di effettuare manualmente la trasformazione di un&equazione
alle derivate di ordine superiore in un sistema di equazioni del tipo ("#$%!$

1n piccolo vantaggio che si ottiene trasformando il problema consiste nel fatto di


avere a disposizione senza sforzo di calcolo il valore numerico delle derivate(
essendo esse uguali alle variabili dipendenti ausiliarie introdotte$
In questo Capitolo non vengono considerati i seguenti problemi$

%$ 9istemi differenziali ordinari con condizioni al contorno$


"$ 9istemi misti algebrico differenziali$
/$ 9istemi differenziali alle derivate parziali$
Definizione: Sistemi autonomi$
9e le equazioni del sistema differenziale non dipendono esplicitamente dalla variabile
indipendente( t( ossia se:
Sistemi di equazioni differenziali ordinarie 101
("#$:! y& ' f(y!
il sistema viene detto autonomo$
Esempio:
Il seguente * un esempio di sistema autonomo:
2&
%
' 2
%
8 2
"

2&
"
' sen(2
%
!
2
%
()! ' % 2
"
()! ' "
; sempre possibile trasformare un sistema non autonomo in uno autonomo
mediante l&aggiunta di una variabile dipendente e di un&equazione differenziale:
("#$<! 2&
m8%
' % 2
m8%
(t
)
! ' t
)
e sostituendo alla variabile indipendente( t( la nuova variabile dipendente 2
m8%
$
6a trasformazione * importante dal momento che alcuni algoritmi sono applicabili solo
a sistemi autonomi$

In questo Capitolo non vengono trattati i problemi di esistena e di unicit della


soluzione e neppure i metodi analitici per risolvere particolari equazioni
differenziali$
I metodi numerici considerati permettono di ottenere la soluzione approssimata in
corrispondenza di alcuni valori della variabile indipendente( t
)
( t
%
( t
"
( $$$

=el seguito viene indicato con y(t


n
! il valore esatto delle variabili y in
corrispondenza di t
n
( e con y
n
il valore approssimato ottenuto con un particolare
algoritmo$ In modo analogo y&
n
* il valore approssimato della derivata prima e
y&(t
n
! il suo valore esatto$ Il simbolo h viene utilizzato per indicare il passo di
integrazione t
n8%
3 t
n
$ sso pu5 variare durante l&integrazione0 in questo caso viene
usato il simbolo h
n
$
Definizione: >lgoritmi One Step$
1n algoritmo che non utilizza( per calcolare il valore di y
n8%
( i valori di y o di y&
valutati in corrispondenza di punti precedenti a t
n
viene chiamato One Step$
Esempio:
Il metodo di ulero for,ard * il pi? semplice esempio di algoritmo One Step$ sso utilizza la
seguente formula:
("#$@! y
n8%
' y
n
8 hf(y
n
( t
n
!
Definizione: >lgoritmi !ulti Step$
102 Capitolo 29
1n algoritmo che utilizza( per calcolare il valore di y
n8%
( i valori di y o di y& valutati in
corrispondenza di punti precedenti a t
n
viene chiamato !ulti Step$
Esempio:
Il seguente * un esempio di algoritmo !ulti Step$
("#$A! y
n8%
' y
n3%
8 "hf(y
n
( t
n
!
Definizione: !etodi espliciti$
1n metodo che non richieda il calcolo delle funzioni f in corrispondenza di y
n8%
( t
n8%
viene detto esplicito$
Esempio:
Il seguente algoritmo (Runge 3 Butta del secondo ordine! * esplicito$
("#$#! k
%
' hf(y
n
( t
n
!
("#$%)! k
"
' hf(y
n
8 k
%
( t
n
8 h!
("#$%%! y
n8%
' y
n
8
k k
% "
"
_
Definizione: !etodi impliciti$
1n metodo che richieda il calcolo delle funzioni f in corrispondenza di y
n8%
( t
n8%
viene
detto implicito$
Esempio:
Il seguente algoritmo (ulero back,ard! * implicito$
("#$%"! y
n8%
' y
n
8 hf(y
n8%
( t
n8%
!

9e le funzioni f sono non lineari (come avviene quasi sempre! i metodi impliciti
richiedono la soluzione di un sistema di equazioni non lineari$ ssi sono(
pertanto( molto pi? laboriosi sia in termini di tempo di calcolo che di
implementazione( rispetto a quelli espliciti$

.i? avanti verrC mostrato che i metodi impliciti hanno migliori doti di stabilitC e
permettono di utilizzare( in alcune circostanze( dei passi di integrazione( h( molto
maggiori di quelli utilizzabili con metodi espliciti$
9ono stati proposti un gran numero di algoritmi per l&integrazione di sistemi di
equazioni differenziali con le condizioni iniziali e sono possibili vari criteri per classificarli$
Dli algoritmi possono essere classificati( ad esempio( nei seguenti modi$
Sistemi di equazioni differenziali ordinarie 103

%$ In base al numero di punti t


n
interessati nella formula: One 9tep o Eulti 9tep$
"$ In base al criterio usato per ricavare la formula: mediante un&espansione in
serie di -a2lor o da un&approssimazione polinomiale$
/$ > seconda che la formula non dipenda o dipenda dal valore di y nel nuovo
punto t
n8%
: algoritmi espliciti o impliciti$
29.2 Accuratezza degli algoritmi numerici

Ogni algoritmo ha un errore locale caratteristico( che dipende dalla formula


approssimata utilizzata (Fedi Capitolo %!$ 6&errore locale viene calcolato
nell&ipotesi di assena di errori numerici nei calcoli e nei dati essendo legato solo
al modello approssimato usato$
Gui non interessa sapere in dettaglio come viene calcolato l&errore locale di un
particolare algoritmo0 * sufficiente ricordare che esso dipende da una potenza nota del passo
di integrazione$
Esempio:
6&algoritmo di Runge 3 Butta ("#$#! ("#$%%! ha un errore locale che dipende dalla potenza tre di
h ed ha perci5 un errore locale di O(h
/
!$
.er molti algoritmi * possibile esprimere l&errore locale in forma analitica$
Esempio:
6&errore locale del metodo di ulero for,ard ("#$@! * h
"
n
27(
n
!H"$ 6&errore locale del metodo di
ulero for,ard * di O(h
"
!$
9e la soluzione esatta di un&equazione differenziale ordinaria con le condizioni iniziali
("#$%! * un polinomio di ordine p:
("#$%/! 2(t! ' a
)
8 a
%
t 8 $$$ 8 a
p
t
p
ed un algoritmo risolve esattamente il problema mentre ci5 non avverrebbe se la soluzione
fosse un polinomio di ordine p8%( l&algoritmo viene chiamato di ordine p$
Definizione: Ordine di un algoritmo$
6&ordine di un algoritmo * uguale all&ordine del suo errore locale meno uno$
1n algoritmo di ordine p ha un errore locale di ordine O(h
p8%
!$
Esempio:
Il metodo di >dams 3 Iashforth seguente:
104 Capitolo 29
("#$%4!
2 2
h f 2 t f 2 t
n n
n n n n
_

| _

%
% %
/
"
J ( ( ! ( ( !K
* esatto se la soluzione dell&equazione differenziale * un polinomio del secondo ordine ed *(
quindi( un algoritmo del secondo ordine$ Il suo errore locale * uguale a :h
/
2&&&(
n
!H%" ed * di
O(h
/
!$

-alvolta * possibile confondersi fra l&ordine di un algoritmo e l&ordine di


grandezza dell&errore locale$ "#errore locale $ sempre di un ordine maggiore di
quello dell#ordine dell#algoritmo$
Esempio:
Il metodo di Runge 3 Butta del quarto ordine ha un errore locale di O(h
:
!$

-eoricamente un algoritmo di ordine pi? elevato ha un errore locale minore e


permette un passo di integrazione pi? grande$
; importante ricordare che ci5 * vero solo se la soluione esatta soddisfa tutte le
propriet richieste dal particolare algoritmo utiliato0 ad esempio( se il metodo *
di ordine p( essa deve essere derivabile p8% volte$
Da un punto di vista pratico bisogna scegliere un ordine di compromesso (che dipende
dal problema e dall&algoritmo utilizzato!: l&ordine non deve essere troppo basso per evitare
errori locali troppo grandi e perci5 passo di integrazione troppo piccolo0 non deve neppure
essere troppo grande per evitare che l&algoritmo presenti problemi numerici$ In molti casi
l&ordine ottimale * 43:$ Con problemi tranquilli l&ordine pu5 salire( mentre con problemi pi?
difficili deve scendere$
Definizione: %onvergena di un algoritmo$
1n algoritmo * convergente se al tendere del passo di integrazione( h( a zero la
soluzione diventa sempre pi? accurata nell&ipotesi di assenza di errori di
arrotondamento$
-utti i metodi di interesse pratico sono convergenti$
29.3 Condizionamento del problema
=el Capitolo % si * visto che * importante effettuare una distinzione fra il condiionamento
(buono o cattivo! di un pro&lema e la sta&ilit o insta&ilit degli algoritmi numerici utilizzati
per risolvere il problema stesso$
Sistemi di equazioni differenziali ordinarie 105

9u molti libri viene usato il termine sta&ilit anche quando ci si riferisce al


condizionamento delle equazioni differenziali$ >ttenzione a non confondersiL
.er comprendere questo importante argomento * conveniente considerare( per il
momento( una sola equazione differenziale:
("#$%:! 2& ' f(2( t! 2(t
)
! ' 2
)
6&equazione ("#$%:! * &en condiionata se una piccola perturbazione della funzione f
eHo della condizione iniziale 2
)
:
("#$%<! 2& ' f(2( t! 8 .(t! 2(t
)
! ' 2
)
8
genera una soluzione (ottenuta sena errori numerici! che si discosta di poco da quella
teorica del precedente problema ("#$%:!$
9e( viceversa( una piccola perturbazione genera una soluzione che si discosta in modo
sostanziale dalla precedente si ha un&equazione mal condiionata$
Esempio:
9i consideri l&equazione differenziale:
2& ' #2 3 %)e
3t
2()! ' %
la cui soluzione generale *
2 ' e
3t
8 c e
#t
6a condizione iniziale richiede che c sia )$ 6a soluzione analitica dell&equazione *( perci5:
2 ' e
3t

Guesto problema * mal condizionato poichM * sufficiente una minima perturbazione delle
condizioni iniziali per ottenere una soluzione completamente diversa$ Eodificando la
condizione iniziale nel seguente modo:
2()! ' %$)))%
si ottiene la soluzione:
2 ' e
3t
8 $)))% e
#t
6e due soluzioni a t ' " valgono $%AA<%%@ la prima e la //%$"/ seconda$
; utile visualizzare geometricamente il problema$ 6a soluzione di un&equazione
differenziale consiste di una particolare curva univocamente determinata dall&equazione
differenziale e dalle condizioni iniziali$ >l variare delle condizioni iniziali si ottengono
differenti curve$
In Nigura "#$% viene rappresentato un problema altamente mal condizionato: sono
sufficienti piccole perturbazioni delle condizioni iniziali o piccoli scostamenti dalla soluzione
per ottenere curve (ricavate senza errore numerico! completamente diverse dalla soluzione
cercata$
106 Capitolo 29
Figura 29.1
In Nigura "#$"" si ha la situazione opposta e il problema * ben condizionato: tutte le
curve della famiglia convergono verso un&unica soluzione$
Figura 29.2

9i noti che il buono o cattivo condizionamento dipende dalla direzione usata per
integrare l&equazione differenziale: una equazione ben condizionata in una
direzione risulta mal condizionata nella direzione opposta$
=ei casi pratici sono possibili varie situazioni intermedie o estreme0 * anche possibile
che un&equazione differenziale sia mal condizionata in una porzione dell&intervallo e ben
condizionata in un&altra$
Sistemi di equazioni differenziali ordinarie 107

; importante rendersi conto che il condiionamento di una equazione


differenziale non dipende dalla soluione dell&equazione( ma da come sono
disposte tutte le possi&ili soluioni dell&equazione stessa( per diverse condizioni
iniziali$
Esempio:
6e equazioni differenziali:
2& ' #2 3 %)e
3t
2()! ' %
2& ' 3e
3t
2()! ' %
2& ' 32 2()! ' %
hanno la stessa soluzione:
2(t! ' e
3t
.erturbando la condizione iniziale a:
2()! ' %$)))%
si ottiene( nel primo caso:
2(t! ' e
3t
8 $)))%e
#t
nel secondo:
2(t! ' e
3t
8 $)))%
e( nel terzo:
2(t! ' e
3t
8 $)))%e
3t
=el primo caso la nuova soluzione si allontana molto dalla precedente( nel secondo caso rimane
a distanza costante e nel terzo tende a ritornare sulla precedente curva$
9i consideri l&equazione differenziale ("#$%:!$ 6a tangente ad una curva( 2(t!( soluzione
dell&equazione ("#$%:!( in un punto J2( tK * 2& ' f(2(t!$ 6a variazione della tangente al variare
di 2 mantenendo t costante * data dalla derivata f
2
$ 9e ci si trova nella situazione della Nigura
"#$" all&aumentare della 2 (mantenendo t costante! la tangente passa da un valore negativo ad
uno ancora pi? negativo: in questo caso f
2
ha( perci5( un valore negativo$ 9e( invece(
all&aumentare di 2 si passa da un valore della tangente positivo ad uno ancora pi? positivo si *
nella situazione della Nigura "#$% e f
2
* positivo$

>ffinchM l&equazione ("#$%:! sia &en condiionata la derivata f


2
deve essere
negativa : infatti solo in quel caso le curve della famiglia tendono a ricadere sulla
soluzione cercata$ 9e f
2
risulta positiva si ha un&equazione mal condiionata in
quanto le curve tendono a divergere dalla soluzione$
Esempio:
6&equazione
2& ' 3%)2
* ben condizionata poichM f
2
' 3%) O )
mentre l&equazione:
2& ' %)2
* mal condizionata essendo f
2
' %) P )
108 Capitolo 29

Il condizionamento di un sistema di equazioni differenziali:


("#$%@! y& ' f(y( t!
viene studiato attraverso gli autovalori o
%
( o
"
( $$ ( o
=
dello Qacobiano J dove
("#$%A!
Q
f
2
iR
i
R
|

Dli autovalori o
%
( o
"
( $$ ( o
=
possono essere( nel caso generale( numeri complessi$ 9e la
parte reale di un autovalore * grande e positiva il sistema * mal condizionato$ 9e tutti gli
autovalori hanno la parte reale negativa il sistema * ben condizionato$
29.4 Stabilit degli algoritmi numerici
.er rendere il ragionamento semplice * opportuno considerare l&algoritmo di ulero applicato
ad una sola equazione differenziale:
("#$%#! 2
n8%
' 2
n
8 h
n
f(2
n
( t
n
!
9e questa relazione viene sottratta all&espansione in serie di -a2lor si ottiene:
("#$")! 2(t
n8%
! 3 2
n8%
' 2(t
n
! 3 2
n
8 h
n
Jf(2(t
n
!( t
n
! 3 f(2
n
( t
n
!K 8 h
"
n
27(
n
!H"
6a differenza a sinistra dell&equazione ("#$")! rappresenta l& errore glo&ale nel punto
t
n8%
$ sso * dovuto (in assena di errori numerici di arrotondamento! a due cause:
%$ 'rrore locale: h
"
n
27(
n
!H"$ Come detto precedentemente e nel Capitolo % l&errore
locale * quello dovuto al modello approssimato utilizzato$ sso viene stimato supponendo di
eseguire i calcoli senza errori numerici e supponendo di conoscere esattamente i dati
necessari: in questo caso si suppone di conoscere il valore corretto di 2 nel punto t
n
( 2(t
n
!$
"$ 'rrore di propagaione: poichM nel punto t
n
non si conosce il valore esatto 2(t
n
!( ma
una sua approssimazione( 2
n
( si ha una seconda fonte di errore( indipendente dall&errore
locale$ Guesto errore pu5 essere stimato utilizzando il teorema della media che afferma: data
una funzione _ (+! e due suoi valori( _ (+
>
!( _ (+
I
!( calcolati in corrispondenza di due punti
distinti( +
>
e +
I
( esiste un punto( ( interno all&intervallo J+
>
( +
I
K( in cui la funzione ha
derivata uguale alla secante ottenuta con i precedenti punti:
Sistemi di equazioni differenziali ordinarie 109
("#$"%!
I >
I >
(+ !3 (+ !
& ( !
+ 3+


=
Risulta( pertanto:
("#$""! f(2(t
n
!( t
n
! 3 f(2
n
( t
n
! ' f
2
(z!(2(t
n
! 3 2
n
! t
n
O z O t
n8%
e( quindi:
("#$"/! rrore Dlobale a t
n8%
' (% 8 h
n
f
2
! rrore Dlobale a t
n
8 rrore 6ocale
9e risulta:
("#$"4! S % 8 h
n
f
2
S P %
l&algoritmo di ulero * insta&ile poichM l&errore tende ad aumentare da un&iterazione ad
un&altra$ .er rendere l&algoritmo stabile bisogna scegliere un passo di integrazione h
n
tale per
cui risulti sempre:
("#$":! S % 8 h
n
f
2
S O %
Il fattore (% 8 h
n
f
2
! * il fattore di amplificaione dell&errore globale( x ( caratteristico
dell&algoritmo di ulero (Fedi Capitolo %!$

; importante non confondere il condizionamento di un&equazione (o di un


sistema! differenziale e la stabilitC dell&algoritmo usato per risolverla e( di
conseguenza( i rispettivi criteri di analisi$
1n&equazione * mal condizionata se:
("#$"<! f
2
P )
In questo caso l&algoritmo di ulero risulta sempre instabile( se h
n
P )$

=on * molto importante verificare la sta&ilit di un algoritmo quando l&equazione


differenziale * mal condiionata( poichM in tal caso * il problema stesso che * stato
impostato male$ Ci5 che serve * verificare in quali condizioni l&algoritmo risulta
sta&ile per problemi &en condiionati$
9e l&equazione * ben condizionata risulta:
("#$"@! f
2
O )
110 Capitolo 29
In questo caso l&algoritmo di ulero risulta stabile solo se:
("#$"A! h
n
O 3
"
f
2
Esempio:
Risolvere l&equazione differenziale:
2& ' 3%)))2 8 %))) 2()! ' %)
con il metodo di ulero$
6&equazione * molto ben condizionata poichM risulta f
2
' 3%))) e ha come soluzione analitica:
2 ' % 8 #e
3%)))t
9e viene usato un passo di integrazione superiore a:
h ' $))"
il metodo di ulero diventa instabile$ 9e t * sufficientemente grande la soluzione * 2 ' %
costante$ .oichM il metodo di ulero * esatto per polinomi di grado minore o uguale a uno(
l&errore locale diventa nullo per valori di t sufficientemente grandi$ .er t ' % si * sicuramente in
questa situazione0 perci5 per quanto riguarda l&errore locale si potrebbe prendere un passo di
integrazione comunque grande( ad esempio h ' %$ Con tale passo l&algoritmo risulta instabile
poichM maggiore di $))" ed * sufficiente una piccola perturbazione per inficiare i calcoli$ >d
esempio se 2(%! ' %$)))))% si ottiene:
t y
1 +1.0000001 10
+00
2 +0.9998809 10
+00
3 +1.1189712 10
+00
4 -1.1785201 10
+02
5 +1.1873423 10
+05

Con algoritmi diversi da quello di ulero la precedente analisi * pi? complessa$


Guello che importa sapere * che per i diversi algoritmi si pu5 scrivere una
relazione analoga a quella dell&algoritmo di ulero( ossia:
("#$"#! rrore Dlobale a t
n8%
' xrrore Dlobale a t
n
8 rrore 6ocale
dove x* il fattore di amplificaione dell&algoritmo$
Esempio:
6&algoritmo del trapeio detto anche di Crank3=icolson o( anche( di >dams 3 Eoulton del
secondo ordine:
("#$/)! 2
n8%
' 2
n
8 h
n
Jf(2
n
( t
n
! 8 f(t
n8%
( t
n8%
!KH"
ha un errore locale di O(h
/
! e un fattore di amplificazione uguale a:
("#$/%! x'
% :
% :
_

$
$
hf
hf
2
2
Definizione: Sta&ilit di un algoritmo$
9e il fattore di amplificazione * minore di uno l&algoritmo * sta&ile$ In caso contrario
risulta insta&ile$
Sistemi di equazioni differenziali ordinarie 111

=el caso speciale di un&equazione differenziale del tipo:


("#$/"! 2& ' o2
si ha:
("#$//! f
2
' o
.er questa equazione il fattore di amplificazione * una funzione (che dipende
dall&algoritmo usato! del prodotto ho$
Esempio:
6&algoritmo di ulero applicato alla ("#$/"! ha un fattore di amplificazione uguale a:
("#$/4! x' % 8 ho
e risulta stabile se per oO ) e h P ) risulta
("#$/:! S hoS O "
Esempio:
6&algoritmo di ulero back,ard ("#$%"!:
y
n8%
' y
n
8 hf(y
n8%
( t
n8%
!
applicato alla ("#$/"! ha un fattore di amplificazione uguale a:
("#$/<! x'
%
% ho
e risulta stabile anche per h tendente all&infinito quando oO )$

.er studiare la stabilitC di un algoritmo applicato ad un sistema di equazioni


differenziali ("#$%! bisogna prendere in considerazione lo Qacobiano J$
Esempio:
Il fattore di amplificazione per l&algoritmo di ulero applicato ad un sistema di equazioni del
tipo ("#$%! * dato da:
("#$/@! SS I 8 h
n
J
n
SS
ossia * una norma della matrice (I 8 h
n
J
n
!$
9e si indica con o
n
il massimo autovalore della matrice Qacobiana( J
n
( l&algoritmo di ulero
risulta stabile se risulta:
("#$/A! S % 8 h
n
o
n
S O %
9i osservi che o
n
pu5 essere un numero complesso e pu5 variare nel corso della integrazione$
Esempio:
Il fattore di amplificazione per l&algoritmo del trapezio applicato ad un sistema di equazioni del
tipo ("#$%! * dato da:
("#$/#! SS (I 3 h
n
J
n
!
3%
(I 8 h
n
J
n
! SS
6&algoritmo del trapezio risulta stabile se risulta:
112 Capitolo 29
("#$4)!
% :
% :
_

$
$
h
h
n n
n n
o
o
O %
dove viene indicato con o
n
il massimo autovalore dello Qacobiano$

.oichM non * possibile studiare la stabilitC di ogni algoritmo applicato ad un


qualsiasi problema * diventata prassi comune usare una singola equazione lineare
del tipo:
("#$4%! 2& ' o2
in cui il parametro o* un numero complesso (in modo da simulare un autovalore
di uno Qacobiano!$
.er ogni algoritmo * possibile ricavare il dominio( nel piano complesso del prodotto
:' ho( che separa i punti per cui il fattore di amplificazione * minore di uno (l&algoritmo qui
risulta stabile! da quelli per cui risulta maggiore di uno (l&algoritmo risulta instabile!$
Esempio:
Il metodo di ulero risulta stabile se il prodotto ho* interno al cerchio (nel piano complesso! di
raggio unitario con centro sull&asse reale in 3%$ Come caso particolare( se o* un numero reale(
l&algoritmo di ulero risulta stabile se 3" ho )$
Esempio:
6&algoritmo Eulti 9tep di >dams3Iashforth esplicito del terzo ordine:
("#$4"! y
n8%
' y
n
8
h
%"
J"/f(y
n
( t
n
! 3 %<f(y
n3%
( t
n3%
! 8 :f(y
n3"
( t
n3"
!K
ha la regione di stabilitC che risulta dalla Nigura "#$/$
6&algoritmo di >dams3Eoulton implicito del terzo ordine:
("#$4/! y
n8%
' y
n
8
h
%"
J:f(y
n8%
( t
n8%
! 8 Af(y
n
( t
n
! 8 f(y
n3%
( t
n3%
!K
ha( invece( la regione di stabilitC che risulta in Nigura "#$<$
Sistemi di equazioni differenziali ordinarie 113
Figura 29.
6a regione che presenta maggiore interesse( dal punto di vista della stabilitC di un
algoritmo( * quella per cui la parte reale di o( Re(o!( * minore di zero (perchM si desidera
verificare se l&algoritmo * stabile quando l&equazione * ben condizionata!$
In generale si possono dare le seguenti regole generali$

%$ > paritC di ordine risulta pi? stabile un metodo implicito rispetto ad uno
esplicito$
"$ 6a stabilitC diminuisce al crescere dell&ordine di un algoritmo$
Definizione: (lgoritmi ()sta&ili$
1n algoritmo viene detto >3stabile se il fattore di amplificazione risulta minore di uno
per ogni valore positivo di h quando l&algoritmo * applicato ad un problema ben
condizionato (avente parte reale di o( Re(o!( minore di zero!$
1n algoritmo >3stabile ha come dominio di stabilitC tutto il semipiano di sinistra$
Esempio:
6&algoritmo del trapezio e di ulero back,ard sono entrambi >3stabili: per entrambi xrisulta
minore di uno per hotendente a meno infinito$
> prima vista pu5 sembrare che l&algoritmo del trapezio sia superiore sotto tutti gli
aspetti al metodo di ulero back,ard: infatti sono entrambi >3stabili( per entrambi *
necessario risolvere un sistema non lineare rispetto a y
n8%
( ma l&algoritmo del trapezio * di
ordine due mentre quello di ulero back,ard * solo del primo ordine$ Deve per5 essere preso
in considerazione un ulteriore aspetto$
Definizione: (lgoritmi fortemente ()sta&ili$
1n algoritmo * fortemente >3stabile se il fattore di amplificazione tende a zero
quando hotende a meno infinito$
Esempio:
114 Capitolo 29
6&algoritmo di ulero back,ard * fortemente >3stabile mentre l&algoritmo del trapezio no$ Infatti
per quest&ultimo il fattore di amplificazione tende a 3% al tendere di hoa meno infinito$
.er comprendere l&importanza( di questo concetto si consideri l&equazione di riferimento
("#$4%! con la condizione iniziale 2()! ' 2
)
$
>l tendere di t all&infinito la soluzione deve tendere a zero (con valori di Re(o O )!$
9e la condizione iniziale viene perturbata in modo da avere 2
)
8 l&errore commesso
con l&algoritmo del trapezio si propaga secondo la relazione:
("#$44!
%
"
%
"
n
n
h
e
h


+

=


n )
9e SRe(o!S * grande( il fattore di amplificazione (ossia il valore della frazione
nell&equazione precedente! tende a 3% e l&errore e
n
non tende a zero: qualunque perturbazione
viene propagata senza essere smorzata$
Ficeversa( nel caso dell&algoritmo di ulero back,ard( si ha:
("#$4:!
%
%
n
n
e
h


n )
In questo caso anche per valori di SRe(o!S molto grandi e
n
tende molto rapidamente a
zero$

Dli algoritmi One Step risultano sempre sta&ili per h tendente a zero$ =el caso di
algoritmi !ulti Step il problema della stabilitC risulta ulteriormente complicato
dalla presenza di soluioni parassite( che possono prevalere sulla soluzione vera
del problema e rendere l&algoritmo insta&ile anche per h tendente a ero$
.er comprendere il problema si consideri l&algoritmo !ulti Step del punto di mezzo:
("#$4<! y
n8%
' y
n3%
8 "hf(y
n
( t
n
!
che applicato alla solita equazione di riferimento ("#$4%! diventa:
("#$4@! 2
n8%
' 2
n3%
8 "ho2
n
n %
6a soluzione di questa equazione alle differenze finite * data dalla relazione:
("#$4A! 2
n
' b
%
r
%
n
8 b
"
r
"
n
n )
Sistemi di equazioni differenziali ordinarie 115
dove r
%
e r
"
soddisfano l&equazione caratteristica:
("#$4#! r
n8%
' r
n3%
8 "hor
n
ossia:
("#$:)! r
"
' % 8 "hor
e valgono rispettivamente:
("#$:%! r
%
' ho8 r
"
' ho3
I valori di b
%
e b
"
vengono ricavati imponendo le due condizioni:
("#$:"! b
%
8 b
"
' 2
)
("#$:/! b
%
r
%
8 b
"
r
"
' 2
%
9e h tende a zero( la relazione ("#$4A! diventa:
("#$:4! 2
n
' b
%
e+p(ot
n
! 8 b
"
(3%!
n
e+p(3ot
n
! n )
Il primo termine tende correttamente alla soluzione dell&equazione differenziale
originaria mentre il secondo tende ad aumentare esponenzialmente (se oO ) ossia con
equazioni ben condizionate! e ad alternare il segno$ 6a causa di ci5 * legata al fatto che
l&equazione alle differenze finite ("#$4@! * di secondo grado mentre l&equazione differenziale
originaria era del primo ordine0 pertanto per risolvere l&equazione alle differenze finite
("#$4@! sono necessarie due condizioni( 2
)
( 2
%
( mentre era sufficiente una sola condizione per
l&equazione differenziale originaria( 2
)
$
6&equazione alle differenze finite risulta( quindi( somma di due termini di cui solo il
primo deriva dall&equazione differenziale originaria( mentre il secondo risulta spurio e
insta&ile$

9i noti che questa forma di instabilitC non diminuisce al tendere di h a zero$ >l
contrario l&errore commesso in corrispondenza di un assegnato valore t
N
aumenta
al diminuire del passo di integraione poichM aumenta il numero di volte in cui
viene eseguito un calcolo instabile$
Esempio JRice (%#A/!K:
6&equazione differenziale:
2 2
+
+
f + 2 & $ ( ( ! | _

| ):
4
%
"
"
2 e ( ! % % |
* ben condizionata e la sua soluzione analitica *:
116 Capitolo 29
2 e
+
+
|
%
"
"
%
9upponendo di conoscere i valori esatti di 2 nei punti + ' % 8 h( + ' % 8 "h( + ' % 8/h oltre che
in + ' % * possibile usare la seguente formula di integrazione (formula a : punti alle differenze
centrali!:
2(+ 8 4h! ' 2(+! 3 A2(+ 8 h! 3 %"f(+ 8 "h(2(+ 8 "h!! 8 A2(+ 8 /h!
Guesta formula ha caratteristiche di alta precisione (piccolo errore locale!( ma risulta instabile
per risolvere questo problema( qualunque sia il passo( h( di integrazione$ > differenza di quello
che si pu5 credere al diminuire del passo di integrazione le cose peggiorano$ Infatti( in questo
caso( l&instabilitC dell&algoritmo * legata solo al numero di passi effettuati$ Dopo cinque passi di
integrazione vengono perse circa cinque cifre significative( dopo ") passi circa %A cifre ecc$

>ffinchM un algoritmo !ulti Step sia stabile devono essere trascura&ili le


soluzioni parassite rispetto alla soluzione vera del problema$ .i? sono le
informazioni di punti precedenti che vengono utilizzate e pi? sono le soluzioni
parassite che vengono introdotte$
Esempio:
Il metodo di >dams3Iashforth del quarto ordine applicato all&equazione di riferimento ("#$4%!
produce l&equazione alle differenze finite del quarto ordine:
("#$::! 2
n8%
' 2
n
8
ho
"4
(::2
n
3 :#2
n3%
8 /@2
n3"
3 #2
n3/
!
che ha una soluzione generale del tipo:
("#$:<! 2
n
' C
%
r
%
n
8 C
"
r
"
n
8 C
/
r
/
n
8 C
4
r
4
n
sso ha( pertanto( tre soluzioni parassite che si sovrappongono alla soluzione vera del
problema$ .er h tendente a zero( la prima radice tende alla soluzione dell&equazione
differenziale originaria( mentre le altre tendono a:
("#$:@! S r
i
S O % i ' "(4
6e soluzioni parassite non creano( pertanto( problemi di instabilitC$
Dli algoritmi Eulti 9tep hanno una ulteriore limitazione per quanto riguarda la
stabilitC$

In un famoso teorema Dahlquist JDahlquist (%#</!K ha dimostrato che non *


possibile trovare algoritmi Eulti 9tep che siano >3stabili e( naturalmente( neppure
fortemente >3stabili( con ordine maggiore di due$
Fedremo pi? avanti come sia possibile aggirare in qualche modo questa limitazione$

=ella precedente trattazione non si * tenuto conto dell&influenza degli errori di


arrotondamento sull&errore globale$ =ella maggior parte dei casi questo errore
risulta trascurabile rispetto all&errore locale$ .u5 per5 diventare importante
quando per qualche motivo il numero di passi di integrazione * molto elevato$
Sistemi di equazioni differenziali ordinarie 117
In particolare si hanno due situazioni in cui non si pu5 trascurare l&errore di
arrotondamento$
%$ Guando il metodo ha un errore locale grande (ad esempio il metodo di ulero! vi * la
necessitC di utilizzare un passo di integrazione molto piccolo e( quindi( il numero di passi di
integrazione pu5 diventare eccessivo$
"$ Guando viene richiesto il valore delle variabili y in corrispondenza di punti( t
i
( molto
pi? fitti di quelli necessari per la precisione del metodo utilizzato$ Guesta situazione si
presenta spesso in problemi di grafica$ Fedremo pi? avanti che alcuni algoritmi (Eetodi
Eulti Falore! possono aggirare questa difficoltC poichM permettono di svincolare il passo di
integrazione effettivamente usato dai punti t
i
richiesti dall&utente$
29.5 Sistemi stiff
1n sistema di equazioni differenziali per cui tutti gli autovalori dello Qacobiano hanno la
parte reale negativa *( come abbiamo visto pi? sopra( ben condizionato$
In molte applicazioni pratiche l&integrazione di sistemi ben condizionati(
effettuata con metodi tradiionali( richiede un passo di integrazione
straordinariamente piccolo per garantire la stabilitC dell&algoritmo utilizzato$ -ale
passo di integrazione risulta molto inferiore a quello che sarebbe necessario a
garantire una ragionevole precisione del metodo$ In questi casi si * in presenza di
un sistema stiff$
.er comprendere che cosa rende stiff un sistema si consideri il seguente esempio J9toer(
Iulirsch (%#A)!K:
2 2 2 &
%
% "
%
% "
"
" "
|
_
_
o o o o

2 2 2 &
"
% "
%
% "
"
" "
|

_
_ o o o o
la cui soluzione generale *:
2
%
(t! ' C
%
e+p(o
%
t! 8 C
"
e+p(o
"
t!
2
"
(t! ' C
%
e+p(o
%
t! 3 C
"
e+p(o
"
t!
9e il sistema viene risolto utilizzando il metodo di ulero si ottiene:
(2
%
!
n
' C
%
(% 8 ho
%
!
n
8 C
"
(% 8 ho
"
!
n
(2
"
!
n
' C
%
(% 8 ho
%
!
n
3 C
"
(% 8 ho
"
!
n
118 Capitolo 29
>ffinchM l&algoritmo sia stabile il passo di integrazione deve essere tale per cui:
S % 8 ho
%
S O % e S % 8 ho
"
S O %
9i supponga di avere o
%
' 3% e o
"
' 3%))))0 il sistema *( perci5( ben condizionato poichM
o
%
O ) e o
"
O )$ Inoltre( come si vede dalla soluzione esatta del problema( il termine C
"
e+p(o
"
t!
gioca un qualche ruolo solo per t molto piccolo$ 1gualmente il passo di integrazione viene
condizionato dall&autovalore o
"
anche quando t * grande in quanto deve risultare soddisfatta
anche la relazione S % 8 ho
"
S O %$ 1tilizzando il metodo di ulero si ha( in circostanze come
questa( la situazione paradossale di dover utilizzare un passo di integrazione piccolissimo a
causa di un termine di nessuna importanza$ 6o stesso problema si manifesta con molti altri
algoritmi( ad esempio con il classico Runge3Butta del quarto ordine o con i metodi Eulti
9tep espliciti$

1n sistema differenziale ben condizionato (avente la parte reale di tutti gli


autovalori dello Qacobiano negativa! risulta stiff se il rapporto tra il massimo e il
minimo autovalore * grande$
Da un punto di vista pratico si ha un sistema stiff quando in un processo fisico si hanno
equazioni differenziali con diverse scale di tempo$ >d esempio quando si hanno reazioni
chimiche che hanno vita brevissima rispetto ad altre e si desidera studiare sia il transitorio
delle reazioni pi? veloci che l&andamento di quelle pi? lente$

=on esiste una definizione esatta( unanimemente accettata( per il concetto di


problemi stiff$
1n valore elevato del rapporto fra il massimo e il minimo autovalore dello Qacobiano
individua una situazione stiff0 ma anche un modesto valore del massimo autovalore pu5
provocare problemi se il sistema o la singola equazione viene integrata su di un intervallo di
grandi dimensioni$
Esempio:
6&equazione differenziale:
2& ' 32 2()! ' %
non presenta problemi se l&intervallo di integrazione Jt
)
( t
N
K * relativamente piccolo$ Ea se il
valore di t
N
* molto grande( ad esempio( %)
<
gli algoritmi che non siano fortemente >3stabili o
non adatti a risolvere problemi stiff dovrebbero utilizzare passi di integrazione molto piccoli
anche se hanno un errore locale praticamente nullo$

9i noti che non va confuso il concetto di problema stiff con quello di difficile
soluzione$ Guando un problema * stiff non deve essere utilizzato un algoritmo
qualsiasi( bensT uno studiato per questo scopo$
Sistemi di equazioni differenziali ordinarie 119
9eguendo l&analisi di Dear JDear (%#@%!K un algoritmo * adatto a risolvere problemi stiff
se nelle tre regioni mostrate in Nigura "#$4 gode delle seguenti proprietC$
Figura 29.!
Regione I$ In questa regione risulta hRe(o! O 3o $ In questa regione l&algoritmo deve
risultare sta&ile$ 9e il valore di o fosse uguale a zero l&algoritmo sarebbe >3stabile$ Come
detto precedentemente Dahlquist ha dimostrato che non * possibile avere algoritmi Eulti
9tep di ordine superiore a due che siano >3stabili$
Rilassando la richiesta di >3stabilitC per valori negativi e ragionevolmente piccoli(
ma non nulli( di o ( Dear ha permesso di trovare algoritmi Eulti 9tep di ordine
superiore a due$
Regione II$ In questa regione risulta 3oO hRe(o! O )$ In questa regione l&algoritmo deve
permettere di descrivere bene anche il transitorio delle componenti pi? rapidamente variabili
(quelle aventi un valore Re(o! OO )!$ .ertanto in questa regione l&algoritmo deve risultare
sta&ile ed accurato$
Regione III$ In questa regione risulta ) O hRe(o! O o$ In questa regione il sistema *
moderatamente mal condizionato e l&algoritmo deve risultare accurato$
In tutte e tre le regioni( inoltre( l&algoritmo( se Eulti 9tep( deve essere tale per cui
risultino trascura&ili le soluzioni parassite rispetto alla soluzione vera del problema
6&area esterna a queste tre regioni( nel caso di problemi stiff( interessa solo in casi
eccezionali e( pertanto( in questa regione non * molto importante se l&algoritmo * accurato o
stabile$
.er riassumere( un algoritmo * adatto a risolvere problemi stiff se gode delle seguenti
proprietC$
120 Capitolo 29
%$ Guando * importante la stabilitC l&algoritmo risulta stabile$
"$ Guando viene richiesta una buona precisione l&algoritmo risulta accurato$
29. Controllo del passo di integrazione
=ei moderni programmi di calcolo il passo di integrazione viene modificato in modo da
adeguarlo alle esigenze locali del problema$ =ormalmente la scelta del valore di h
n
viene
effettuata in modo da controllare l&errore locale dell&algoritmo( $ .i? avanti viene
considerato il problema della stima dell&errore locale per i vari algoritmi e studiata la
strategia per variare h
n
in base al valore di $
In questa sede interessa analizzare qualitativamente il seguente problema: l&errore
globale * composto dalla somma dell&errore locale e dell&errore di propagazione$ Come *
possibile controllare l&errore globale basandosi solo sull&errore localeU
; opportuno considerare l&equazione di riferimento ("#$4%! con oO ) e integrata con
l&algoritmo di ulero$
6&errore locale del metodo di ulero *:
("#$:A!
"
7
"
* h
' =
e( perci5( diminuisce al crescere di t( poichM la derivata seconda vale:
("#$:#! 27 ' o
"
e+p(ot!
e oO )$
Ea per garantire la stabilitC dell&algoritmo( ossia per controllare anche la porzione
dell&errore globale dovuta alla propagazione( si deve fare in modo che:
S ho8 % S O %
e( quindi( il passo di integrazione non pu5 essere ridotto oltre un certo limite$ 9e oOO ) il
fattore di amplificazione del problema * grande e il passo di integrazione deve essere
mantenuto molto piccolo$

9e l&errore locale fosse stimato in modo esatto (introducendo l&espressione


analitica della derivata che compare nell&errore locale( in questo caso la derivata
seconda! si avrebbero dei problemi nel controllo dell&errore globale poichM per
elevati valori di t verrebbero permessi valori molto piccoli di h$
Sistemi di equazioni differenziali ordinarie 121
9e( come avviene normalmente in un programma di calcolo( l&errore viene
stimato numericamente si hanno buone probabilitC che il valore di venga
sovrastimato proprio a causa dell&instabilitC dell&algoritmo$
.er mantenere semplice la discussione si supponga di stimare l&errore attraverso la
formula ("#$:A! in cui la derivata seconda viene calcolata mediante la differenza fra due
valori di 2&:
("#$<)!
2
2 2
h
n n
7
& &


%
In questo caso se si * utilizzato il metodo di ulero esplicito si hanno buone probabilitC
che l&uno o l&altro o entrambi i valori di 2& appartengano a curve diverse dalla soluzione
esatta e( se oOO )( sono molto diversi da quelli esatti$ .ertanto( il valore di 27 stimato risulta
molto maggiore di quello esatto e( di conseguenza( risulta sovrastimato e il passo di
integrazione( h( deve essere mantenuto molto piccolo$
9e si fosse utilizzato il metodo di ulero back,ard( implicito( i due valori di 2&
sarebbero molto piccoli e il passo di integrazione potrebbe essere mantenuto grande$
Guesta discussione( anche se qualitativa( mostra che il controllo del solo errore locale(
di solito( permette di mantenere il passo di integrazione entro la zona di stabilitC
dell&algoritmo dal momento che( appena esce da tale zona( il valore di viene sovrastimato$

=on va dimenticato che non si ha alcuna garanzia che ci5 sia sempre vero:
talvolta il controllo pu5 risultare inadeguato e l&algoritmo diventare instabile$
29.! "etodi di #unge$%utta espliciti
.er comprendere le basi matematiche dei metodi di Runge3Butta * utile considerare il caso
relativamente semplice di un metodo del secondo ordine esplicito applicato ad una sola
equazione del primo ordine:
("#$<%! 2& ' f(2( t!
In questo caso viene utilizzata la seguente formula ricorrente:
("#$<"! 2
n8%
' 2
n
8 ,
%
k
%
8 ,
"
k
"
dove:
("#$</! k
%
' hf(2
n
( t
n
!
122 Capitolo 29
("#$<4! k
"
' hf(2
n
8 ak
%
( t
n
8 bh!
I parametri a( b( ,
%
( ,
"
vengono scelti in modo da soddisfare al meglio un&espansione in
serie di -a2lor della soluzione 2(t!:
("#$<:! 2(t
n8%
! ' 2(t
n
! 8 h2&(t
n
! 8
h
"
"
27(t
n
! 8 O(h
/
! '
2(t
n
! 8 hf(2(t
n
!( t
n
! 8
h
"
"
(f
t
8 ff
2
!
n
8 O(h
/
!
9e si espande in serie di -a2lor la funzione f(2
n
8 ak
%
( t
n
8 bh! si ottiene:
("#$<<! f(2
n
8 ak
%
( t
n
8 bh! ' f(2
n
( t
n
! 8 ak
%
f
2
8 bhf
t
8 O(h
"
!
Dalla relazione ("#$<"! si ottiene perci5:
("#$<@! 2
n8%
' 2
n
8 (,
%
8 ,
"
!hf
n
8 ,
"
h
"
(aff
2
8 bf
t
!
n
8 O(h
/
!
Confrontando la relazione("#$<@! con la ("#$<:! si ottiene:
("#$<A! ,
%
8 ,
"
' %
("#$<#! ,
"
a ' )$:
("#$@)! ,
"
b ' )$:
.oichM si hanno tre equazioni in quattro incognite esistono infinite possibilitC di scelta
dei quattro parametri$ I diversi metodi di Runge3Butta del secondo ordine espliciti si
distinguono per come sfruttano questo grado di libertC$
Esempio:
1na possibile scelta *:
,
%
' ,
"
' $: a ' b '%
da cui:
k
%
' hf(2
n
( t
n
!
k
"
' hf(2
n
8 k
%
( t
n
8 h!
2
n8%
' 2
n
8
k k
% "
"
_
6o stesso procedimento viene utilizzato per metodi di ordine superiore$ >nche in questo
caso si hanno dei gradi di libertC che vengono sfruttati per ottenere metodi con buone doti di
precisione e di stabilitC$ 6e formule sono immediatamente estendibili al caso di sistemi di
equazioni ("#$%!: in tal caso * sufficiente scrivere le k
i
come vettori$
Il metodo di Runge3Butta che per anni * stato il pi? frequentemente usato tanto da
meritare il nome di metodo di Runge 3 Butta classico * il seguente del quarto ordine:
Sistemi di equazioni differenziali ordinarie 123
("#$@%! k
%
' hf(y
n
( t
n
!
("#$@"! k
"
' hf(y
n
8 $:k
%
( t
n
8 $:h!
("#$@/! k
/
' hf(y
n
8 $:k
"
( t
n
8 $:h!
("#$@4! k
4
' hf(y
n
8 k
/
( t
n
8 h!
("#$@:! y
n8%
' y
n
8
% " / 4
" "
<
+ + + k k k k

Eentre per i metodi di Runge 3 Butta di ordine( p( inferiore o uguale a quattro


sono sufficienti p calcoli delle funzioni f( per quelli di ordine superiore ne sono
necessari almeno p8%$
Esempio:
1n metodo di Runge 3 Butta del quinto ordine richiede almeno < calcoli delle funzioni f$

.er questo motivo e per il fatto che l&ordine quattro *( di solito( un ottimo
compromesso fra la precisione da un lato e gli inconvenienti (pi? volte
sottolineati! derivanti da una approssimazione polinomiale di grado troppo alto
vengono spesso preferiti metodi di Runge 3 Butta di ordine quattro rispetto a
quelli di ordine inferiore o superiore$
Dli algoritmi di Runge 3 Butta espliciti hanno i seguenti vantaggi$

%$ ssi risultano efficienti anche quando la soluzione non viene ben approssimata
con polinomi$
"$ 9ono( di solito( meno sensibili a possibili discontinuitC delle funzioni f del
sistema$
/$ Richiedono relativamente poca memoria$
4$ ; facile cambiare il passo di integrazione in un momento qualsiasi$
:$ Il tempo di calcolo dell&algoritmo non * elevato$ Il tempo di calcolo globale pu5(
perci5( risultare favorevole nel caso di sistemi con basso tempo di calcolo$
ssi hanno i seguenti difetti$
124 Capitolo 29

%$ Il numero di calcoli * generalmente maggiore rispetto alle altre alternative che


verranno mostrate pi? avanti$
"$ =on sono adatti per problemi stiff$
/$ 6&errore locale non * facile da calcolare$
4$ =on permettono di risolvere problemi in cui le derivate y& sono presenti in
forma implicita o comunque diversa da quella ("#$%!$
:$ =on permettono di risolvere problemi algebrico differenziali$
<$ =on si prestano bene a risolvere problemi (ad esempio di grafica! in cui viene
richiesta la soluzione per passi molto vicini ossia con valori di h molto inferiori a
quelli richiesti dalla precisione dell&algoritmo$
=ella implementazione di un programma con un metodo di tipo Runge3Butta si devono
risolvere due problemi$
%$ Calcolo dell&errore locale dell&algoritmo$
"$ 9trategia per scegliere e modificare automaticamente il passo di integrazione$
.oichM le varie alternative per il calcolo dell&errore locale possono sfruttare una comune
strategia per il controllo automatico del passo di integrazione affrontiamo per primo questo
problema$
29.!.1 Strategia per la gestione automatica del passo di
integrazione
9i consideri per il momento una sola equazione differenziale$
9i supponga di essere in grado di stimare l&errore locale dell&algoritmo di ordine p
utilizzato:
("#$@<! ' C(h!
p8%

9e risulta:
("#$@@!
l&integrazione va rifatta con un nuovo passo di integrazione pi? piccolo0 se( viceversa( l&errore
* soddisfacente( conviene aumentare il passo di integrazione$ 6a strategia per aumentare o
diminuire il passo di integrazione pu5 essere la seguente$
Il passo di integrazione( h
ne,
( deve risultare:
("#$@A! C(h
ne,
!
p8%

da cui:
("#$@#! C(h!
p8%
(h
ne,
!
p8%
' (h
ne,
!
p8%
(h!
p8%
Sistemi di equazioni differenziali ordinarie 125
e( quindi:
("#$A)! h
ne,
' h
%

p

+
Guesta formula per il calcolo del nuovo passo di integrazione va migliorata per i
seguenti motivi$
%$ ; conveniente mettere un coefficiente di sicurezza( o O %( per evitare di dover
ripetere( pi? volte e nello stesso punto( la riduzione del passo di integrazione$ 9e tale
coefficiente * troppo piccolo si ha per5 l&inconveniente di aumentare il numero totale di passi
favorevoli$ Il valore pi? frequentemente utilizzato * compreso fra )$@ e )$A$
"$ ; opportuno controllare sia l&errore assoluto che quello relativo (Fedi Capitolo %!$
1na scelta che si * dimostrata affidabile nella maggior parte delle circostanze *:
("#$A%! '
>
8
R
S2
n
S
dove
>
( rappresenta un valore assoluto e
R
un valore relativo$ Il valore di
R
va legato alla
precisione di calcolo (Fedi Capitolo %!$
6a precedente formula ("#$A)! viene( quindi( modificata nel seguente modo:
("#$A"! h
ne,
' oh
%

( n
p
*

+
+
/$ Il passo di integrazione non deve diventare troppo piccolo$ ; possibile che ci5
avvenga se sono stati scelti dei valori troppo piccoli per
>
e
R
$ ; perci5 utile effettuare un
controllo sulla scelta di tali valori ed imporre un limite inferiore al passo di integrazione al di
sotto del quale il programma esce con un messaggio di errore$
4$ Deve essere posto un limite superiore anche all&aumento del passo di integrazione per
evitare di dover ridurre immediatamente il passo stesso$
:$ =el caso di sistemi di = equazioni differenziali sono possibili diverse alternative0 ad
esempio si pu5 utilizzare il test ("#$@@! per ogni componente( calcolare per ognuna di esse
l&appropriato valore di h
ne,
e scegliere infine il valore minimo fra quelli trovati$ Da un&analisi
effettuata da Vindmarsh JVindmarsh (%#A)!K sembra preferibile usare la seguente strategia$
6&integrazione deve essere ripetuta se risulta:
("#$A/! e '
"
%
%
+
i
i
i
'
+
=


P %
e accettata in caso contrario$
=ella relazione ("#$A/! ogni componente pu5 avere un diverso valore di
>
e
R
$
Il nuovo passo di integrazione diventa:
126 Capitolo 29
("#$A4! h
ne,
' oh
%
%
e
p+
29.!.2 Stima dell&errore locale
9ono state proposte numerose alternative per calcolare l&errore locale di un algoritmo
tipo Runge 3 Butta$ 6e principali sono le seguenti$
%$ 1so di un calcolo addizionale del sistema in modo da avere un grado di libertC in pi?$
Il metodo pi? noto che sfrutta questa possibilitC * quello di Eerson$
"$ strapolazione di Richardson$
/$ Normule em&edded$
.er semplicitC di esposizione viene preso in esame il caso di una sola equazione
differenziale$ Guando si ha un sistema di equazioni differenziali bisogna usare lWequazione
("#$A/!$
29.!.2.1 Algoritmo di #unge $ %utta $ "erson
Eerson ha proposto il seguente algoritmo di ordine quattro che utilizza cinque calcoli delle
funzioni:
("#$A:! k
%
' hf(2
n
( t
n
!
("#$A<!
%
"
( ( !
/ /
n n
, h
, hf * t = + +
("#$A@!
% "
/
( ( !
< < /
n n
, , h
, hf * t = + + +
("#$AA!
/ %
4
/
( ( !
A A "
n n
, , h
, hf * t = + + +
("#$A#!
/ %
: 4
/
( " ( !
" "
n n
, ,
, hf * , t h = + + +
("#$#)!
: % 4
%
"
< / <
n n
, , ,
* *
+
= + + +
6&errore locale dell&algoritmo pu5 essere stimato nel seguente modo:
("#$#%!
% / 4 :
" # A
/)
, , , ,
'
+
=
Sistemi di equazioni differenziali ordinarie 127
29.!.2.2 'strapolazione con #ic(ardson
Guesta tecnica * stata descritta nel Capitolo %< a cui si rimanda per ulteriori dettagli$
9i indichi rispettivamente con 2
"h
e con 2
h
il valore di 2 in t
n
8 "h calcolato utilizzando(
nel primo caso( un metodo di Runge3Butta di ordine p e passo "h( e( nel secondo( lo stesso
metodo con due passi di ampiezza h ciascuno$
9e si indica con 2(t
n
8 "h! il valore cercato si ha( nel primo caso:
("#$#"! 2
"h
' 2(t
n
8 "h! 8 C("h!
p8%
e nel secondo (l&errore va moltiplicato per due perchM in questo caso vengono effettuati due
passi di integrazione!:
("#$#/! 2
h
' 2(t
n
8 "h! 8 "C(h!
p8%
6&errore locale pu5 essere( pertanto( stimato mediante la relazione:
("#$#4! ' C(h!
p8%
'
2 2
h h
p

_
"
%
" "

1na volta accettato il valore 2


h
esso pu5 essere migliorato utilizzando l&equazione
(%<$"<! che diventa:
("#$#:! 2
n8%
' 2
h
8
2 2
h h
p

"
" %
In questo modo l&ordine con cui viene calcolato 2
n8%
* p 8 %$
(ttenione: mentre 2
h
ha una precisione controllata dalla relazione ("#$#4! ci5
non * pi? vero per 2
n8%
0 non * sempre vero che al crescere dell&ordine
dell&algoritmo la soluzione sia miglioreL
29.!.2.3 Algoritmi embedded
=egli algoritmi di Runge3Butta si hanno dei gradi di libertC nella scelta dei vari
parametri che caratterizzano un particolare algoritmo$ Guesti gradi di libertC
possono essere sfruttati per fare in modo che gli stessi elementi possano essere
utilizzati per diversi algoritmi di ordine crescente$ In questo caso si dice che gli
algoritmi risultano em&edded$
9i consideri( ad esempio( il seguente algoritmo del terzo ordine:
("#$#<! k
%
' hf(y
n
( t
n
!
128 Capitolo 29
("#$#@!
%
"
( ( !
" "
n n
h
h t = + +
k
k f y
("#$#A! k
/
' hf(y
n
3 k
%
8 "k
"
( t
n
8 h!
("#$##! y
n8%
' y
n
8
/ % "
"
< / <
+ +
k k k
Dli stessi valori di k
%
e k
"
possono anche servire per altri due algoritmi( il primo di
ordine uno (ulero!:
("#$%))! y
n8%
' y
n
8 k
%
e il secondo di ordine due:
("#$%)%! y
n8%
' y
n
8 k
"
In questo caso si hanno( quindi( tre algoritmi che utilizzano gli stessi valori delle k
i
$
.ertanto si pu5 utilizzare l&algoritmo di ordine pi? elevato per stimare in modo molto
semplice l&errore commesso con gli algoritmi di ordine inferiore$
Dli algoritmi di Runge 3 Butta embedded pi? frequentemente usati sono quelli in cui un
metodo di ordine p * controllato da uno di ordine p8%$ 9i indichi con 2
p
e con 2
p8%
il valore di
2 in t
n
8 h calcolato utilizzando un metodo di Runge3Butta di ordine p e p8% rispettivamente$
9e 2(t
n
8 h! * il valore cercato si ha( nel primo caso:
("#$%)"! 2
p
' 2(t
n
8 h! 8 C(h!
p8%
e nel secondo:
("#$%)/! 2
p8%
' 2(t
n
8 h! 8 D(h!
p8"
6&errore locale pu5 essere pertanto stimato mediante la relazione:
("#$%)4! ' C(h!
p8%
' S 2
p
3 2
p8%
S
dal momento che D(h!
p8"
risulta trascurabile essendo di ordine superiore$
Nra i vari metodi di Runge3Butta che hanno la caratteristica di essere em&edded uno dei
pi? utilizzati * il metodo di Runge 3 Butta 3 Nehlberg del quarto ordine controllato da uno del
quinto ordine$
6e equazioni che lo definiscono sono:
("#$%):! k
%
' hf(y
n
( t
n
!
("#$%)<!
%
"
( ( !
4 4
n n
h
h t = + +
k
k f y
Sistemi di equazioni differenziali ordinarie 129
("#$%)@!
% "
/
/ # /
( ( !
/" /" A
n n
h
h t = + + +
k k
k f y
("#$%)A!
/ % "
4
@"#< %#/" @")) %"
( ( !
"%#@ "%#@ "%#@ %/
n n
h
h t = + + +
k k k
k f y
("#$%)#!
/ % 4
: "
/<A) 4/# A4:
( A ( !
"%< :%/ 4%)4
n n
h t h = + + +
k k k
k f y k
("#$%%)!
/ : % 4
< "
/:44 %% A %A:#
( " ( !
"@ ":<: 4%)4 4) "
n n
h
h t = + + +
k k k k
k f y k
("#$%%%!
/ : % 4
4
%4)A ": "%#@
"%< ":<: 4%)4 :
n
= + + +
k k k k
y y
("#$%%"!
/ : < % 4
:
<<:< # " %< "A:<%
%/: %"A": :<4/) :) ::
n
= + + + +
k k k k k
y y

=ormalmente il valore che viene utilizzato come y


n8%
* quello di ordine cinque$
(ttenione: mentre y
n8%
calcolato con l&algoritmo del quarto ordine ha una
precisione controllata da quella dell&algoritmo del quinto ci5 non * pi? vero per
quella del quinto ordine0 non * sempre vero che al crescere dell&ordine
dell&algoritmo la soluzione sia miglioreL
9ono state proposte molte altre formule alternative0 inoltre l&idea di base * stata sfruttata
anche in altri modi e ha portato ad algoritmi con caratteristiche un poco diverse$

6a versione del metodo di Runge 3 Butta 3 Nehlberg risulta( di solito( leggermente


migliore rispetto alle altre$
29.) "etodi di #unge$%utta impliciti e
semiimpliciti
1n metodo di Runge3Butta costituito da r termini pu5 essere rappresentato in forma sintetica
mediante i due vettori " e c e la matrice #:
("#$%%/! y
n8%
' y
n
8 ,
%
k
%
8 ,
"
k
"
8 $$$$ ,
r
k
r

("#$%%4!
R
%
( ( !
r
i- n i
-
h a t c h
=
= + +
i n
k f y k
i ' %( r
130 Capitolo 29
6a matrice # pu5 essere pensata come somma di tre matrici: #
6
( #
D
( #
R
$ 6a prima
matrice( #
6
( * costituita dai coefficienti della matrice # al di sotto della diagonale principale
e con valori nulli altrove0 la matrice diagonale #
D
* costituita dagli elementi della diagonale
di # e( infine( la matrice #
R
( * costituita dai coefficienti al di sopra della diagonale principale
di # e nulla altrove$

1n metodo di Runge3Butta con coefficienti diversi da zero nella sola matrice #


6
*
esplicito0 se i coefficienti non nulli sono quelli della matrice #
6
e #
D
il metodo *
semiimplicito0 se la matrice #
R
ha coefficienti non nulli il metodo * implicito$
Esempio:
Il seguente * un metodo di Runge3Butta implicito fortemente >3stabile del terzo ordine (metodo
di CashJChan X$ =$ I$( I$ Iirnbaum and 6$ 6apidus (%#@A!K!:
("#$%%:! y
n8%
' y
n
8
% " / 4
" "
<
+ + + k k k k
con:
("#$%%<! k
%
' hf(y
n8%
( t
n8%
!
("#$%%@!
%
n % %
( ( !
" "
n
h
h t
+ +
=
2
k
k f y
("#$%%A!
"
/ n % %
( ( !
" "
n
h
h t
+ +
=
k
k f y
("#$%%#! k
4
' hf(y
n
( t
n
!
.er calcolare le k
i
* necessario risolvere il sistema non lineare ("#$%%:! rispetto alle incognite
y
n8%
$
Il metodo risulta em&edded con uno del secondo ordine( anch&esso fortemente >3stabile:
("#$%")! y
n8%
' y
n
8 k
"

=ei metodi Runge3Butta espliciti non vi sono problemi per calcolare i valori di k
i
poichM sono( appunto( espliciti$ =ei metodi impliciti( viceversa( * necessario risolvere un
sistema non lineare e ci5 comporta difficoltC di calcolo$ D&altra parte nessun metodo esplicito
* >3stabile mentre molti metodi impliciti godono di tale proprietC o anche di quella( pi?
restrittiva( ma pi? utile( di essere fortemente >3stabili$ I metodi semiimpliciti si trovano in un
certo senso a mezza strada fra i due precedenti: i valori di k
i
vengono calcolati risolvendo un
sistema lineare e possono essere fortemente >3stabili$ ssi sono perci5 potenzialmente molto
adatti a risolvere problemi stiff$
I metodi semiimpliciti vengono applicati a sistemi nella forma autonoma:
("#$%"%! y& ' f(y! y
)
' y(t
)
!
per poter sfruttare un accorgimento dovuto a Rosenbrock JRosenbrock (%#</!K$
Sistemi di equazioni differenziali ordinarie 131
.er vedere il principio su cui si basa tale accorgimento si consideri il seguente metodo
di Runge3Butta semiimplicito di " termini$
("#$%""! y
n8%
' y
n
8 ,
%
k
%
8 ,
"
k
"

("#$%"/! k
%
' hf(y
n
8 a
%%
k
%
! hf(y
n
! 8 ha
%%
J(y
n
!k
%

("#$%"4! k
"
' hf(y
n
8 a
"%
k
%
8 a
""
k
"
! hf(y
n
8 a
"%
k
%
! 8 ha
""
J(y
n
8 a
"%
k
%
!k
"

Come si vede dalle relazioni ("#$%"/! e ("#$%"4! le funzione f sono espanse in serie di
-a2lor0 in questo modo( noti i parametri caratteristici del metodo( ,
%
( ,
"
( a
%%
( a
"%
( a
""
e i
valori di f e dello Qacobiano J( * possibile calcolare i valori di k
%
e k
"
risolvendo i due sistemi
lineari:
("#$%":! JI 3 ha
%%
J(y
n
!Kk
%
' hf(y
n
!
("#$%"<! JI 3 ha
""
J(y
n
8 a
"%
k
%
!Kk
"
' hf(y
n
8 a
"%
k
%
!
I parametri caratteristici dei diversi metodi vengono scelti in modo da conferire al
metodo particolari proprietC legate alla stabilitC( alla precisione e al volume di calcoli
necessari per ottenere le k
i
$
1no dei metodi di maggior successo * il metodo di Eichelsen ottenuto con una piccola
variante da quello di Caillaud3.admanabhan JChan( Iirnbaum and 6apidus (%#@A!K$
("#$%"@! JI 3 haJ(y
n
!Kk
%
' hf(y
n
!
("#$%"A! JI 3 haJ(y
n
!Kk
"
' hf(y
n
8 bk
%
!
("#$%"#! JI 3 haJ(y
n
!Kk
/
' ck
%
8 dk
"
Il metodo di Eichelsen * del terzo ordine( * fortemente >3stabile e richiede( ad ogni
iterazione( un solo calcolo dello Qacobiano( J( due calcoli del sistema( f ed una sola
fattorizzazione per la soluzione dei tre sistemi (poichM essi hanno la stessa matrice dei
coefficienti!$
I parametri sono: a ' )$4/:A0 b ' $@:0 c ' 3)$</)"0 d ' 0 3)$"4"/0 ,
%
' %$)/@<0 ,
"
'
)$A/4#0 ,
/
' %$
Il metodo di Eichelsen ha un ulteriore vantaggio$ Infatti Chan e al$ JChan( Iirnbaum
and 6apidus (%#@A!K hanno dimostrato che gli stessi valori delle k
i
possono essere utilizzate
per formare( oltre al metodo di Eichelsen del terzo ordine( un altro del primo ordine (che
risulta cosT em&edded! anch&esso fortemente >3stabile$
("#$%/)! y
n8%
' y
n
8 v
%
k
%
8 v
"
k
"

con v
%
' )$<@"% e v
"
' )$/"@A
; perci5 possibile controllare il passo e l&errore con la stessa tecnica utilizzata con i
metodi embedded di Runge3Butta espliciti$
132 Capitolo 29

Il metodo semiimplicito di Eichelsen ha il pregio di essere del terzo ordine e


fortemente >3stabile senza richiedere( come nei metodi impliciti( la soluzione di
un sistema non lineare$ Inoltre( si pu5 effettuare il controllo dell&errore con un
metodo embedded del primo ordine anch&esso fortemente stabile$
Guello che a prima vista rappresenta un vantaggio dei metodi semiimpliciti costituisce
anche il loro lato negativo$ =ei metodi semiimpliciti lo Qacobiano interviene direttamente
nella definiione del metodo stesso0 nei metodi impliciti esso viene utilizzato (se si usa un
metodo di =e,ton per la soluzione del sistema non lineare! solo indirettamente( appunto per
la soluzione del sistema non lineare$ =ei metodi semiimpliciti si hanno( quindi( i seguenti
svantaggi$

%$ ; indispensabile calcolare con estrema precisione lo Qacobiano del sistema


(poichM fa parte intrinseca del metodo!$
"$ 6o Qacobiano deve essere noto con precisione ad ogni passo di integrazione
(non pu5 essere mantenuto costante per molti passi quando varia poco!$
/$ 6a matrice che serve per risolvere il o i sistemi lineari deve essere rifattoriata
ad ogni passo di integrazione (a causa del cambiamento dello Qacobiano!$
Come conseguenza i metodi semiimpliciti possono essere presi in considerazione( per
risolvere sistemi stiff( solo nel caso in cui lo Qacobiano sia calcolabile analiticamente e non
sia troppo oneroso rispetto al calcolo del sistema( f$
29.9 Algoritmi "ulti Step
I metodi !ulti Step sono caratterizzati dal fatto di utilizzare le informazioni accumulate negli
intervalli precedenti( effettuati con passo di integrazione costante( h$

6a forma generica di un algoritmo Eulti 9tep che utilizza le informazioni di k


punti precedenti *:
("#$%/%! y
n8%
' a
)
y
n
8 a
%
y
n3%
8 a
"
y
n3"
8 $$$ 8 a
k
y
n3k
8
8 hJb
3%
f(y
n8%
( t
n8%
! 8 b
)
f(y
n
( t
n
! 8 b
%
f(y
n3%
( t
n3%
! 8 $$$8 b
k
f(y
n3k
( t
n3k
!K

=ell&equazione ("#$%/%! compaiono "k 8 / parametri: a
)
( a
%
( $$$( a
k
( b
3%
( b
)
( b
%
( $$$( b
k
0 se
si desidera avere un algoritmo di ordine p si devono imporre p 8 % relazioni fra di essi$
Rimangono a disposizione "k 3 p 8 " gradi di libertC che vengono utilizzati per ottenere
algoritmi con le migliori caratteristiche possibili$
Sistemi di equazioni differenziali ordinarie 133

9i noti che se b
3%
* posto uguale a zero si ha un metodo esplicito$ In caso contrario
l&algoritmo * implicito$
Esempio:
Il seguente algoritmo (>dams 3 Iashforth di ordine tre! * esplicito:
y
n8%
' y
n
8
h
%"
J"/f(y
n
( t
n
! 3 %<f(y
n3%
( t
n3%
! 8 :f(y
n3"
( t
n3"
!K
mentre quest&altro (>dams 3 Eoulton di ordine tre! * implicito:
y
n8%
' y
n
8
h
%"
J:f(y
n8%
( t
n8%
! 8 Af(y
n
( t
n
! 3 f(y
n3%
( t
n3%
!K
I metodi Eulti 9tep hanno i seguenti vantaggi rispetto a quelli dello stesso ordine One
9tep$

%$ Norniscono senza difficoltC una stima dell&errore locale$


"$ Richiedono un minor numero di calcoli per passo di integrazione$
>bbiamo visto che con i metodi Runge 3 Butta la stima dell&errore locale pu5 essere
ottenuta solo con un notevole aumento del numero di calcoli$ I metodi Eulti 9tep( viceversa(
permettono di stimare l&errore locale in modo molto pi? semplice: infatti( legato ad ogni
algoritmo di ordine p( vi * un coefficiente C
p
per cui l&errore locale *:
("#$%/"! e
p
' C
p
y
(p8%!
( !h
p8%
t
n
O O t
n8%
Esempio:
6&algoritmo di >dams 3 Eoulton di ordine quattro :
y
n8%
' y
n
8
h
"4
J#f(y
n8%
( t
n8%
! 8 %#f(y
n
( t
n
! 3 :f(y
n3%
( t
n3%
! 8 f(y
n3"
( t
n3"
!K
ha un errore di troncamento:
e
4
' 3
%#
@")
y
(:!
( !h
:
t
n
O O t
n8%
per cui C
4
' 3
%#
@")
Fedremo in seguito come sia possibile stimare la derivata y
(p8%!
( ! necessaria per
valutare l&errore locale$
1n metodo di Runge 3 Butta di ordine p richiede( ad ogni passo di integrazione( almeno
p calcoli del sistema f(y( t!$ 1n metodo Eulti 9tep di ordine p esplicito richiede un solo
calcolo del sistema$
134 Capitolo 29

.ur possedendo i sopracitati vantaggi i metodi !ulti Step hanno valore solo
storico perchM soppiantati dai metodi !ulti .alore che sono una versione pi?
moderna degli stessi algoritmi$
9ono stati proposti innumerevoli algoritmi Eulti 9tep sia espliciti che impliciti$ >
scopo di esemplificazione vengono di seguito riportate due famiglie di algoritmi Eulti 9tep:
la prima costituita da algoritmi espliciti( la seconda da algoritmi impliciti$
29.9.1.1 Algoritmi di Adams $ *as(fort(
9e si pone:
("#$%//! k ' p 3 %0 a
%
' a
"
' $$$ ' a
p3%
' )0 b
3%
' )
si ottiene l&algoritmo di ordine p di >dams 3 Iashforth:
("#$%/4! y
n8%
' a
)
y
n
8 hJb
)
f(y
n
( t
n
! 8 b
%
f(y
n3%
( t
n3%
! 8 $$$8 b
p3%
f(y
n3p8%
( t
n3p8%
!K
sso * un algoritmo esplicito essendo nullo il coefficiente b
3%
$
.oichM il numero di coefficienti * esattamente p 8 % non si hanno gradi di libertC se si
desidera che la relazione ("#$%/4! sia esatta per un polinomio di grado p$
I primi sei membri della famiglia sono:
("#$%/:! y
n8%
' y
n
8 hf(y
n
( t
n
! 8
%
"
2
("!
h
"
("#$%/<! y
n8%
' y
n
8
h
"
J/f(y
n
( t
n
! 3 f(y
n3%
( t
n3%
!K 8
:
%"
2
(/!
h
/
("#$%/@! y
n8%
' y
n
8
h
%"
J"/f(y
n
( t
n
! 3 %<f(y
n3%
( t
n3%
! 8 :f(y
n3"
( t
n3"
!K 8
/
A
2
(4!
h
4
("#$%/A! y
n8%
' y
n
8
h
"4
J::f(y
n
( t
n
! 3 :#f(y
n3%
( t
n3%
! 8 /@f(y
n3"
( t
n3"
!
3#f(y
n3/
( t
n3/
!K 8
":%
@")
2
(:!
h
:
("#$%/#! y
n8%
' y
n
8
h
@")
J%#)%f(y
n
( t
n
! 3 "@@4f(y
n3%
( t
n3%
! 8 "<%<f(y
n3"
( t
n3"
!
3 %"@4f(y
n3/
( t
n3/
! 8 ":%f(y
n34
( t
n34
!K 8
#:
"AA
2
(<!
h
<
("#$%4)! y
n8%
' y
n
8
h
%44)
J4"@@f(y
n
( t
n
! 3 @#"/f(y
n3%
( t
n3%
! 8 ##A"f(y
n3"
( t
n3"
!
Sistemi di equazioni differenziali ordinarie 135
3 @"#Af(y
n3/
( t
n3/
! 8 "A@@f(y
n34
( t
n34
! 34@:f(y
n3:
( t
n3:
!K 8
%#)A@
<)4A)
2
(@!
h
@
29.9.1.2 Algoritmi di Adams $ "oulton
9e si pone:
("#$%4%! k ' p 3 "0 a
%
' a
"
' $$$ ' a
p3"
' )
si ottiene l&algoritmo di ordine p di >dams 3 Eoulton:
("#$%4"! y
n8%
' a
)
y
n
8 hJb
3%
f(y
n8%
( t
n8%
! 8 b
)
f(y
n
( t
n
! 8 $$$8 b
p3"
f(y
n3p8"
( t
n3p8"
!K
sso * un algoritmo implicito essendo diverso da zero il coefficiente b
3%
$
.oichM il numero di coefficienti * esattamente p 8 % non si hanno gradi di libertC se si
desidera che la relazione ("#$%4"! sia esatta per un polinomio di grado p$
I primi sei membri della famiglia sono:
("#$%4/! y
n8%
' y
n
8 hf(y
n8%
( t
n8%
! 3
%
"
2
("!
h
"
("#$%44! y
n8%
' y
n
8
h
"
Jf(y
n8%
( t
n8%
! 8 f(y
n
( t
n
!K 3
%
%"
2
(/!
h
/
("#$%4:! y
n8%
' y
n
8
h
%"
J:f(y
n8%
( t
n8%
! 8 Af(y
n
( t
n
! 3 f(y
n3%
( t
n3%
!K 3
%
"4
2
(4!
h
4
("#$%4<! y
n8%
' y
n
8
h
"4
J#f(y
n8%
( t
n8%
! 8 %#f(y
n
( t
n
! 3 :f(y
n3%
( t
n3%
! 8 f(y
n3"
( t
n3"
!K
3
%#
@")
2
(:!
h
:
("#$%4@! y
n8%
' y
n
8
h
@")
J":%f(y
n8%
( t
n8%
! 8 <4<f(y
n
( t
n
! 3 "<4f(y
n3%
( t
n3%
!
8 %)<f(y
n3"
( t
n3"
! 3 %#f(y
n3/
( t
n3/
!K 3
/
%<)
2
(<!
h
<
("#$%4A! y
n8%
' y
n
8
h
%44)
J4@:f(y
n8%
( t
n8%
! 8 %4"@f(y
n
( t
n
! 3 @#Af(y
n3%
( t
n3%
!
8 4A"f(y
n3"
( t
n3"
! 3 %@/f(y
n3/
( t
n3/
! 8 "@f(y
n34
( t
n34
!K 3
A</
<)4A)
2
(@!
h
@
I metodi Eulti 9tep hanno i seguenti difetti$
136 Capitolo 29

%$ -utti gli algoritmi espliciti sono insta&ili$ .ertanto si devono utilizzare quelli
impliciti$ Come conseguenza * necessario risolvere ad ogni iterazione un sistema
di equazioni non lineari$ .i? avanti vedremo come$
"$ In questa versione gli algoritmi non sono autosufficienti: richiedono qualche
altro metodo (ad esempio un Runge 3 Butta dello stesso ordine! per il calcolo
preventivo dei punti che sono coinvolti nella formula$
/$ 6e formule sono adatte ad una integrazione con passo costante$ 9e si desidera
cambiare il passo di integrazione si hanno notevoli complicazioni (ad esempio si
deve riutilizzare un metodo di Runge 3 Butta in modo analogo a quello utilizzato
per iniziare l&integrazione!$
29.1+ Algoritmi "ulti ,alore
I metodi Eulti 9tep sono risultati inadatti ad essere implementati in modo efficiente in
programmi di integrazione di equazioni differenziali di uso generale perchM risulta difficile
l&autoinnesco dell&algoritmo e la variazione del passo di integrazione$
Gueste difficoltC vengono eliminate con un piccolo cambiamento di punto di vista$
=el Capitolo %4 era stato sottolineato il fatto che un polinomio pu5 essere
rappresentato e memorizzato in svariati modi$
Con il punto di vista tradizionale( utilizzato negli algoritmi Eulti 9tep( vengono
memorizzati i punti di supporto del polinomio (2
n
( t
n
!( (2
n3%
( t
n3%
!( (2
n3"
( t
n3"
!( $$$$
Ogni cosa si appiana se lo stesso polinomio viene memorizzato come valore
dell&ordinata e delle diverse derivate stimate in corrispondenza di un unico punto
t
n
: (2
n
( t
n
!( (2&
n
( t
n
!( (27
n
( t
n
!( $$$
.er comprendere a fondo questo nuovo modo di considerare il problema * utile riferirsi
ad un particolare algoritmo( ad esempio l&algoritmo di >dams 3 Eoulton di ordine quattro
nella versione Eulti Falore$

9i noti che per ogni algoritmo espresso nella forma Eulti 9tep ne esiste uno
equivalente con le stesse caratteristiche( nella versione Eulti Falore$
9i supponga per il momento che il metodo sia giC stato innescato e che ci si trovi al
generico punto di integrazione( t
n
$ 6a storia precedente risulta quindi nota e memorizzata in
un opportuno vettore z$
=ordsieck ha proposto un modo di memorizzare le informazioni che risulta pi?
efficiente rispetto ad altre possibili alternative$
Sistemi di equazioni differenziali ordinarie 137
Il vettore di =ordsieck * cosT composto:
z
)
' y
n
z
%
' hy&
n
z
"
'
h
n
"
"
y7
z
/
'
h
n
/ /
<
y
( !
z
4
'
h
n
4 4
"4
y
( !

9i noti che quando si risolve un sistema differenziale ogni componente del vettore
z * anch&esso un vettore e perci5 z * normalmente una matrice$ >nche in questo
caso * per5 preferibile considerare z come un vettore le cui componenti possono
essere vettori$
9e conoscessimo le componenti esatte( prive di errori( del vettore z nel punto t
n
si
potrebbe scrivere il seguente sviluppo in serie di -a2lor per ogni componente:
y(t
n8%
! ' y(t
n
! 8 hy&(t
n
! 8
h t
n
"
"
y7( !

8
h t
n
/ /
<
y
( !
( !
8
h t
n
4 4
"4
y
( !
( !
8
h t
n
: :
%")
y
( !
( !
8 $$$
hy&(t
n8%
! ' hy&(t
n
! 8 "
h t
n
"
"
y7( !
8 /
h t
n
/ /
<
y
( !
( !
8 4
h t
n
4 4
"4
y
( !
( !
8 :
h t
n
: :
%")
y
( !
( !
8 $$$
"
%
7( !
"
n
h t
+
y
'
h t
n
"
"
y7( !
8 /
h t
n
/ /
<
y
( !
( !
8 <
h t
n
4 4
"4
y
( !
( !
8 %)
h t
n
: :
%")
y
( !
( !
8 $$$
138 Capitolo 29
/ (/!
%
( !
<
n
h t
+
y
'
h t
n
/ /
<
y
( !
( !
8 4
h t
n
4 4
"4
y
( !
( !
8 %)
h t
n
: :
%")
y
( !
( !
8 $$$
4 (4!
%
( !
"4
n
h t
+
y
'
h t
n
4 4
"4
y
( !
( !
8 :
h t
n
: :
%")
y
( !
( !
8 $$$
Il vettore z permette di calcolare un vettore $ che * una approssimazione di tale
sviluppo in serie di -a2lor:
$
)
' z
)
8 z
%
8 z
"
8 z
/
8 z
4
$
%
' z
%
8 "z
"
8 /z
/
8 4z
4
$
"
' z
"
8 /z
/
8 <z
4
$
/
' z
/
8 4z
4
$
4
' z
4
o( in forma matriciale:
("#$%4#! $ ' Dz
essendo la matrice D la matrice triangolare di .ascal i cui coefficienti sono dati dalla
relazione:
("#$%:)! d
i(R
'
L
( !L L
-
- i i
R i )
9i noti che il vettore $ pu5 essere ottenuto senza effettuare il prodotto fra una
matrice ed un vettore ("#$%4#!( ma mediante sole somme di vettori$
Il programma necessario * il seguente$
for(i = 0;i <= orderUsed;i++)
v[i] = [i];
for(i = 0;i < orderUsed;i++)
for(! = orderUsed - 1;! "= i;!--)
v[!] += v[! + 1];

Il vettore $ pu5 essere considerato come una previsione( costruita con il vettore z(
noto nel punto t
n
( dello stesso vettore z nel nuovo punto t
n8%
$
6a previsione( $( viene corretta (in un modo che dipende dal particolare algoritmo
considerato! utilizzando un opportuno vettore % (il cui valore e scopo sarC mostrato fra breve!
in modo da ottenere il nuovo vettore z relativo al punto t
n8%
:$
Sistemi di equazioni differenziali ordinarie 139
("#$%:%! z
)
' $
)
8 r
)
%
("#$%:"! z
%
' $
%
8 r
%
%
("#$%:/! z
"
' $
"
8 r
"
%
("#$%:4! z
/
' $
/
8 r
/
%
("#$%::! z
4
' $
4
8 r
4
%

Ogni metodo Eulti Falore di ordine p * caratterizzato dal vettore r utilizzato per
correggere la previsione $$ sso * il corrispettivo dei coefficienti a
)
( a
%
( $$$( b
3%
(
b
)
( $$$ b
k
utilizzati nei vari metodi Eulti 9tep ed * scelto in modo da rendere
l&algoritmo sta&ile, accurato ed esatto per soluioni polinomiali di grado p$
>d esempio il metodo di >dams 3 Eoulton di ordine quattro * caratterizzato dal
seguente vettore:
r
-
' J
/
A
( %(
%%
%"
(
%
/
(
%
"4
K
e perci5 in questo caso il nuovo vettore z nel punto t
n8%
si ottiene mediante la relazione:
z
)
' $
)
8
/
A
%
z
%
' $
%
8 %
z
"
' $
"
8
%%
%"
%
z
/
' $
/
8
%
/
%
z
4
' $
4
8
%
"4
%

Il vettore % viene calcolato in modo che il vettore z nel nuovo punto soddisfi il
sistema differenziale$
.oichM si considera il sistema ("#$%!:
y& ' f(y( t!
che diventa:
("#$%:<! hy& ' z
%
' hf(z
)
( t!
140 Capitolo 29
si ottiene:
("#$%:@! $
%
8 % ' hf($
)
8 r
)
%( t
n8%
!
e( per il metodo di >dams 3 Eoulton considerato:
$
%
8 % ' hf($
)
8
/
A
%( t
n8%
!
Come si vede( anche nella versione Eulti Falore il metodo di >dams 3 Eoulton *
implicito$

1na conseguenza importantissima di questa nuova impostazione * che ora


possono essere affrontati in modo del tutto naturale anche problemi che non siano
della forma speciale ("#$%!$
9i supponga infatti di avere un sistema scritto nella seguente forma implicita:
("#$%:A! f(y
(n!
( y
(n3%!
( Y( y&( y( t! ' &
In questo caso * sufficiente sostituire ad ogni derivata la corrispondente componente del
vettore di =ordsiek per avere un sistema non lineare nella sola incognita %$ >d esempio nel
caso di sistemi impliciti del primo ordine deve essere risolto il seguente sistema:
("#$%:#! f(
%
h
+ $ %
( $
)
8 r
)
%( t
n8%
! ' &
1n altro caso molto importante * il seguente:
("#$%<)! #y& ' f(y(t!
dove # * una matrice assegnata$ Il sistema non lineare diventa:
("#$%<%! #J$
%
8 %K ' hf($
)
8 r
)
%( t
n8%
!
6a precedente formulazione di un sistema di equazioni differenziali * molto importante
per due motivi$

%$ Eolti problemi pratici nascono in questa forma e devono essere ricondotti nella
forma standard previa manipolazione delle equazioni$ Risulta preferibile
affrontare direttamente la soluzione nella forma primitiva$
"$ 9e la matrice # * singolare il sistema risultante diventa algebrico differenziale$
Guesta formulazione permette perci5 di affrontare tale importantissimo problema$
Sistemi di equazioni differenziali ordinarie 141
>pparentemente( perci5( con questa nuova impostazione possono essere affrontati sia
problemi in cui le derivate di qualunque ordine sono implicite sia problemi algebrico 3
differenziale$

Da un punto di vista pratico tutte le varianti alla forma esplicita del primo ordine
("#$%! risultano molto pi? difficili da risolvere a causa del sistema non lineare che
si ottiene$ Infatti( come verrC mostrato pi? avanti( nel caso speciale ("#$%! il
sistema non lineare gode di particolari peculiaritC$
-ornando ora al sistema nella forma esplicita del primo ordine restano aperte le
seguenti questioni$
%$ Come controllare l&errore locale$
"$ Come cambiare il passo di integrazione$
/$ Come variare l&ordine di integrazione$
4$ Come innescare un metodo Eulti Falore$
:$ Come scegliere l&ampiezza del primo passo di integrazione$
<$ Come risolvere il sistema non lineare ("#$%:@!$
29.1+.1 Controllo dell&errore locale
Ogni metodo Eulti Falore * caratterizzato da un errore locale identico al corrispettivo
metodo Eulti 9tep$
Esempio:
6&algoritmo Eulti Falore di >dams 3 Eoulton di ordine quattro:
r
-
' J/HA( %( %%H%"( %H/( %H"4K
* equivalente all&algoritmo Eulti 9tep di >dams 3 Eoulton di ordine quattro:
y
n8%
' y
n
8
h
"4
J#f(y
n8%
( t
n8%
! 8 %#f(y
n
( t
n
! 3 :f(y
n3%
( t
n3%
! 8 f(y
n3"
( t
n3"
!K
e ha lo stesso errore locale ossia:
e
4
' 3
%#
@")
y
(:!
( !h
:
t
n
O O t
n8%
per cui C
4
' 3
%#
@")
6&errore locale per un metodo Eulti Falore * pertanto ricavabile mediante la relazione:
("#$%<"! e
p
' C
p
y
(p8%!
( !h
p8%
142 Capitolo 29

.er motivi che verranno chiariti fra poco( ritengo conveniente calcolare l&errore di
un metodo Eulti Falore in modo leggermente diverso da quello tradizionale e
cio* utilizzando la seguente espressione:
("#$%</! e
p
'
p

y
( !
( !
( !L
p p
h
p
_ _
_
% %
%

con:
("#$%<4!
p
' C
p
(p8%!L
Esempio:
6&algoritmo Eulti Falore di >dams 3 Eoulton di ordine quattro ha un errore locale:
e
4
' 3
(:! :
%# :L ( !
@") :L
h y
t
n
O O t
n8%
per cui
4
' 3
( ! L %# :
@")
' 3/$%<<<<<<<
.er poter stimare l&errore locale di un metodo Eulti Falore di ordine p *
necessario conoscere un valore approssimato della derivata di ordine p 8 %$ Ci5
risulta molto semplice avendo memorizzato le derivate fino all&ordine p nel vettore
di =ordsieck$
6&ultima componente del vettore z *:
("#$%<:! z
p
'
h
p
p
n
p
y
( !
L
9e si conosce tale componente in corrispondenza di due punti successivi( t
n3%
e t
n
( si pu5
calcolare:
("#$%<<!
( ! ( ! ( %! %
%
( ! L
( %!L L L ( %!L
p p p p p p
n n
h h h p
p p p p

+ +




+ +

y y y
dal momento che risulta:
("#$%<@!
( ! ( !
( %!
%
( !
p p
p
n n
h

y y
y
6&errore locale pu5 perci5 essere stimato mediante la relazione:
Sistemi di equazioni differenziali ordinarie 143
("#$%<A!
( %! %
%
( ! ( !
( !
( %!L %
p p
p n p n
p p
h
' '
p p

+ +

+ +
z z
y
Da un punto di vista pratico conviene memorizzare:
("#$%<#!
( %! %
%
%
( ! ( !
( !
% % ( %!L
p p
p n p n p
p
r
h
p p p

+ +

= =
+ + +
z z %
y
z
nella componente p8% del vettore z$ 6&errore viene in tal modo calcolato mediante la
relazione:
("#$%@)!
( %! %
( !
( %!L
p p
p
h
'
p

+ +

+
y

p
z
p8%
' C
p
pL r
p
%
1na volta stimato l&errore locale esso va confrontato con quello massimo desiderato$
9e risulta:
("#$%@%!
"
%
%
( !
%
%
+
i p
p p
i
i

e '
+
+
=

= >

* necessario ripetere l&integrazione con un passo inferiore ed eventualmente con un ordine del
metodo differente$ In caso contrario l&integrazione prosegue e( anche in questo caso( pu5
essere utile variare sia il passo di integrazione che l&ordine del metodo$ .i? avanti verrC
mostrata la strategia consigliata$
29.1+.2 ,ariazione del passo di integrazione
Come si * visto nell&analogo problema per i metodi di tipo Runge 3 Butta( il passo di
integrazione deve essere ridotto (e rifatta l&integrazione! quando l&errore locale * maggiore di
un valore limite assegnato dall&utente$ .u5 anche essere desiderabile variare il passo di
integrazione quando l&errore locale * molto piccolo0 in questo caso * conveniente aumentare il
passo di integrazione nei passi successivi per poter risparmiare calcoli$
Eentre nel caso di metodi Eulti 9tep il cambiamento del passo di integrazione *
difficile da realizzare( con la nuova impostazione ci5 risulta banale$ ; infatti
sufficiente scalare le componenti del vettore z in modo da adeguarlo al nuovo
passoL
144 Capitolo 29
9e si desidera cambiare il passo di integrazione h in modo che diventi uguale ad h
ne,
il
nuovo vettore z diventa:
z
)
' z
)

z
%
'
new
h
h



z
%
z
"
'
"
new
h
h



z
"
z
/
'
/
new
h
h



z
/
z
4
'
4
new
h
h



z
4
$$$$$$
Guesta proprietC dei metodi Eulti Falore * sfruttata anche in un altro modo e per
uno scopo completamente diverso dalla modifica del passo di integrazione$ /
infatti possi&ile rendere il passo di integraione indipendente rispetto ai punti
per i quali si desidera la rispostaL
9i ricordi che il vettore di =ordsieck permette di effettuare una interpolazione
polinomiale nell&intorno del punto corrente( t
n
0 ne segue che la previsione in un punto
distante h
ne,
da t
n
viene ricavata mediante la seguente relazione:
("#$%@"! $
)
' z
)
8
new
h
h



z
%
8
"
new
h
h



z
"
8
/
new
h
h



z
/
8
4
new
h
h



z
4
8
$$$$

9i noti che il vettore di =ordsieck nel punto t


n
permette di effettuare
l&interpolazione con la richiesta precisione solo fra t
n3%
e t
n
( ossia per valori
negativi del rapporto
new
h
h



e con S h
ne,
S S h S ' S t
n
3 t
n3%
S$
Con programmi di integrazione tradizionali( in cui * possibile usare un passo di
integrazione variabile( l&ultimo passo di integrazione deve essere adeguato alla richiesta$ Ci5
non * pi? necessario in un programma basato su metodi Eulti Falore0 infatti( se l&ultimo
passo di integrazione oltrepassa il punto richiesto * sufficiente operare una interpolazione per
ottenere una risposta corretta entro i margini di errore accettati$
Sistemi di equazioni differenziali ordinarie 145
Guesta nuova possibilitC si dimostra molto utile anche quando si desiderano valori delle
y per punti molto ravvicinati fra loro (ad esempio in problemi di grafica!$ In assenza di
questa agevolazione (ad esempio con i metodi Runge 3 Butta! deve essere effettuata una
integrazione con passo molto inferiore a quello che sarebbe necessario per motivi di
precisione e stabilitC$
29.1+.3 Cambiamento dell&ordine del metodo
=ei primi programmi per la integrazione di equazioni differenziali l&ordine del
metodo risultava fissato dall&utente e non variava nel corso dell&integrazione$ In
molti casi risulta pi? conveniente modificare oltre che il passo di integrazione
anche l&ordine del metodo$ Infatti esiste un valore ottimale del passo di
integrazione legato all&ordine del metodo utilizzato e alla precisione richiesta$
; importante comprendere i seguenti tre punti$
%$ Come si fa a stimare( utilizzando un algoritmo di ordine p( anche le componenti del
vettore z di ordine maggiore a p( ossia z
p8%
( z
p8"
( ecc$
"$ Come si fa a variare l&ordine del metodo di integrazione$
/$ .er quale motivo pu5 essere utile cambiare l&ordine di integrazione$
>bbiamo visto che utilizzando la componente p del vettore z * possibile calcolare la
componente p8% del vettore z:
("#$%@/!
( %! %
%
%
( ! ( !
( !
% ( %!L
p p
p n p n
p
h
p p

+ +

=
+ +
z z
y
z
utile per ottenere una stima dell&errore locale dell&algoritmo di ordine p$
In modo analogo possono essere stimate le derivate di ordine superiore o le componenti
del vettore di =ordsiek$ In particolare( se si desidera calcolare z
p8"
( ci5 pu5 essere fatto senza
difficoltC se vengono memorizzati tre valori consecutivi dell&ultima componente del vettore z(
z
p
( in corrispondenza dei punti t
n3"
( t
n3%
( t
n
$ ; facile vedere che risulta:
("#$%@4!
( ! ( ! ( "! "
"
( ! L
( "!L L L ( "!L
p p p p p p
n n
h h h p
p p p p

+ +




+ +

y y y
; ovvio che la stessa stima potrebbe derivare dalla conoscenza di due valori della
componente p8% del vettore z:
("#$%@:!
( "! "
% % %
( ! ( !
( !
( "!L "
p p
p n p n
h
p p

+ +
+ +

+ +
z z
y
146 Capitolo 29
; perci5 possibile stimare tutte le componenti del vettore z fino all&ordine massimo
previsto (dopo un sufficiente numero di passi di integrazione! a partire da un algoritmo di
qualsiasi ordine minore o uguale al massimo ordine previsto dal programma$
.er comprendere come si fa a variare l&ordine del metodo di integrazione si supponga di
utilizzare gli algoritmi di >dams 3 Eoulton e di avere giC innescato il procedimento per
l&ordine generico p( minore del massimo consentito dal programma$
In tale circostanza nel vettore z sono memorizzate( dopo un adeguato numero di passi(
le p 8 " componenti: z
)
( z
%
( $$$( z
p
( z
p8%
$ > questo punto per utilizzare un metodo di
integrazione di ordine p 3 % o p 8 % * sufficiente usare l&appropriato numero di termini nella
previsione $ e il relativo vettore r in modo da ottenere la correzione % e il vettore z del nuovo
punto di mesh$
>d esempio( se era stato utilizzato il metodo di >dams 3 Eoulton di ordine p ' %
oppure di ordine p ' / e si desidera usare l&ordine " si avrC:
$
)
' z
)
8 z
%
8 z
"
$
%
' z
%
8 "z
"
$
"
' z
"
e poi:
z
)
' $
)
8
%
"
%
z
%
' $
%
8 %
z
"
' $
"
8
%
"
%
poichM il vettore r del metodo di >dams 3 Eoulton del secondo ordine * %H"( %( %H"$
; importante comprendere il motivo per cui pu5 essere utile variare l&ordine del metodo$
9i consideri per semplicitC un problema con una sola variabile dipendente e si supponga
di avere fissato l&errore massimo accettabile$ 1tilizzando un metodo Eulti Falore di
ordine p si deve fare in modo che risulti:
("#$%@<!
( %! %
( %!L
p p
p
* h
'
p

+ +

+
.er un assegnato problema e in corrispondenza di un particolare momento
dell&integrazione risulta fissato il valore di:
("#$%@@!
( %!
( %!L
p
p p
*
0 '
p
+
=
+
Sistemi di equazioni differenziali ordinarie 147
;( quindi( possibile diagrammare la curva:
("#$%@A! ' B
p
h
p8%

in funzione del passo h$
>l variare dell&ordine di integrazione( p( varia la costante B
p
e l&esponente della
funzione ("#$%@A!$ =ella seguente Nigura "#$: sono riportati gli andamenti qualitativi delle
curve per p ' %( "( /$
Figura 29.'
6&incrocio di ogni coppia di curve individua il campo di valori del passo di integrazione
per cui un ordine risulta avere un errore locale( a paritC del passo di integrazione( minore
dell&altro$
Di conseguenza si ricava dalla Nigura "#$: che se l&errore accettabile * superiore al
valore e
%"
conviene il metodo di primo ordine0 se * compreso fra e
%"
e e
"/
conviene quello di
ordine due0 se( infine( l&errore massimo accettabile * minore di e
"/
conviene integrare con il
metodo di ordine tre$

.er ogni assegnato errore massimo accettabile esiste un passo di integrazione ed


un ordine del metodo che risultano ottimali$ Il passo e l&ordine ottimi dipendono
dal problema esaminato e possono variare durante l&integrazione$
29.1+.4 Strategia di scelta del passo e dell&ordine
6a strategia per la scelta del passo e dell&ordine di integrazione che viene normalmente
seguita * quella proposta da Dear J Dear (%#@%!K o qualche sua variante$
.i? sopra * stato mostrato come sia possibile sfruttare l&ultimo componente del vettore z(
z
p
( per calcolare sia z
p8%
che z
p8"
$ Inoltre( poichM nell&elemento p3esimo del vettore z si ha:
148 Capitolo 29
("#$%@#!
( !
( !
L
p p
p
h
p

y
z
* possibile stimare anche l&errore commesso utilizzando l&algoritmo di ordine p3%$
9i hanno( quindi( a disposizione le tre stime per gli errori commessi con tre differenti
algoritmi( rispettivamente di ordine p3%( p e p8%$
("#$%A)! e
p3%
'
p3%
z
p
("#$%A%! e
p
'
p
z
p8%

("#$%A"! e
p8%
'
p8%
z
p8"

9i consideri per il momento una sola equaione$
9e si indica con il massimo errore accettabile( il massimo passo di integrazione
possibile( h
ne,
( utilizzando il metodo di ordine p3% * dato da:
("#$%A/!
( ! ( !
% % %
L L
p
p p p p p
p new
new new
p p p
p p
h
* h h * h
' ' '
p p h h


= = =
ossia:
("#$%A4!
%
%
p
new
p p
h h
'


=



con ordine p3%
In modo del tutto simile si ricava il massimo possibile intervallo con ordine p e p8%:
("#$%A:!
%
%
%
p
new
p p
h h
'

+
+

=



con ordine p
("#$%A<!
%
"
% "
p
new
p p
h h
'

+
+ +

=



con ordine p8%
6&ordine che permette il massimo passo di integrazione * quello per cui risulta massimo
il valore di h
ne,
$
.er motivi di sicurezza e da prove effettuate risolvendo numerosi sistemi * opportuno
seguire le seguenti regole$
Sistemi di equazioni differenziali ordinarie 149
%$ Deve essere introdotto un controllo anche sull&errore relativo$ .er i motivi giC
analizzati trattando lo stesso problema con i metodi Runge 3 Butta una valida scelta
dell&errore accettabile( ( * l&equazione ("#$A%!$
"$ ; necessario usare dei coefficienti di sicurezza nel calcolo di h
ne,
massimo$ 6e
relazioni precedenti diventano:
("#$%A@!
%
%
%
p
( 1 n
new
p p
*
h h
'


+
=



con ordine p3%
("#$%AA!
%
%
"
%
p
( 1 n
new
p p
*
h h
'

+
+

+
=



con ordine p
("#$%A#!
%
"
/
% "
p
( 1 n
new
p p
*
h h
'

+
+ +

+
=



con ordine p8%
I coefficienti utilizzati sono diversi per i diversi ordini di integrazione e( di solito( si
usano valori o
/
O o
%
O o
"
O % in modo da favorire il metodo avente l&ordine corrente( p( poi
quello di ordine inferiore e infine quello di ordine superiore$ Guest&ultimo * quello che ha
maggiori oneri di calcolo e ha una zona di stabilitC pi? ristretta0 per questi motivi deve essere
scelto solo se risulta effettivamente migliore rispetto agli altri$ In ogni caso( qualunque sia
l&ordine scelto( si ha un margine di sicurezza per il nuovo passo di integrazione( h
ne,
$
/$ I valori numerici di o
%
( o
"
( e o
/
vanno anche adeguati al tipo di problema: stiff oppure
no$ Infatti nel caso di problemi stiff * ancora pi? importante penalizzare i metodi di ordine
elevato perchM meno stabili$
4$ =on conviene modificare il passo di integrazione o l&ordine troppo spesso$ ;
necessario lasciare che il metodo si stabilizzi$ Ci5 richiede almeno p8% iterazioni fatte con lo
stesso passo e lo stesso ordine( p$ Come verrC mostrato pi? avanti nei problemi stiff *
necessario risolvere il sistema non lineare ("#$%:@! con il metodo di =e,ton e( quindi( deve
essere calcolato lo Qacobiano del sistema e risolto un sistema lineare ad ogni passo di
integrazione$ Eantenendo lo stesso passo e ordine per pi? passi si ha( in questi casi(
l&ulteriore vantaggio di riuscire a non rifattorizzare la matrice per risolvere il sistema lineare
e a non dover ricalcolare ogni volta lo Qacobiano$
:$ Il passo ed eventualmente anche l&ordine deve essere diminuito se l&errore commesso
utilizzando l&ordine corrente supera quello massimo accettabile$
<$ =el caso di sistemi di = equazioni differenziali il rapporto H
p8R3%
z
p8R
(R ' )( %( "! pu5
essere calcolato con diverse strategie$ >nalogamente a quanto visto trattando lo stesso
problema con i metodi Runge Butta la strategia che sembra pi? soddisfacente JVindmarsh
(%#A)!K * quella di usare la seguente espressione:
150 Capitolo 29
("#$%#)!
z
2 =
z
2
p R p R
> R n
p R i p R
i > i R i n i
=
_ _ _ _
|
_
|
_

% %
%
"
%

( !
( ! ( ! ( !
(R ' )( %( "!
29.1+.5 Inizializzazione di un metodo "ulti ,alore
Dalle precedenti considerazioni dovrebbe ora risultare facile comprendere con quale tecnica
sia possibile autoinnescare un metodo Eulti Falore( diversa dall&uso( peraltro possibile( di un
metodo di tipo Runge 3 Butta di ordine opportuno$
Infatti l&integrazione pu5 partire utilizzando il metodo del primo ordine appartenente
alla famiglia prescelta$ Ci5 permette di calcolare dopo i primi due passi di integrazione la
componente z
"
del vettore z$ >l passo successivo pu5 essere stimata la componente z
/
e cosT
via$
29.1+. Scelta del primo passo di integrazione
.er semplicitC si consideri una sola equazione differenziale$ .oichM lWintegrazione comincia
utilizzando un metodo di primo ordine la previsione *:
2
%
' 2
)
8 h2
)
W
con un errore( 2(t
%
! 3 2
%
( proporzionale a 2Zh
"
H"$ 6Werrore pu5 essere grossolanamente stimato
in funzione del passo di integrazione nel seguente modo:
2(t
%
! 3 2
%
' 2(t
%
! 3 2
)
8 h2
)
W 2
)
3 2
)
8 h2
)
W ' h2
)
W
Indicando con lWerrore ammissibile e supponendo 2
)
W ) una stima del primo passo
di integrazione *:
h ' HS 2
)
WS
9ono state proposte diverse strategie( pi? o meno laboriose( per migliorare la stima
precedente$ >nche la precedente stima risulta per5 adeguata (purchM si prendano le dovute
precauzioni di non avere una stima troppo grande o troppo piccola e si evitino problemi
quando 2
)
W ' )! per il seguente motivo$

Il passo di integrazione viene immediatamente riaggiustato mediante la relazione


("#$%AA! e perci5 non si hanno conseguenze disastrose se il valore di tentativo del
primo passo di integrazione * stato scelto male$
29.1+.! Selezione di algoritmi "ulti ,alore
Sistemi di equazioni differenziali ordinarie 151
Come detto in pi? occasioni ogni algoritmo Eulti 9tep ha un corrispondente algoritmo Eulti
Falore$ 9ono perci5 disponibili moltissimi algoritmi o( meglio( famiglie di algoritmi Eulti
Falore$

Da un punto di vista pratico attualmente vengono utilizzate soprattutto due


famiglie: quella di (dams ) !oulton per pro&lemi normali e quella di 2ear per
pro&lemi stiff$
I metodi si distinguono per il vettore di correzione r e per il coefficiente dell&errore(
p
$
29.1+.!.1 Algoritmi di Adams $ "oulton
I valori del vettore r sono( per gli ordini da uno a sette:
("#$%#%! %( %
("#$%#"!
%
"
( %(
%
"
("#$%#/!
:
%"
( %(
/
4
(
%
<
("#$%#4!
/
A
( %(
%%
%"
(
%
/
(
%
"4
("#$%#:!
":%
@")
( %(
":
"4
(
/:
@"
(
:
4)
(
%
%")
("#$%#<!
#:
"AA
( %(
%/@
%")
(
:
A
(
%@
#<
(
%
4)
(
%
@")
("#$%#@!
%#)A@
<)4A)
( %(
4#
4)
(
")/
"@)
(
4#
%#"
(
@
%44
(
@
%44)
(
%
:)4)
I corrispondenti valori di
p
:
("#$%#A!
%
' 3 %0
"
' 3
%
"
0
/
' 3 %0
4
' 3 /$%<<<<<0
:
' 3 %/$:0

<
' 3 @%$#%<<<<<0
@
' 34:A$////// 0
6e regioni di stabilitC dei diversi algoritmi sono riportate nelle Nigure "#$<
152 Capitolo 29
Sistemi di equazioni differenziali ordinarie 153
Figure 29.(
29.1+.!.2 Algoritmi di -ear
I valori del vettore r sono( per gli ordini da uno a cinque:
("#$%##! %( %
("#$"))!
"
/
( %(
%
/
("#$")%!
<
%%
( %(
<
%%
(
%
%%
("#$")"!
%"
":
( %(
@
%)
(
%
:
(
%
:)
("#$")/!
%")
"@4
( %(
"":
"@4
(
A:
"@4
(
%:
"@4
(
%
"@4
I corrispondenti valori di
p
:
("#$")4!
i
' iL

Dli algoritmi di Dear hanno un errore locale circa tre volte maggiore dei
corrispondenti algoritmi della famiglia di >dams 3 Eoulton$
6e regioni di stabilitC degli algoritmi sono riportate nelle Nigure "#$@$
154 Capitolo 29
Sistemi di equazioni differenziali ordinarie 155
Figure 29.)

Dli algoritmi di Dear sono stabili per problemi stiff mentre quelli di >dams 3
Eoulton non lo sono per ordini superiori al secondo$
29.1+.) Soluzione del sistema non lineare
-utti gli algoritmi Eulti Falore considerati sono impliciti( poichM solo essi risultano sta&ili$
; perci5 necessario affrontare il problema della soluzione del sistema non lineare:
("#$"):! hy& ' z
%
' $
%
8 % ' hf(z
)
( t
n8%
! ' hf($
)
8 r
)
%( t
n8%
!
rispetto alle incognite %$
>d esempio( nel caso del metodo di >dams 3 Eoulton di quarto ordine( si deve risolvere
il sistema non lineare:
$
%
8 % ' hf($
)
8
/
A
%( t
n8%
!
9i hanno due possibilitC$
%$ 1tilizzare un metodo iterativo di sostituzione$
"$ 1tilizzare una qualche versione del metodo di =e,ton per risolvere sistemi non
lineari (Fedi Capitolo ":!$
29.1+.).1 "etodi .redictor $ Corrector
6a prima alternativa dC luogo ad una versione Eulti Falore del classico metodo 3redictor)
%orrector degli algoritmi Eulti 9tep$ Il metodo prende il nome dall&applicazione di un
algoritmo esplicito (che serve da previsore! seguito da uno implicito (che serve da correttore
della previsione!$ .oichM il metodo viene applicato ad un sistema della forma speciale
("#$"):!( la correzione pu5 essere ottenuta esplicitamente ed eventualmente iterata$
=ella terminologia entrata in uso nell&ambito dei metodi Eulti 9tep viene indicato con
. (3revision! l&uso di un metodo esplicito( con ('valuation! un calcolo delle funzioni f e
con C (%orrection! la correzione ottenuta con un metodo implicito$ .erci5 se viene calcolato
un solo valore delle funzioni f e una sola correzione il metodo viene detto .C( se la
correzione viene utilizzata per calcolare un nuovo valore di f il metodo viene chiamato .C
e cosT via: .CC( .CC( $$$$ In questo procedimento * opportuno che l&ordine dei due
algoritmi( esplicito ed implicito( e la famiglia di appartenenza siano gli stessi$
Esempio:
=el caso dell&algoritmo Eulti 9tep del terzo ordine della famiglia dei metodi espliciti di >dams3
Iashforth e impliciti di >dams3Eoulton le iterazioni sono le seguenti$
3revision:
156 Capitolo 29
y
J)K
n8%
' y
n
8
h
%"
J"/f(y
n
( t
n
! 3 %<f(y
n3%
( t
n3%
! 8 :f(y
n3"
( t
n3"
!K
'valuation:
f(y
JiK
n8%
( t
n8%
! i ' )( %( $$$
%orrection:
y
Ji8%K
n8%
' y
n
8
h
%"
J:f(y
JiK
n8%
( t
n8%
! 8 Af(y
n
( t
n
! 3 f(y
n3%
( t
n3%
!K
=ella equivalente situazione dei metodi Eulti Falore viene utilizzato il vettore $ come
previsore ed il vettore %( ottenuto iterativamente dalla relazione:
("#$")<! %
Ji8%K
' hf($
)
8 r
)
%
JiK
(t
n8%
! 3 $
%
come correttore$
Esempio:
Il metodo applicato all&algoritmo Eulti Falore di >dams3Eoulton di ordine quattro consiste
nell&iterare l&equazione:
%
Ji8%K
' hf($
)
8
/
A
%
JiK
( t
n8%
! 3 $
%
partendo da %
J)K
' &$
1na volta ricavato un vettore % soddisfacente esso viene utilizzato per ricavare il vettore
di =ordsieck nel punto n 8 %$

=elle applicazioni moderne di questa strategia viene limitato il numero di


iterazioni (due( tre al massimo!0 non viene richiesta una soluzione molto accurata
del sistema ("#$"):! anche se vengono imposti dei controlli sulla effettiva
convergenza alla soluzione$ ; importante comprendere i motivi e le conseguene
di questa scelta$
=el Capitolo ": si * visto che i metodi per sostituzione raramente convergono in modo
rapido alla soluzione di un sistema non lineare$ 9e si deve risolvere accuratamente un sistema
(e vedremo fra poco che ci5 pu5 essere necessario per problemi stiff! * preferibile ricorrere ad
una qualche variante del metodo di =e,ton sia per avere un metodo a convergenza pi?
rapida sia( soprattutto( per il motivo che verrC chiarito pi? avanti$

9e le iterazioni non sono portate a fondo il sistema ("#$"):! non * risolto in modo
accurato e l&algoritmo risultante * un algoritmo esplicito (anche se laborioso!$
sso perci5 non gode delle proprietC di stabilitC del metodo implicito utilizzato
nelle iterazioni$
Esempio:
Sistemi di equazioni differenziali ordinarie 157
Il metodo di ulero back,ard * fortemente >3stabile$ 9e( per5( il valore di 2
n8%
viene calcolato
applicando iterativamente e con un numero limitato di iterazioni la relazione:
2
n8%
Ji8%K
' 2
n
8 hf(2
n8%
JiK
( t
n8%
!
dove 2
n8%
J)K
* stato calcolato usando il metodo di ulero for,ard( il metodo pu5 diventare
instabile$
; evidente che nel caso di problemi non stiff la scelta di non sprecare calcoli nel portare
a convergenza accurata il metodo implicito * ragionevole poichM( in questo caso( non *
necessario un metodo estremamente stabile$
Ci si pu5 chiedere perchM nel caso di problemi stiff non conviene ricorrere ad un
algoritmo adatto( ad esempio Dear( e iterare il procedimento iterativo in modo da ottenere
una ragionevole soluzione del sistema in modo da utilizzare effettivamente un metodo
implicito$

Guando si ha un problema stiff e si desidera risolvere il sistema non lineare con il


metodo di sostituzione si * costretti ad utilizzare un passo di integrazione
estremamente piccolo anche se l&algoritmo usato * adatto a risolvere problemi stiff$
In caso contrario le iterazioni ("#$")<! divergono dalla soluzione$
.er comprendere questo importante punto * necessario vedere come si comporta il
metodo di sostituzione applicato alla solita equazione di riferimento$ In questo caso le
iterazioni diventano:
("#$")@! b
Ji8%K
' hor
)
b
JiK
8 hov
)
3 v
%
ossia sono del tipo:
("#$")A! b
Ji8%K
' mb
JiK
8 a
Come si * visto nel Capitolo %# le iterazioni convergono alla soluzione solo se risulta:
("#$")#! S m S O %
e( perci5:
("#$"%)! S hor
)
S O %
In caso contrario le iterazioni divergono anche se il valore di primo tentativo $ molto
prossimo alla soluione$
Esempio:
Con un valore di o uguale a 3%))) e r
)
' % (Eetodo di ulero back,ard!( h ' $)%( v
)
' %( v
%
'
% si ottiene:
b ' 3%)b 3 %%
ossia la soluzione * b ' 3%$ >pplicando il metodo delle sostituzioni( si ottiene la seguente
formula iterativa:
158 Capitolo 29
b
Ji8%K
' 3%)b
JiK
3 %%
che diverge anche partendo da un valore di primo tentativo molto buono$ >d esempio se b
J)K
'
3%$))% si ottengono i seguenti valori di b: 3#A$####:( 3%%$( $))))4<@( 3%%$)%( ##$)):(
3%)))$%( $$$

Il raggio di convergena del metodo di sostituzione * simile a quello di sta&ilit di


un metodo esplicito ed * legato al prodotto fra il passo di integrazione e il
massimo autovalore dello Qacobiano$
.erci5 anche se il metodo implicito usato ha una stabilitC molto buona e consentirebbe
un passo di integrazione molto grande( si * costretti ugualmente a ridurre notevolmente il
passo di integrazione per evitare che il metodo iterativo di sostituzione diverga$
.oichM il metodo predictor 3 corrector * molto vantaggioso (quando funziona! sia
in termini di tempo di calcolo sia in termini di occupazione di memoria (non
richiede la memorizzazione dello Qacobiano! esso viene utilizzato per problemi
che non sono stiff e con algoritmi non adatti a risolvere problemi stiff( ma con
migliori doti di accuratezza: tipicamente vengono usati i metodi di >dams 3
Eoulton$
29.1+.).2 "etodo di /e0ton
In linea di principio il sistema:
("#$"%%! $
%
8 % 3 hf($
)
8 r
)
%( t
n8%
! ' &
pu5 essere risolto( rispetto al vettore %( con una delle tecniche viste nel Capitolo ": valide per
la soluzione di sistemi non lineari$
Da un punto di vista pratico non conviene utilizzare un generico programma per
la soluzione di sistemi non lineari dal momento che il sistema ("#$"%%! possiede
delle caratteristiche che lo rendono speciale$
Guesto problema di soluzione di un sistema non lineare * speciale per i seguenti motivi$
%$ Il punto di previsione( $( pu5 essere reso accurato quanto basta per far convergere il
metodo di =e,ton$ Infatti se il passo di integrazione( h( tende a zero( le componenti $
)
e $
%
tendono alle componenti z
)
' y
n
e z
%
' hy&
n
' hf(2
n
( t
n
!$ Guindi( al tendere di h a zero la
correzione % deve tendere anch&essa a zero$ .er questo motivo( di solito( non si utilizzano
algoritmi alternativi al metodo di =e,ton per forzare la convergenza: se dovessero sorgere
problemi nella soluzione del sistema si diminuisce semplicemente il passo di integrazione$
9i noti un punto importante$
Sistemi di equazioni differenziali ordinarie 159

6a convergena del metodo di =e,ton * legata al passo di integrazione solo in via


indiretta( tramite la previsione $$ 9e la previsione * soddisfacente il metodo di
=e,ton pu5 convergere anche con passo di integraione molto grande$
Ci5 non * vero con il metodo di sostituzione che converge solo se il passo di
integrazione * piccolo per problemi stiff( indipendentemente dalla &ont o meno
della previsioneL
Il metodo di =e,ton applicato all&equazione di riferimento diventa:
("#$"%"! (% 3 hr
)
o!d ' 3 (b 3 hr
)
ob 3 hov
)
8 v
%
!
.oichM in questo caso l&equazione da azzerare per ottenere il valore di b * lineare il
metodo di =e,ton converge in una sola iterazione indipendentemente dai valori di v
)
( v
%
( oe
h$
Esempio:
Con un valore di ouguale a 3%))) e r
)
' % (Eetodo di ulero back,ard!( h ' $)%( v
)
' %( v
%
' %
si ottiene:
d ' 3 (b 8 %)b 8%%!H%%
9e b ' 3%$))% risulta d ' $))% ossia il metodo converge in una iterazione$
Ovviamente il passo di integrazione influisce sulla precisione dell&algoritmo usato per
integrare il sistema (sia che si utilizzi il metodo di sostituzione che un metodo tipo =e,ton
per calcolare la correzione %!$
"$ Guando il sistema non lineare ha la forma speciale ("#$"):! lo Qacobiano del sistema
stesso( necessario per la sua soluzione con il metodo di =e,ton( *:
("#$"%/! * ' I 3 hr
)
J

e pu5 essere ricavato immediatamente se * noto lo Qacobiano del sistema differenziale f( J$
In questo caso( perci5( il metodo di =e,ton richiede la soluzione del sistema lineare:
("#$"%4! *d
JiK
' (I 3 hr
)
J!d
JiK
' 3$
%
3 %
JiK
8 hf($
)
8 r
)
%
JiK
(t
n8%
!
da cui si ricava la nuova correzione:
("#$"%:! %
Ji8%K
' %
JiK
8 d
JiK

9i noti che durante queste iterazioni viene mantenuto costante sia lo Qacobiano del
sistema differenziale( J( sia quello del sistema non lineare( *( e( quindi( viene
utilizzata in tutto il ciclo la stessa fattorizzazione$
/$ >d ogni passo di integrazione deve essere risolto il sistema lineare ("#$"%4!$ =ei
programmi in cui vengono implementati questi metodi generalmente la matrice * viene
160 Capitolo 29
rifattorizzata solo se lo Qacobiano( J( * stato aggiornato o se viene modificato il passo di
integrazione o l&ordine dell&algoritmo$ .erci5 una volta fattorizzata la matrice del sistema
linearizzato viene utilizzata la stessa fattorizzazione per alcuni cicli successivi$
4$ Di solito (in particolare in problemi di grandi dimensioni! non conviene calcolare lo
Qacobiano J ad ogni iterazione( ma solo quando si hanno problemi di convergenza nella
soluzione del sistema$ Guando viene modificato J deve essere anche aggiornata e fattorizzata
la matrice *$
:$ Il sistema non lineare ("#$"):! * speciale anche rispetto al sistema che si otterrebbe
nel caso in cui il sistema differenziale non fosse nella forma speciale ("#$%!$

9olo nel caso speciale considerato( diminuendo il passo di integrazione( h( si ha la


certezza di poter risolvere il sistema lineare associato al metodo di =e,ton senza
incontrare problemi numerici$ Infatti( in questo caso( la matrice * tende alla
matrice unitaria( I$
=el caso generale si possono avere problemi numerici nella soluzione del sistema
lineare associato al metodo di =e,ton quando h tende a zero$ >d esempio( se il sistema di
equazioni differenziali * nella forma:
("#$"%<! #y& ' f(y(t!
la matrice * diventa:
("#$"%@! * ' # 3 hr
)
J
>l tendere di h a zero possono nascere problemi numerici se la matrice # * singolare
(sistemi misti algebrico differenziali!$ .er questo motivo nel caso generale non si pu5 pi?
forzare la convergenza semplicemente diminuendo il passo di integrazione ed * necessario
ricorrere a programmi di soluzione di equazioni non lineari pi? sofisticati$
<$ Fi * una differenza rispetto al caso generale anche per quanto riguarda il controllo
della convergenza del metodo di =e,ton$ =ei programmi generali per la soluzione di sistemi
di equazioni algebriche non lineari un&iterazione viene( di solito( accettata se riduce una
qualche norma del vettore dei residui$

=el caso speciale analizzato il controllo della convergenza del metodo di =e,ton
normalmente viene effettuato in modo da garantire una precisione paragonabile o
inferiore all&errore locale ammissibile: le iterazioni vengono interrotte quando la
correzione( d( * inferiore alla tolleranza accettata sulle variabili$
In questo caso speciale viene perci5 usato un criterio analogo a quello proposto nel
Capitolo ": basato sulla diminuzione di una norma del vettore d da un&iterazione all&altra$
.oichM( in questo caso( si conosce l&errore accettabile sulle variabili l&uso del criterio appare
pi? spontaneo$
Sistemi di equazioni differenziali ordinarie 161
29.1+.9 #obustezza in problemi stiff
Folendo implementare un algoritmo Eulti Falore per risolvere problemi stiff *
indispensabile curarne molto attentamente la ro&ustea$ Gui di seguito vengono analizzate
le principali cause che possono rendere un programma instabile e i rimedi che si devono
prendere in considerazione$
29.1+.9.1 Auto1alori con parte immaginaria molto grande
Dli algoritmi Eulti Falore adatti per risolvere problemi stiff sono quelli della famiglia di
Dear$ ssi presentano una zona di stabilitC( mostrata nelle figure "#$@( che * adatta a
risolvere la maggior parte dei problemi stiff$
>nalizzando le precedenti Nigure si pu5 notare che anche per gli algoritmi di questa
famiglia si possono avere problemi di stabilitC$ Guesta eventualitC si presenta nel caso raro(
ma possibile( in cui il problema ha un autovalore con parte immaginaria molto grande e parte
reale negativa e viene utilizzato un algoritmo di ordine elevato$

9e il passo di integrazione e lWordine del metodo vengono controllati solo con il


criterio classico esposto nel paragrafo ("#$%)$4! pu5 succedere che non ci si
accorga di essere in questa situazione$ 6Wordine del metodo pu5 rimanere elevato e
di conseguenza il passo di integrazione deve essere mantenuto molto piccolo$
.er evitare questo grave inconveniente sono indispensabili alcuni accorgimenti come:
Diminuire non solo il passo di integrazione( ma anche lWordine del metodo quando si
hanno problemi di convergenza nel metodo di =e,ton durante la soluzione del sistema
non lineare ("#$"%%!$
Controllare che il vettore di =ordsiek abbia componenti decrescenti e in caso contrario
ridurre lWordine del metodo$
=ei casi dubbi ripartire con il metodo di ulero bac,ard che * fortemente >39tabile$
29.1+.9.2 .roblemi con forti discontinuit
Dli algoritmi Eulti Falore devono la loro forza al fatto che memorizzano la storia precedente
e permettono( quindi( una migliore approssimazione rispetto ai metodi One 9tep$

Guello che * il loro punto di forza pu5 anche diventare un punto debole$ Infatti se
le funzioni presentano delle discontinuitC questa memoria del passato gioca in
sfavore dei metodi Eulti Falore$
9i consideri la solita equazione di riferimento ("#$/"! e si supponga che il valore di o
cambi improvvisamente valore in corrispondenza di un istante t[ (Fedi Nigura "#$A!$
162 Capitolo 29
y
t
b

2
Predictor
Corrector
t
n-1
t
n
Figura 29.+
6a correzione necessaria nel caso dellWequazione ("#$/"! * data dalla relazione:
v b h v h r b
% ) )
_ | _ o o
Fiene perci5 richiesto un passo di integrazione( h( dellWordine di %Ho
"
per fare in modo
che b sia sufficientemente piccolo$ =el caso in cui il valore di o
"
sia molto elevato il passo di
integrazione deve( quindi( scendere a valori proibitivi$
Guando durante lWintegrazione ci si accorge che il passo di integrazione deve essere
ridotto improvvisamente a valori molto bassi conviene riinizializzare il problema$ 9i hanno
cosT i seguenti due vantaggi: viene usato il metodo di ulero bac,ard che * fortemente >3
stabile e si perde la memoria del passato che crea disturbo numerico$
29.1+.9.3 ,incoli sulle 1ariabili
In molti problemi pratici alcune delle variabili di integrazione hanno dei vincoli che devono
assolutamente rispettare per evitare incongruenze fisiche o errori numerici$
>d esempio in unWequazione del tipo:
2 2 &|
il valore della 2 non pu5 diventare negativo$
In alcune situazioni * necessario vincolare qualche variabile per evitare che il sistema
diventi mal condizionato$ >d esempio la seguente equazione:
2 2 &| %)))
"
* ben condizionata se la 2 * positiva dal momento che f
2
* minore di zero( ma diventa mal
condizionata se per qualche motivo la 2 diventa negativa$ In tal caso infatti risulta:
f
2
' 3")))2 P )
In queste circostanze sarebbe un grave errore lasciare allWutente il compito di prevenire
la violazione di qualche vincolo$ Infatti lWutente potrebbe intervenire nei seguenti modi:
Sistemi di equazioni differenziali ordinarie 163
Diminuendo drasticamente la tolleranza sulle variabili$
Eodificando il sistema ad esempio riportando la variabile allWinterno del vincolo quando
esso viene violato$
=el primo caso si aumenta inutilmente il numero di calcoli e( inoltre( non sempre si
riesce a controllare lWinconveniente$
=el secondo caso si introduce una discontinuitC nel sistema con conseguente drastico
aumento nel numero di calcoli nellWintorno delle discontinuitC$
.er rendere robusto il programma * necessario gestire la presenza dei vincoli
allWinterno dellWalgoritmo di integrazione$
29.1+.1+ 'fficienza in problemi stiff
Folendo implementare un algoritmo Eulti Falore per risolvere problemi stiff *
indispensabile curarne molto attentamente anche lWefficiena$
Il punto chiave nei problemi stiff consiste nella soluzione del sistema non lineare
("#$"%%!
$
%
8 % 3 hf($
)
8 r
)
%( t
n8%
! ' &
mediante il metodo di =e,ton che richiede( a sua volta( la soluzione iterativa del sistema
lineare ("#$"%4!:
*d
JiK
' (I 3 hr
)
J!d
JiK
' 3$
%
3 %
JiK
8 hf($
)
8 r
)
%
JiK
(t
n8%
!
In particolare quattro sono i punti pi? delicati:
Guando deve essere fattorizzata la matrice del sistema linearizzato( *$
Come deve essere fattorizzata la matrice del sistema lineare( *$
Guando deve essere aggiornato lo Qacobiano( J$
Come deve essere aggiornato lo Qacobiano( J$
29.1+.1+.1 2uando de1e essere fattorizzata la matrice -
=ei primi programmi scritti per risolvere problemi stiff veniva utilizzata una sola matrice:
tale matrice inizialmente conteneva lo Qacobiano J0 essa veniva poi ricoperta con la matrice
*0 infine veniva utilizzato lo stesso spazio di memoria per la fattorizzazione della matrice *$

Con questa strategia viene risparmiato spazio di memoria dal momento che viene
utilizzata una sola matrice per tutte le operazioni$
164 Capitolo 29

Ricoprendo lo Qacobiano J con le altre matrici * necessario ricalcolarlo ogni volta


che la matrice * deve essere rifattorizzata$
Come vedremo pi? avanti nella maggior parte dei problemi reali il costo( in termini di
tempo di calcolo( del calcolo dello Qacobiano J * la parte preponderante del costo totale o(
comunque( * una parte consistente di esso$
.er questo motivo nei programmi pi? recenti si preferisce mantenere in memoria due
matrici distinte: la prima contenente lo Qacobiano( J( la seconda contenente dapprima la
matrice * e poi la sua fattorizzazione$
6a matrice * deve essere ricalcolata e( quindi( rifattorizzata ogni qualvolta viene
modificato o lo Qacobiano( J( o il passo di integrazione( h( o lWordine dellWalgoritmo (viene
modificato r
)
!$ .er questo motivo * importante non modificare troppo spesso nM il passo di
integrazione nM lWordine dellWalgoritmo$
29.1+.1+.2 Come de1e essere fattorizzata la matrice -
In molti problemi pratici lo Qacobiano( J( e( quindi( la matrice * sono sparsi o strutturati$
; perci5 indispensabile utilizzare la fattorizzazione che meglio si presta alle
particolaritC della matrice *$
Dal momento che lWutente pu5 non avere dimestichezza con tutte le possibili forme di
fattorizzazione un buon programma dovrebbe contenere una scelta automatica della
fattorizzazione pi? conveniente$
29.1+.1+.3 2uando de1e essere aggiornato lo 3acobiano 3
=ella maggior parte dei problemi pratici lo Qacobiano J deve essere calcolato numericamente
e per far ci5 sono necessarie tante chiamate del sistema quante sono le componenti del vettore
y se lo Qacobiano * denso$
9i * visto che conviene mantenere costante lo Qacobiano J per pi? iterazioni a
meno che ci5 comprometta la convergenza del metodo di =e,ton nella soluzione
del sistema non lineare ("#$"%%!$

.er questo motivo gli algoritmi impliciti che a prima vista sembrerebbero meno
efficienti di quelli semi impliciti risultano invece vincenti$ Infatti i metodi semi
impliciti non possono utilizzare questa strategia dal momento che lo Qacobiano fa
parte integrante della loro formulazione a differenza di quelli impliciti che usano
lo Qacobiano solo per la convergenza del metodo di =e,ton$
6o Qacobiano deve essere aggiornato quando scade lWefficienza nella convergenza del
metodo di =e,ton$
=ormalmente viene anche ricalcolato dopo un certo numero prefissato di iterazioni$ In
questo caso * preferibile legare questo aggiornamento alle dimensioni del problema$ Infatti il
Sistemi di equazioni differenziali ordinarie 165
vantaggio di mantenere costante lo Qacobiano aumenta con lWaumentare delle dimensioni$ .er
problemi di piccole dimensioni pu5 diventare svantaggioso mantenere costante lo Qacobiano
dal momento che lWaumento del numero di iterazioni pu5 essere maggiore del risparmio
conseguito nella diminuzione del numero di Qacobiani calcolati$
29.1+.1+.4 Come de1e essere aggiornato lo 3acobiano 3
=el Capitolo ": era stato mostrato come lo Qacobiano di un sistema non lineare poteva essere
calcolato facendo variare pi? variabili contemporaneamente quando lo Qacobiano era sparso$
6o stesso accorgimento pu5 e deve essere adottato anche nellWaggiornamento dello
Qacobiano J quando sia sparso$
29.11 "etodi di estrapolazione
I metodi di questa famiglia sfruttano l&estrapolazione nelle forme considerate nel Capitolo %<$
=el caso di equazioni differenziali non stiff la formulazione pi? utilizzata * la seguente$

6&algoritmo con cui si costruiscono i punti che servono alla estrapolazione e


ottenuti al variare di h * una modifica del metodo del punto di mezzo dovuta a
Dragg J9toer( Iulirsch (%#A/!K( mentre l&estrapolazione per h tendente a zero
viene eseguita con il metodo di Iulirsch 3 9toer J9toer( Iulirsch (%#A/!K applicato
a funzioni razionali$
Il metodo del punto di mezzo:
("#$"%A! y
n8%
' y
n3%
8 "hf(y
n
( t
n
! y
)
' y(t
)
! n ' "($$$
ha il grave inconveniente di avere una soluzione parassita che * insta&ile e oscillante (come *
stato mostrato nella discussione sulla stabilitC degli algoritmi Eulti 9tep!$
sso ha l&ulteriore difetto di richiedere la conoscenza del valore di y nel punto t
%
$ Va
per5 un grosso merito: la formula che dC il suo errore locale * costituita di sole potenze pari
di h$
Dragg ha modificato il metodo in modo da mantenere la stessa proprietC nei riguardi
dell&errore locale( ma riducendo l&influenza della soluzione parassita e rendendo( nello stesso
tempo( il metodo autosufficiente$
Il metodo di Dragg * costituito dalle seguenti equazioni:
("#$"%#! z
%
' z
)
8 "hf(z
)
( t
)
! z
)
' y(t
)
!
("#$"")! z
n8%
' z
n3%
8 "hf(z
n
( t
n
! n ' %("( = (= pari!
("#$""%! y
z z z
=
= = =
|
_ _
_ % % %
"
4
166 Capitolo 29
Folendo integrare da t
)
a t
N
si prende un passo di integrazione :
("#$"""! h '
t t
=
N

)
= pari
("#$""/! t
N
' t
)
8 =h
e si calcola y
=
per diversi valori di =$
sistono varie possibili strategie nella scelta della sequenza dei valori di =$ 1n tempo
veniva utilizzata la sequenza di Romberg: "( 4( A( %<( $$$ Ora si preferisce la seguente "( 4( <(
A( %"( %<( "4( $$$ che comporta una diminuzione meno rapida del passo di integrazione e( di
conseguenza( anche un aumento pi? lento del numero di passi necessari$
Indicando con 2
h
il valore della generica componente di y
=
ottenuto per un particolare
valore di h Dragg ha dimostrato che l&errore nel punto t
N
* esprimibile nel seguente modo:
("#$""4! 2
h
' 2(t
N
! 8 C
%
h
"
8 C
"
h
4
8 C
/
h
<
8 $$$
1na volta calcolato il valore di 2
h
per diversi valori di h viene effettuata una
estrapolazione per h ' )$ .er l&estrapolazione si pu5 utilizzare un&approssimazione
polinomiale con l&algoritmo di =eville (per questo problema * equivalente all&estrapolazione
di Richardson! oppure( meglio( una funzione razionale usando l&algoritmo di Iulirsch 3 9toer$
6a convergenza del metodo pu5 essere valutata confrontando fra loro due diversi valori della
estrapolazione$

Il procedimento quando funziona * molto efficiente: richiede un numero totale di


calcoli del sistema f inferiore rispetto a qualsiasi altra alternativa$

.urtroppo anche con la modifica di Dragg vi * sempre la possibilitC di avere


fenomeni di instabilitC causati dalla soluzione parassita$
; ovvio che lWalgoritmo di Dragg va evitato per risolvere problemi stiff$

9e il problema * stiff * necessario utilizzare un algoritmo che sia >3stabile o(


meglio( fortemente >3stabile quale il metodo di ulero &acward ("#$%"! o il
metodo di Cash ("#$%%:! 3 ("#$%%#!$
Guando il valore di t
N
* molto diverso da t
)
il procedimento pu5 non convergere in un
numero limitato di calcoli di 2
h
$ 9i hanno( in questo caso( due possibili alternative$
%$ Il procedimento viene ripetuto fino ad arrivare a convergenza aumentando il valore
di =( ma utilizzando solo un numero prefissato di valori di 2
h
per effettuare l&estrapolazione
(ad esempio <!$
Sistemi di equazioni differenziali ordinarie 167
"$ 6&intervallo totale viene spezzato in sottointervalli utilizzando qualche strategia per
scegliere automaticamente l&ampiezza dei vari sottointervalli basata sui precedenti successi o
fallimenti$
6a prima strategia * preferibile con funzioni ovunque tranquille( mentre la seconda
risulta vantaggiosa quando le funzioni hanno delle zone ristrette in cui subiscono forti
variazioni$
Guando si desidera conoscere il valore di y anche in punti intermedi il procedimento va
ripetuto spezzando l&intervallo totale in sottointervalli$
29.12 2uesiti

168 Capitolo 29
Irenan B$ $( 9$ 6$ Campbell and 6$ R$ .etzold (%#A#! +umerical Solution of
4nitial).alue 3ro&lems in 5ifferential)(lge&raic 'quations( =orth3Volland( =e,3
Volland( =e, Xork$
Iro,n .$ =$( D$ D$ I2rne and >$ C$ Vindmarsh (%#A#! .O5': ( .aria&le
%oefficient O5' SolverZ( 9iam Q$ 9ci$ 9tat$ Comput$( 1&( %)/A3%):%$
Iro,n .$ =$( >$ C$ Vindmarsh and 6$ R$ .etzold (%##"! ( 5escription of
5(S30: ( Solver for "arge)Scale 5ifferential)(lge&raic S*stems( 6a,rence
6ivermore =ational Report 1CR6$
I2rne D$ and >$ E$ Dean (%##/! 6he +umerical Solution of Some 0inetics
!odels with .O5' and %7'!04+ 44( Comp$ Chem$( 1)( "#@3/)"$
Chan X$ =$ I$( I$ Iirnbaum and 6$ 6apidus (%#@A! Solution of Stiff 5ifferential
'quations and the 8se of 4m&edding 6echniques( Ind$ ng$ Chem$ Nundam$( 1)(
%//3%4#$
Curtis >$ R$( E$ Q$ D$ .o,ell and Q$ B$ Reid (%#@4! On the estimation of sparse
9aco&ian matrices( Q$ Inst$ Eaths$ >pplns$( 1( %%@3%")$
Dahlquist( D$ (%#</! Sta&ilit* questions for some numerical methods for ordinar*
differential equations( .roc$ 92mposia in >pplied Eathemathics( 1'( %4@$
Dear( C$ W$ (%#@%! +umerical 4nitial .alue 3ro&lems in Ordinar* 5ifferential
'quations( ngle,ood Cliffs( =$ Q$
Vindmarsh >$ C$ (%#A)! "SO5' and "SO54, 6wo +ew 4nitial .alue Ordinar*
5ifferential 'quation Solvers( >CE 9ID=1E =e,sletter( 1'( %)3%%$
Eanca D$( -$ Naravelli( D$ .ennati( D$ Iuzzi Nerraris and $ Ranzi (%##:!
+umerical 4ntegration of "arge 0inetic S*stem( IChea.3" Conf$ 9er$( RI9( %%:3
%"%$
Eanca D$ and D$ Iuzzi Nerraris (%##:! O&-ects are not O5's: :h* it is :orth
Quitting ;ortran to 'nter %<<( IChea.3" Conf$ 9er$( RI9( A:3#4$
.etzold 6$ (%#A/! (utomatic selection of !ethods for Solving Stiff and +onstiff
S*stems of Ordinar* 5ifferential 'quations( 9iam Q$ 9ci$ 9tat$ Comput$( !( %/<3
%4A$
.itz W$ Q$ and C$ B$ Westbrook (%#A<! %hemical 0inetics of the 7igh 3ressure
O=idation of n)&utane and its 1elation to 'ngine 0noc,( Combust$ Nlame( ((
%%/3%//$
Radhakrishnan B( >$ C$ Vindmarsh (%##/! 5escription and 8de of "SO5', the
"ivermore Solver for Oridinar* 5ifferential 'quations( =>9> Ref$ .ubl$ %/"@(
6ivermore$
Rice( R$Q$( (%#A/! +umerical !ethods, Software, and (nal*sis( EcDra,3Vill(
9ingapore
Rosenbrock( V$ V$ (%#</! Computer Q$( '( /"#$
9incovec R$ N$( >$ E$ risman( $ 6$ Xip and E$ >$ pton (%#A%! (nal*sis of
5escriptor S*stems 8sing +umerical (lgorithms( I -rans$ on >ut$ Contr$( 2((
%/#3%4@$
9toer(Q$ and Iulirsch( R$ (%#A/! 4ntroduction to +umerical (nal*sis( 9pringer3
Ferlag( =e, Xork
29. SIS,E-I DI E./#0I12I DIFFE3E20I#4I 13DI2#3IE 512 512DI0I12I
I2I0I#4I..................................................................................................................................99
Sistemi di equazioni differenziali ordinarie 169
"#$% I=-ROD1\IO=$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ##
"#$" >CC1R>-\\> DD6I >6DORI-EI =1ERICI$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%)/
"#$/ CO=DI\IO=>E=-O D6 .ROI6E>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%)4
"#$4 9->II6I-] DD6I >6DORI-EI =1ERICI$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%)A
"#$: 9I9-EI 9-INN$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %%@
"#$< CO=-RO66O D6 .>99O DI I=-DR>\IO=$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%")
"#$@ E-ODI DI R1=D3B1--> 9.6ICI-I$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%"%
>?.@.A Strategia per la gestione automatica del passo di integraione.........................A>B
>?.@.> Stima dell#errore locale.......................................................................................A>C
"#$A E-ODI DI R1=D3B1--> IE.6ICI-I 9EIIE.6ICI-I$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%"#
"#$# >6DORI-EI E16-I 9-.$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %/"
"#$%) >6DORI-EI E16-I F>6OR$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %/<
>?.AD.A %ontrollo dell#errore locale...............................................................................ABA
>?.AD.> .ariaione del passo di integraione................................................................ABE
>?.AD.E %am&iamento dell#ordine del metodo................................................................ABF
>?.AD.B Strategia di scelta del passo e dell#ordine........................................................AB@
>?.AD.F 4niialiaione di un metodo !ulti .alore......................................................AFD
>?.AD.C Scelta del primo passo di integraione.............................................................AFD
>?.AD.@ Seleione di algoritmi !ulti .alore..................................................................AFD
>?.AD.G Soluione del sistema non lineare.....................................................................AFF
>?.AD.? 1o&ustea in pro&lemi stiff...............................................................................ACA
>?.AD.AD 'fficiena in pro&lemi stiff..............................................................................ACE
"#$%% E-ODI DI 9-R>.O6>\IO=$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %<:
"#$%" G19I-I$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %<@