Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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 %!$
$
$
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
$
$
h
h
n n
n n
o
o
O %
dove viene indicato con o
n
il massimo autovalore dello Qacobiano$
%$ > 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$
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$
%
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
.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
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
_
"
%
" "
"
" %
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
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$
.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$
%$ 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&iezza 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
$$$$
=
+ +
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$
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$
<
' 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 %$
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$
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 ("#$%!$
=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$
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
.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$
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$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ %<@