Sei sulla pagina 1di 14

Fluidodinamica Computazionale

- Esercitazione 1 -
- Sistemi di equazioni differenziali ordinarie –

Alberto Corbelli
2 Gennaio 2007

Parte 1
Considerato il sistema di equazioni differenziali:

dq
= Aq
dt
q (0) = q
q = { q1 q2 } '

dove la matrice A è definita come:


a c 
A= 
0 b

si procede ad analizzare le caratteristiche di consistenza, accuratezza e stabilità dei principali


schemi numerici analizzati durante il corso.

n +1
1) Metodo di Eulero: qa = qa + Aqa Dt
n n

Al fine di valutare la consistenza del metodo si procede a comparare la soluzione esatta del
n
problema proposto con quella approssimata ottenuta dal metodo. Detta qe la soluzione esatta al
passo n-simo, vale la seguente relazione, ottenuta mediante lo sviluppo in serie di Taylor:

n
n +1  dq 
q e = q +   Dt + o( Dt 2 )
n
e
 dt e

Per ottenere l’equazione di evoluzione dell’errore, si sottragga membro a membro da quest’ultima


espressione quella relativa alla soluzione approssimata proposta dal metodo di Eulero:

e n +1 = qen +1 + qan +1 = en ( I + ADt ) + o( Dt2 )

Se, data la conoscenza delle condizioni iniziali del problema, e 0 = 0 , si ottiene, al passo n-esimo:

e n = n ⋅ o( Dt 2 )

1
Secondo la relazione ottenuta, possiamo maggiorare l’errore come:

e n < knDt 2 = kTDt

poiché si è posto T = nDt il tempo totale di integrazione numerica al passo n-esimo.


E’ chiaro quindi immediatamente che è soddisfatta la relazione:

lim e n = 0
Dt →0

che rappresenta esattamente in maniera matematica la definizione di consistenza di un metodo


numerico. Il metodo quindi può dirsi consistente, con accuratezza inoltre del primo ordine, poiché
l’errore è proporzionale a Dt .
Per valutare invece la stabilità del metodo si dovrebbe analizzare l’equazione di evoluzione
dell’errore globale, inteso come l’errore e introdotto dall’approssimazione del metodo cui si
aggiunge l’errore di troncamento σ introdotto inevitabilmente dal calcolatore ad ogni passo di
integrazione.
Si definisce quindi la soluzione del metodo qc affetta da tale errore aggiuntivo:

qcn = qan + σ n

Come precedentemente operato per l’errore di approssimazione, si sottragga membro a membro da


questa espressione quella relativa alla soluzione approssimata ottenuta mediante il metodo di
Eulero, ottenendo l’equazione di propagazione dell’errore totale:

ε n +1 = ε n ( I + ADt ) + σ n

Se si suppone che all’inizio del metodo l’unico errore introdotto sia imputabile alla precisione del
calcolatore, ed in più, per semplicità di rappresentazione, si decida di trattare un problema
monodimensionale, varrà:

ε0 =σ0
ε 1 = aε 0 + σ 1 = aσ 0 + σ 1
...
n n
σ
ε n = ∑ a n −k σ k < σ ∑a n −k
=
k =0 k =0 1− a

avendo posto a = λ Dt , con λ equivalente monodimensionale della matrice A.


La serie numerica riportata si dimostra essere convergente se e solo se a < 1 ; se a ∈ £ , la zona in
cui è soddisfatta la relazione indicata è rappresentata nel piano complesso come l’interno di una
circonferenza di raggio 1 e centrata nel punto (-1,0), come mostrato nel grafico seguente. Se
l’autovalore ricade sul contorno di tale luogo di punti, si parlerà di stabilità marginale del metodo.
Unica eccezione è il punto (0,0), che rappresenta un punto di instabilità del problema.
Se infine il problema è, come nel caso di partenza, pluridimensionale, bisognerà che tutti i suoi
valori siano situati all’interno del luogo di punti descritto, che prende anche il nome di bacino di
stabilità del metodo.

2
Nelle simulazioni successive si richiederà quindi che siano soddisfatte le relazioni:

adt < 2
bdt < 2

se a e b sono entrambi numeri reali.

Fig.1 – Bacino di stabilità del metodo di Eulero – Piano complesso

n +1
2) Metodo dei Trapezi: ( I − ADt / 2)qa = ( I + ADt / 2) qa
n

Senza riproporre i passaggi logici necessari alla discussione di consistenza, accuratezza e stabilità
del metodo numerico, possiamo affermare che l’accuratezza del metodo dei trapezi è del secondo
ordine, poiché l’errore di approssimazione e è proporzionale a Dt 2 ; ovviamente, il metodo è
consistente. Come si può notare dagli autovalori del sistema, il bacino di stabilità del metodo
coincide con tutto il semipiano a parte reale negativa del piano complesso, incluso l’asse
immaginario: l’unico vincolo agli autovalori del problema sarà quindi di avere parte reale negativa.

3) Metodo di Runge-Kutta a due stadi:


q (1) = q n
q (2) = q n + α1Dtq(1) Il metodo si può definire
q n +1 = q n + Dt ( β1 Aq(1) + β 2 Aq(2) ) consistente se è rispettata le
seguenta condizione:

β1 + β 2 = 1

3
che permette il troncamento dell’errore al secondo grado di Dt, rendendo identici i termini
moltiplicati per Dt nell’espressione dello sviluppo di Taylor della soluzione esatta e nell’espressione
della soluzione approssimata ottenuta dal metodo numerico.
Se inoltre vale:
1
α1 β 2 =
2

anche i termini moltiplicati per Dt 2 nelle due espressioni risultano identici, venendo così ad
eliminarsi vicendevolmente nell’equazione di evoluzione dell’errore, rendendo il metodo accurato
al secondo ordine.
Volendo rappresentare in un grafico il bacino di stabilità di tale metodo numerico si ottiene un ovale
di estensione superiore all’area descritta dal cerchio di stabilità marginale del metodo di Eulero e
con parte del perimetro posta sull’asse immaginario del piano complesso, a dimostrare come il
metodo di Runge-Kutta a 2 stadi non sia solamente più stabile, ma permetta anche di comprendere
autovalori immaginari puri.
Tale grafico riassume quanto appena detto:

Fig. 2 – Bacino di stabilità del metodo di Runge Kutta a 2 stadi – piano complesso

4) Metodo di Runge-Kutta a quattro stadi:

q (1) = q n
q ( k ) = q n + Dtα k −1 Aq( k −1) k = 2,.., 4
4
q n +1 = q n + Dt ∑ β k q( k )
k =1

Analogamente a come si è proceduto in precedenza per il metodo di Runge-Kutta a soli due

4
stadi, se sono verificate le condizioni:
4

∑β
k =1
k =1

1
α1 = α 2 = ; α3 = 1
2

allora il metodo è consistente e accurato al quarto ordine.


Il bacino di stabilità del metodo in oggetto impone un valore massimo, in modulo, agli autovalori a
sola parte reale negativa pari a 2,78, mentre gli autovalori immaginari puri sono limitati ad un
modulo non superiore a 2,56; il vantaggio dell’utilizzo di un metodo di Runge-Kutta a più passi è,
in generale, una maggiore stabilità e la possibilità, inoltre, di poter comprendere anche autovalori a
parte reale positiva, seppur limitata.

n+2 n +1 3 n +1 1 n
5) Metodo di Adams-Bashforth (multistep esplicito a due passi): q = q + Dt ( Aq − Aq )
2 2

Quest’ultimo metodo è consistente, accurato al secondo ordine e caratterizzato da un bacino di


stabilità non molto esteso (addirittura autovalori reali con modulo inferiore ad 1), come
rappresentato nel grafico seguente:

Fig. 3 – Bacino di stabilità del metodo di Adams-Bashforth – piano complesso

Al fine di valutare l’applicabilità dei metodi numerici considerati al problema in questione, risulta
necessario attribuire un valore numerico alle costanti a,b,c all’interno della matrice A: tutti e cinque
i metodi richiedono, con condizioni più o meno stringenti, che gli autovalori del problema siano a
parte reale negativa, quindi si opererà su A in tal senso. In particolare, la costante c non ha influenza
sul modulo degli autovalori, avendo la matrice stessa la parte triangolare inferiore nulla.
Si vedano alcune relazioni allora per determinare le costanti a e b in riferimento ai metodi descritti (
per comodità, tratteremo a e b solamente reali.

5
aDt < 2 , a < 0
- metodo di Eulero:
bDt < 2 , b < 0

a<0
- metodo dei Trapezi:
b<0

aDt < 2 , a < 0


- metodo di Runge-Kutta a 2 stadi:
bDt < 2 , b < 0

aDt < 2, 78 , a < 0


- metodo di Runge-Kutta a 4 stadi:
bDt < 2, 78 , b < 0

aDt < 1 , a < 0


- metodo di Adams-Bashforth:
bDt < 1 , b < 0

Compatibilmente con l’intervallo Dt di integrazione ipotizzato, dettato dalla risoluzione temporale


richiesto e dalla potenza di calcolo disponibile, si potranno determinare i valori numerici da
attribuire ad a e b .

6
Parte 2
Si procede ora al calcolo della soluzione analitica del problema proposto, dopo aver assegnato i
valori numerici delle costanti a,b,c all’interno della matrice A, nonché delle condizioni iniziali
q0 = { q0 (1), q0 (2)} . In relazione ai metodi numerici descritti, è stato fissato:
Dt = 0.0001953125 s
i _ max = 51200
a = −0.5
b = −1.5

ossia un incremento temporale dimezzato rispetto a quello proposto nelle esercitazioni durante il
corso ed un numero di iterazioni doppio, a vantaggio della precisione della soluzione ottenuta; il
tempo di integrazione T rimane comunque inalterato a pari a 10 s. In questo caso, ovviamente, non
si discuterà di alcun tipo di accuratezza né di stabilità in quanto la soluzione è ottenuta per via
analitica, appunto, e quindi esatta.
L’espressione risultante per le due componenti del problema sarà allora:

q1 (t ) = 5e −0.5t
q2 (t ) = 10e −1.5t
q0 = { 5 10} '

Il valore del parametro c è stato posto una prima volta pari a 0 ed una seconda pari a 1, osservando
il variare della soluzione con esso.

1) Soluzione analitica, c=1:

Fig. 4 – Andamento nel tempo delle due componenti della soluzione, posto c=1

7
2) Soluzione analitica, c=0:

Fig. 5 – Andamento nel tempo delle due componenti della soluzione, posto c=0

Come si può notare dal diverso della componente q1 (t ) della soluzione, l’annullarsi del parametro c
disaccoppia l’evoluzione nel tempo delle due componenti q1 (t ) , q2 (t ) , che decadono quindi in
maniera esponenziale come se si trattassero delle soluzioni di due problemi distinti.
E’ possibile osservare il problema per c=1 nella sua forma modale, effettuando un cambio di base
attraverso la matrice di rotazione R per cui q = Rz .
In questo particolare caso:

1 −0.7071
R= 
0 0.7071 

Se si esprimono le condizioni inziali nella nuova base z, ottengo:

 15 
z0 = R −1q0 =  
14.1421

per cui il problema diventa ora:

z1 (t ) = 15e −0.5t
z2 (t ) = 14.1421e −1.5t

rimanendo immutati gli autovalori nella nuova base z.


Ritrasformando il problema nella vecchia base, si nota finalmente l’influenza della seconda
componente sulla prima:

q1 (t ) = 15e −0.5t − 10e−1.5t


q2 (t ) = 10e −1.5t

8
Parte 3
Si prosegue ora l’esercitazione applicando al problema dato due dei metodi di approssimazione
numerica analizzati. Nello specifico, verranno utilizzati per la soluzione il metodo di Eulero e di
Runke-Kutta a quattro stadi.
Allo scopo di discutere della bontà della soluzione, è riportato per ogni metodo un particolare
ingrandito numerose volte delle curve ottenute in riferimento al raffronto tra la soluzione analitica e
quella approssimata, che servirà ad evidenziare l’errore introdotto.
Per entrambe le soluzioni si è scelto un intervallo temporale di 10 s, con un Dt pari a 1/n, dove n è il
numero di iterazioni richieste: imposto n=51200, non eccessivamente pesante per il calcolatore
utilizzato, grazie anche al linguaggio Fortran77, risulta Dt = 0.0001953125 s , sufficientemente
piccolo per poter imporre le costanti numeriche a e b della matrice piuttosto a piacimento. Come
prima annunciato, sono state scelti:
a = −0.5
b = −1.5

decisamente all’interno dei bacini di stabilità dei due metodi, secondo i vincoli dichiarati
nell’ultimo paragrafo di Parte 1.

1) Metodo di Eulero:

La sovrapposizione della soluzione esatta (analitica) e di quella approssimata è ottenuta nel grafico
seguente:

Fig. 6 – Andamento nel tempo delle due componenti della soluzione approssimata e di quella esatta

9
di cui si riporta, come detto, un particolare:

Fig. 7 – Particolare dell’errore di approssimazione del metodo di Eulero

che mostra l’errore introdotto dal metodo.


Più precisamente, l’errore nei vari step di integrazione è riportato qui di seguito:

Fig. 8 – Andamento dell’errore per il metodo di Eulero

Si nota chiaramente come questo si mantenga dell’ordine di 10−5 per entrambe le componenti della
soluzione, con una migliore approssimazione sulla componente q1 (t ) , per cui addirittura tende quasi
a zero.

2) Metodo di Runge-Kutta a 4 stadi:

Analogamente a quanto mostrato per il metodo precedente, si riporta l’andamento della soluzione

10
approssimata, sovrapposta a quella analitica, esatta:

Fig. 9 – Andamento nel tempo delle due componenti della soluzione approssimata e di quella esatta

il particolare della soluzione:

Fig. 10 – Particolare dell’errore di approssimazione del metodo di Runge-Kutta a 4 stadi

e l’andamento dell’errore per entrambe le componenti:

Fig. 11 – Andamento dell’errore per il metodo di Runge-Kutta a 4 stadi

11
Come previsto dalla trattazione teorica, il metodo di Runge-Kutta a quattro stadi si dimostra molto
più accurato, mantenendosi immediatamente dall’inizio del calcolo nell’ordine di 10−6 , quindi di
almeno un ordine più accurato rispetto al metodo di Eulero.

Vediamo ora cosa accade quando un metodo numerico viene applicato anche se gli autovalori del
problema in oggetto ricadono fuori dal suo bacino di stabilità.
A tale scopo, è stato considerato il metodo di Eulero, con i seguenti parametri:

Dt = 0.1 s
i _ max = 100
a = −20.5
b = −20.5
c =1
q0 = { 50 100}

Come si può immediatamente notare, gli autovalori del problema continuano ad essere a parte reale
negativa, ma non sono più rispettati i vincoli di applicabilità del metodo in quanto:

aDt = 2, 05 > 2
bDt = 2, 05 > 2

e quindi appena al di fuori del bacino di stabilità di Eulero.


Le condizioni iniziali sono state inoltre scalate di un fattore 10 per poter meglio apprezzare le
conseguenze dell’applicazione del metodo in maniera non corretta.
I risultati sono i seguenti, distinti in due grafici per le due componenti della soluzione, nell’ordine:

Fig. 12 – Soluzioni ottenute con un metodo di Eulero instabile

Pur avendo gli autovalori a parte reale negative, le soluzioni così calcolate mostrano un
comportamento instabile, con l’innescarsi di oscillazioni periodiche e amplificate, mentre
sappiamo dalla soluzione analitica che sia q1 che q2 dovrebbero decrescere nel tempo fino ad
esaurirsi.

12
Un’ulteriore conferma di instabilità del metodo ci viene data dal grafico di evoluzione nel tempo
dell’errore per le due componenti:

Fig. 13 – Errore di approssimazione di un metodo di Eulero instabile

Vediamo da ultimo, sempre per il metodo di Eulero, un breve studio sulla convergenza dell’errore.
Secondo quanto ottenuto dalla teoria all’interno della Parte 1, risulta valida per l’errore di
approssimazione la relazione:
e n < nDt 2 = TDt = emax

Dove n è il numero di iterazioni previste nel calcolo, e T, di conseguenza, l’intervallo temporale


totale della soluzione. Ci si aspetta quindi che dopo un certo numero di iterazioni, l’errore pervenga
ad un valore all’incirca pari all’ emax postulato dalla relazione e numericamente imposto dall’utente
del metodo. Se vengono mostrati in uno stesso grafico l’andamento dell’errore riscontrato ad
esempio sulla prima componente della soluzione e l’equazione di evoluzione dell’errore massimo,
si ritrova esattamente quanto affermato:

Fig. 14 – convergenza del metodo di Eulero

Mentre l’ emax tende a crescere accumulandosi con il passare delle iterazioni, l’errore di
approssimazione diminuisce, fino alla convergenza, oltre la quale non si hanno miglioramenti
all’aumentare di n. L’errore massimo si mantiene, con i parametri risolutivi imposti in questa
esercitazione, dell’ordine di 10−7 , ben al di sotto dell’errore riscontrato con l’applicazione dello
stesso metodo di Eulero.

13
Se si volesse infine osservare la convergenza dell’errore massimo introdotto dal metodo, è
sufficiente ripetere il calcolo sullo stesso orizzonte temporale ma con Dt diversi, ed osservare il
verificarsi della relazione, ottenuta dalla precedente:

log(emax ) = log(c) − α log(1/ Dt )

con α = 1 per il metodo di Eulero.


Si paragonano quindi i grafici riportanti il primo l’andamento dell’errore reale al variare di Dt
ottenuto dalla pratica, il secondo l’andamento dello stesso ottenuto però dalla precedente relazione
analitica. Per ottenere un andamento sufficientemente apprezzabile sono stati considerati 5 diversi
step di integrazione ( Dt = 0.000195312, 0.000390625, 0.00078125, 0.0015625, 0.003125 ).

Fig. 15 – convergenza dell’errore massimo per il metodo di Eulero

Come si può vedere velocemente, la pendenza media della curva dell’errore reale, riportato ancora
una volta solamente in riferimento alla prima componente della soluzione, si avvicina molto al
coefficiente -1 della retta teorica.

14

Potrebbero piacerti anche