Barbarico G. Lindo Ferretti

Dispense di
Metodi Numerici
per le Equazioni Differenziali
Dott. Marco Caliari
a.a. 2014/15
Questi appunti non hanno nessuna pretesa di completezza. Sono solo
alcune note ed esercizi che affiancano l’insegnamento di Metodi Numerici per
le Equazioni Differenziali. Sono inoltre da considerarsi in perenne “under
revision” e pertanto possono contenere discrepanze, inesattezze o errori.
Questa `e la versione del 20 gennaio 2015. La versione pi`
u aggiornata si
trova all’indirizzo
http://profs.scienze.univr.it/caliari/aa1415/equazioni differenziali/dispense.pdf
Tutti i grafici riportano a fianco il link al codice usato per ottenerli. Nel caso
in cui il link non funzionasse, i codici si trovano all’indirizzo
http://profs.scienze.univr.it/caliari/aa1415/equazioni differenziali/
Indice
0
Preliminari
7
1 Matrici e autovalori
8
2 Interpolazione polinomiale a tratti
10
2.1 Interpolazione lineare a tratti . . . . . . . . . . . . . . . . . . 10
2.1.1 Errore di interpolazione . . . . . . . . . . . . . . . . . 11
3 Formule di quadratura gaussiana
12
3.1 Quadratura gaussiana di Chebyshev(-Lobatto) . . . . . . . . . 13
4 Metodi iterativi per sistemi lineari
4.1 Metodi di Richardson . . . . . . . . . . . . . . . . . . .
4.1.1 Metodo del gradiente precondizionato . . . . . .
4.1.2 Metodo del gradiente coniugato precondizionato
4.1.3 Test d’arresto . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
17
17
18
19
5 Memorizzazione di matrici sparse
20
5.1 Alcuni comandi per matrici sparse . . . . . . . . . . . . . . . . 21
6 Sistemi tridiagonali
7 Metodo di Newton
7.1 Metodo di Newton inesatto
22
24
. . . . . . . . . . . . . . . . . . . 25
8 Esponenziale di matrice
8.1 Formula delle variazioni delle costanti . . .
8.2 Calcolo di exp(A) . . . . . . . . . . . . . . .
8.2.1 Matrici piene, di modeste dimensioni
8.2.2 Matrici sparse, di grandi dimensioni .
9 Esercizi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
26
27
27
29
31
3
4
1
INDICE
BVPs
33
10 Introduzione
34
11 Differenze finite
11.1 Differenze finite centrate del secondo ordine . . . . . . .
11.2 Convergenza per un problema modello . . . . . . . . . .
11.2.1 Unicit`a . . . . . . . . . . . . . . . . . . . . . . . .
11.2.2 Esistenza . . . . . . . . . . . . . . . . . . . . . .
11.2.3 Regolarit`a . . . . . . . . . . . . . . . . . . . . . .
11.2.4 Esistenza ed unicit`a per il problema discretizzato
11.2.5 Propriet`a di A . . . . . . . . . . . . . . . . . . . .
11.2.6 Consistenza . . . . . . . . . . . . . . . . . . . . .
11.2.7 Stabilit`a . . . . . . . . . . . . . . . . . . . . . . .
11.2.8 Convergenza . . . . . . . . . . . . . . . . . . . . .
11.3 Altre differenze finite . . . . . . . . . . . . . . . . . . . .
11.3.1 Su nodi non equispaziati . . . . . . . . . . . . . .
11.3.2 Non centrate . . . . . . . . . . . . . . . . . . . .
11.3.3 Di ordine pi`
u elevato . . . . . . . . . . . . . . . .
11.4 Condizioni al bordo . . . . . . . . . . . . . . . . . . . . .
11.4.1 Condizioni di Robin . . . . . . . . . . . . . . . .
11.4.2 Importanza delle condizioni al bordo . . . . . . .
11.5 Un esempio: l’equazione della catenaria . . . . . . . . . .
11.5.1 Iterazioni di punto fisso . . . . . . . . . . . . . . .
11.5.2 Metodo di Newton . . . . . . . . . . . . . . . . .
11.6 Norme ed errori . . . . . . . . . . . . . . . . . . . . . . .
11.7 Derivate ed equazioni differenziali . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
35
35
38
39
39
40
41
42
42
42
43
44
44
45
45
45
45
48
49
50
50
51
53
12 Metodo di shooting
54
12.1 Metodo di bisezione . . . . . . . . . . . . . . . . . . . . . . . . 54
12.2 Metodo di Newton . . . . . . . . . . . . . . . . . . . . . . . . 55
12.3 Problema ai limiti con frontiera libera . . . . . . . . . . . . . . 56
13 Equazione di Poisson
58
13.1 Equazione di Poisson bidimensionale . . . . . . . . . . . . . . 58
13.1.1 Condizioni al bordo di Dirichlet . . . . . . . . . . . . . 58
13.1.2 Condizioni al bordo miste . . . . . . . . . . . . . . . . 60
14 Metodi variazionali
62
14.1 Un problema modello . . . . . . . . . . . . . . . . . . . . . . . 62
14.1.1 Metodo di approssimazione variazionale . . . . . . . . . 65
INDICE
14.1.2 Estensione al caso bidimensionale
14.2 Metodi spettrali . . . . . . . . . . . . . .
14.2.1 Trasformata di Fourier . . . . . .
14.2.2 Trasformata di Fourier discreta .
14.3 Metodi di collocazione . . . . . . . . . .
14.3.1 Condizioni al bordo . . . . . . . .
5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
73
73
75
76
84
85
15 Esercizi
88
2
90
ODEs
16 Introduzione
91
16.1 Riduzione in forma autonoma . . . . . . . . . . . . . . . . . . 92
16.2 Equazioni di ordine superiore al primo . . . . . . . . . . . . . 92
17 Metodi ad un passo
17.1 Metodo di Eulero . . . . . . . . . . . . . .
17.2 Metodo dei trapezi . . . . . . . . . . . . .
17.3 theta-metodo . . . . . . . . . . . . . . . .
17.3.1 Risoluzione di un metodo implicito
17.3.2 Newton inesatto e passo variabile .
17.3.3 Caso lineare . . . . . . . . . . . . .
17.4 Verifica dell’implementazione . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
93
93
96
97
99
101
102
103
18 Metodi multistep
18.1 Metodi di Adams-Bashforth . . . . . . .
18.2 Metodi lineari multistep . . . . . . . . .
18.2.1 Metodi BDF . . . . . . . . . . . .
18.3 Consistenza e stabilit`a . . . . . . . . . .
18.4 Influenza degli errori di arrotondamento
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
105
105
107
109
111
117
.
.
.
.
.
19 Metodi di Runge-Kutta
119
19.1 Metodi di Runge–Kutta espliciti . . . . . . . . . . . . . . . . . 119
19.2 Metodi di Runge–Kutta semiimpliciti . . . . . . . . . . . . . . 125
19.3 Metodi di Runge-Kutta embedded . . . . . . . . . . . . . . . . 128
20 A-stabilit`
a
20.1 A-stabilit`a dei metodi di Runge-Kutta espliciti . . . . .
20.2 A-stabilit`a dei metodi lineari multistep . . . . . . . . .
20.3 Equazioni stiff . . . . . . . . . . . . . . . . . . . . . . .
20.3.1 Risoluzione di un metodo implicito per problemi
. . .
. . .
. . .
stiff
132
. 134
. 136
. 137
. 139
6
INDICE
21 Integratori esponenziali
140
22 Esercizi
143
3
PDEs
23 Equazioni ADR
23.1 Equazione del calore . . . . . . . . . . . . . . . . .
23.1.1 Esistenza di una soluzione . . . . . . . . . .
23.1.2 Unicit`a della soluzione . . . . . . . . . . . .
23.2 Metodo di Fourier . . . . . . . . . . . . . . . . . . .
23.3 Metodo delle linee . . . . . . . . . . . . . . . . . . .
23.3.1 Differenze finite . . . . . . . . . . . . . . . .
23.3.2 Condizioni al bordo di Dirichlet . . . . . . .
23.3.3 Condizioni al bordo di Neumann (costanti) .
23.4 Equazione di trasporto-diffusione . . . . . . . . . .
23.4.1 Stabilizzazione mediante diffusione artificiale
23.4.2 Elementi finiti . . . . . . . . . . . . . . . . .
23.4.3 Errori spaziali e temporali . . . . . . . . . .
23.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . .
4
147
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Appendici
A Alcune dimostrazioni
A.1 M -matrici . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Positivit`a di Eulero implicito per trasporto-diffusione .
A.3 Equazione del filo elastico . . . . . . . . . . . . . . . .
A.4 Equazione della trave . . . . . . . . . . . . . . . . . . .
A.4.1 Appoggi ottimali per una trave . . . . . . . . .
A.5 Lunghezza della catenaria . . . . . . . . . . . . . . . .
A.6 A-stabilit`a di un metodo di Runge–Kutta semiimplicito
148
. 148
. 148
. 151
. 152
. 153
. 154
. 155
. 156
. 156
. 158
. 161
. 162
. 163
165
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
166
. 166
. 166
. 169
. 170
. 172
. 174
. 174
B Estrapolazione di Richardson
176
C Temi d’esame
177
5
Bibliografia
Bibliografia
195
196
Parte 0
Preliminari
7
Capitolo 1
Matrici e autovalori
Una matrice A ∈ Cn×n `e detta normale se AA∗ = A∗ A, ove A∗ denota la
trasposta coniugata. Esempi di matrici normali sono le hermitiane (simmetriche se reali) A∗ = A, le antihermitiane (antisimmetriche se reali) A∗ = −A
e le unitarie (ortogonali se reali) A∗ = A−1 . Vale il seguente
Teorema 1 (Teorema spettrale). Una matrice A `e normale se e solo se si
pu`
o decomporre come
A = U DU ∗
ove U `e una matrice unitaria e D la matrice diagonale degli autovalori di A.
In particolare, gli autovettori di una matrice normale (le colonne di U )
relativi ad autovalori distinti sono tra loro ortogonali e dunque formano una
base per Cn .
Il campo dei valori (field of values o numerical range) W (A) di A `e il
sottoinsieme di C dei numeri della forma
W (A) = {z ∈ C : z = x∗ Ax, x ∈ Cn , x∗ x = 1}
Gli autovalori di A stanno nel campo dei valori: infatti, se Ax = λx, con x
di norma unitaria, allora λ = x∗ Ax. Il campo dei valori gode della propriet`a
subadditiva: W (A + B) ⊆ W (A) + W (B). Per le matrici normali, il campo
dei valori `e l’involucro convesso dello spettro. Infatti, se λ = x∗ Ax e x =
P
n
i=1 ci xi , ove gli {xi } sono gli autovettori (di norma unitaria) di A, allora
∗
λ = x Ax =
n
X
ci cj x∗i Axj
=
i,j=1
e
P
j |cj |
2
n
X
i,j=1
= 1 perch´e x di norma unitaria.
8
ci cj λj x∗i xj
=
n
X
j=1
|cj |2 λj
9
Teorema 2 (Dischi di Gerschgorin). Sia A = (aij ) una matrice quadrata di
dimensione n. Allora gli autovalori sono compresi nella regione
!
!
n
n
[
[
Cj
Ri ∩
j=1
i=1
ove
Ri =







z ∈ C : |z − aii | ≤
n
X
j=1
j6=i
|aij |




,



Cj =





z ∈ C : |z − ajj | ≤
n
X
i=1
i6=j
|aij |





Dimostrazione. Dimostriamo che gli autovalori (destri) di A stanno in ∪i Ri :
seguir`a che gli autovalori di AT stanno in ∪j Cj e poich´e i due insiemi di
autovalori coincidono, staranno nell’intersezione. Sia λ un autovalore e v
l’autovettore associato, normalizzato in modo che
max|vk | = |vi | = 1
k
per un qualche 1 ≤ i ≤ n. Allora
n
X
j=1
aij vj − λvi =
n
X
j=1
j6=i
aij uj + aii vi − λvi =
n
X
j=1
j6=i
aij vj + (aii − λ)vi = 0
Passando ai moduli
|aii − λ| = |
e dunque λ ∈ Ri .
n
X
j=1
j6=i
aij vj | ≤
n
X
j=1
j6=i
|aij ||vj | ≤
n
X
j=1
j6=i
|aij |
Capitolo 2
Interpolazione polinomiale a
tratti
Data una funzione f : [a, b] → R e un’insieme {xi }m
i=1 ⊂ [a, b] di nodi ordinati
(xi−1 < xi ), consideriamo l’interpolante polinomiale a tratti pck−1 f di grado
k − 1. Su ogni intervallo [xi , xi+1 ] di lunghezza hi = xi+1 − xi essa `e il
polinomio di grado k − 1
ai,1 (x − xi )k−1 + ai,2 (x − xi )k−2 + . . . + ai,k−1 (x − xi ) + ai,k .
(2.1)
Dunque, l’interpolante polinomiale a tratti `e completamente nota una volta
noti i nodi e i coefficienti di ogni polinomio.
In GNU Octave, l’interpolante polinomiale a tratti `e definita mediante
una struttura solitamente chiamata pp (piecewise polynomial) che si costruisce con il comando mkpp(x,A), ove x `e il vettore di nodi e A `e la matrice, con
riferimento a (2.1),
Aij = ai,j .
Nota una struttura pp, `e possibile valutare il valore dell’interpolante in un
generico target (o vettore di target) x¯ con il comando ppval(pp,xbar).
2.1
Interpolazione lineare a tratti
Dati i vettori [x1 , . . . , xm ]T e [f1 , . . . , fm ]T , nell’intervallo [xi , xi+1 ] l’interpolante lineare a tratti coincide con il polinomio di grado uno
fi+1 − fi
(x − xi ) + fi
hi
ove hi = xi+1 − xi . Pertanto, si costruisce la corrispondente struttura pp con
il comando
10
2.1. INTERPOLAZIONE LINEARE A TRATTI
11
pp = mkpp(x,[(f(2:m)-f(1:m-1))./h,f(1:m-1)])
ove h `e il vettore delle distanze tra nodi consecutivi (e si pu`o ottenere con il
comando diff(x)).
2.1.1
Errore di interpolazione
Il risultato fondamentale sull’errore di interpolazione `e
f (m) (ξ)
f (x) − pm−1 f (x) =
(x − x1 ) · (x − x2 ) · . . . · (x − xm )
n!
ove pm−1 f `e il polinomio di grado m−1 interpolatore di f sui nodi {xi }m
i=1 e ξ
m
un opportuno punto nell’involucro convesso di x ∪ {xi }i=1 . Per l’interpolante
lineare a tratti pc1 f su nodi equispaziati in un intervallo [a, b], si ha dunque
per x ∈ [xi , xi+1 ]
f (x) − pc1 f (x) =
f ′′ (ξ)
(x − xi )(x − xi+1 )
2
(2.2)
e pertanto
|f (x) − pc1 f (x)| ≤
f ′′ (ξ) h2
,
ξ∈[xi ,xi+1 ]
2 4
max
x ∈ [xi , xi+1 ]
((x − xi )(xi+1 − x) `e una parabola rivolta verso il basso di vertice (xi +
h/2, h2 /4)) da cui
max|f (x) − pc1 f (x)| = kf − pc1 f k∞ ≤
[a,b]
h2 ′′
kf k∞
8
Derivando rispetto a x l’equazione (2.2), si ottiene
f ′ (x) − (pc1 f )′ (x) =
f ′′ (ξ)
[(x − xi+1 ) + (x − xi )]
2
e pertanto
|f ′ (x) − (pc1 f )′ (x)| ≤
f ′′ (ξ)
2h,
ξ∈[xi ,xi+1 ]
2
max
da cui
kf ′ − (pc1 f )′ k∞ ≤ hkf ′′ k∞
x ∈ [xi , xi+1 ]
Capitolo 3
Formule di quadratura
gaussiana
Dato un intervallo (a, b) (eventualmente anche non limitato) e una funzione
peso w(x) non negativa su (a, b), si considera il prodotto scalare
(f, g) =
Z
b
f (x)g(x)w(x)dx
a
con l’ipotesi
Z
b
a
|x|k w(x)dx < ∞,
k≥0
Allora, esiste un’unica famiglia {pj (x)}j , pj (x) polinomio di grado j, ortonormale rispetto al prodotto scalare
Z
b
pj (x)pi (x)w(x)dx = δij
a
Gli zeri {xn }m
n=1 del polinomio pm (x) sono interni all’intervallo (a, b) e assieme
ai pesi
Z b
Ln (x)w(x)dx, 1 ≤ n ≤ m
wn =
a
ove Ln (x) `e il polinomio di Lagrange di grado m − 1 che vale 1 in xn e zero in
tutti gli altri nodi, costituiscono una formula di quadratura gaussiana esatta
fino al grado polinomiale 2m − 1, cio`e
Z
b
qj (x)w(x)dx =
a
m
X
qj (xn )wn ,
n=1
12
0 ≤ j ≤ 2m − 1
3.1. QUADRATURA GAUSSIANA DI CHEBYSHEV(-LOBATTO)
13
ove qj (x) `e un qualunque polinomio di grado 2m − 1. In particolare, per la
famiglia {pj }j , vale
δij =
Z
b
pj (x)pi (x)w(x)dx =
a
m
X
pj (xn )pi (xn )wn ,
n=1
0 ≤ i, j ≤ m − 1 (3.1)
(perch´e pj (x)pi (x) `e un polinomio di grado i+j ≤ 2m−2 < 2m−1). Nel caso
in cui (a, b) sia limitato, esiste un’unica formula di quadratura esatta fino al
m−1
grado polinomiale 2m−3 che usa come nodi x¯1 = a, x¯m = b e gli zeri {¯
xn }n=2
del polinomio di grado m − 2 della famiglia di polinomi ortogonali rispetto
alla funzione peso w(x)(x − a)(b − x). In questo caso si ha, in particolare,
δij =
Z
b
pj (x)pi (x)w(x)dx =
a
m
X
pj (¯
xn )pi (¯
xn )w¯n ,
n=1
0≤i≤m−3
0≤j ≤m−1
p
La famiglia {φj (x)}m
w(x) `e ovviamente ortonormale
j=1 , ove φj (x) = pj−1 (x)
rispetto al prodotto scalare
Z b
(f, g) =
f (x)g(x)dx
a
e per essa valgono le osservazioni fatte sopra riguardo al calcolo degli integrali.
3.1
Quadratura gaussiana di Chebyshev e di
Chebyshev–Lobatto
Per integrali del tipo
Z
1
f (x)
√
dx
1 − x2
−1
i polinomi ortogonali da considerare sono quelli di Chebyshev
pj (x) = Tj (x) = cos(j arccos(x))
che soddisfano la relazione di ricorrenza
T0 (x) = 1, T1 (x) = 1
Tj+1 (x) = 2xTj (x) − Tj−1 (x),
j≥1
Gli zeri del polinomio di grado m soddisfano
m arccos(x) =
π
+ (n − 1)π,
2
1≤n≤m
14
CAPITOLO 3. FORMULE DI QUADRATURA GAUSSIANA
(gli angoli devono essere compresi tra 0 e mπ) da cui
π
+ (n − 1)π
π (2n − 1)π
2
xn = cos
= sin
,
−
m
2
2m
1≤n≤m
(la seconda formula produce nodi anche numericamente simmetrici) e i corrispondenti pesi di quadratura sono costanti e valgono
wn =
π
,
m
1≤n≤m
I nodi di (Gauss–)Chebyshev–Lobatto sono invece
π (n − 1)π
(n − 1)π
−
= sin
,
x¯n = cos
m−1
2
m−1
1≤n≤m
e i corrispondenti pesi
π
per n = 1 o n = m
2(m − 1)
w¯n =
π


per 2 ≤ n ≤ m − 1
m−1



Capitolo 4
Metodi iterativi per sistemi di
equazioni lineari
I metodi iterativi per la soluzione del sistema lineare
Ax = b
(4.1)
si basano sull’idea di calcolare la soluzione come limite di una successione di
vettori
x = lim x(l) .
l→∞
Una strategia generale per costruire la successione {x(l) }l `e basata sullo splitting A = P − M , ove P `e non singolare. Assegnato x(1) , il termine x(l+1) `e
calcolato ricorsivamente come
P x(l+1) = M x(l) + b,
l≥1
(4.2)
Posto e(l) = x − x(l) , si ha
e(l) = Bel−1 ,
B = P −1 M = I − P −1 A ,
` molto importante questo risultato
ove B `e chiamata matrice di iterazione. E
Proposizione 1. Sia B una matrice quadrata. Sono equivalenti
1. liml→∞ B l = 0 (ove 0 indica la matrice nulla)
2. liml→∞ kB l k = 0, per una qualunque norma
3. ρ(B) < 1, ove ρ(B) = maxλ |λ|, λ ∈ σ(B) `e il raggio spettrale di B
15
16
CAPITOLO 4. METODI ITERATIVI PER SISTEMI LINEARI
Dimostrazione. Poich´e la funzione norma k·k `e continua, 1. implica 2. Per
l’equivalenza delle norme
kB l k∞ ≤ M kB l k
e per definizione di k·k∞ , se kB l k tende a zero, B l tende alla matrice nulla.
Pertanto 2. implica 1. Per una qualunque norma naturale1
kBk ≥ ρ(B)
(infatti kBk = maxkxk=1 kBxk ≥ kBuk = |λ| se λ e u con norma unitaria
sono una coppia autovalore-autovettore) e quindi
kB l k ≥ ρ(B l ) = ρ(B)l
e dunque 2. implica 3. Il raggio spettrale di una matrice gode della seguente
propriet`a (qui non dimostrata): per ogni ε esiste una norma naturale k·k tale
che
kBk ≤ ρ(B) + ε
Pertanto, se ρ(B) < 1 allora esiste ε e una norma naturale k·k tali che
kBk ≤ ρ(B) + ε = µ < 1
e dunque (per la disuguaglianza moltiplicativa valida per le norme naturali)
kB l k ≤ kBkl ≤ µl
e quindi liml→∞ kB l k = 0 e cos`ı per ogni altra norma, per l’equivalenza delle
norme. Dunque, 3. implica 2.
Da questa proposizione discende immediatamente la seguente
Proposizione 2. Se ρ(B) < 1 (o se kBk < 1 per una qualunque norma
k·k), allora
∞
X
−1
(I − B) =
Bl
l=0
Dimostrazione. Basta considerare
(I − B)(I + B + B 2 + . . . + B L−1 ) = I − B L = (I + B + B 2 + . . . + B L−1 )(I − B)
e passare al limite L → ∞.
Tornando ai metodi iterativi, si ha
e(l) = B l e(0)
e dunque e(l) tende a zero se e solo se ρ(B) < 1.
1
Indotta da una norma sui vettori
4.1. METODI DI RICHARDSON
4.1
17
Metodi di Richardson
Indicato con r(l) il residuo
r(l) = b − Ax(l) = Ax − Ax(l) = A(x − x(l) ) = Ae(l) ,
il metodo (4.2) pu`o essere riscritto come
P (x(l+1) − x(l) ) = r(l) .
(4.3)
In questo contesto, P viene chiamata matrice di precondizionamento o precondizionatore di A e viene scelta in modo che la matrice di iterazione
B = I − P −1 A abbia un raggio spettrale minore di 1 e la risoluzione di
(4.3) sia “facile”.
Una generalizzazione dello schema (4.3) `e il metodo di Richardson: dato
(1)
x , x(l+1) `e calcolato ricorsivamente come
P (x(l+1) − x(l) ) = αr(l) ,
ove α `e un opportuno parametro di accelerazione. Dati x(1) e r(1) = b−Ax(1) ,
l’algoritmo per calcolare x(l+1) `e
P z (l) = r(l)
x(l+1) = x(l) + αz (l)
(4.4)
r(l+1) = r(l) − αAz (l)
Il costo di un’iterazione `e dato essenzialmente dalla risoluzione di un sistema
lineare P z (l) = r(l) facile e dal prodotto matrice-vettore Az (l) . Tali metodi
risulteranno particolarmente vantaggiosi per matrici sparse, in cui il numero
di elementi diversi da zero `e O(N ) piuttosto che O(N 2 ) (e dunque il costo
di un prodotto matrice-vettore `e O(N )), se l’ordine della matrice `e N .
Il calcolo del residuo r(l+1) = r(l) − αAz (l) (invece di r(l+1) = b − Ax(l+1) )
permette di ridurre la propagazione, attraverso il prodotto matrice-vettore,
degli errori, in quanto il vettore z (l) , contrariamente a x(l+1) , diminuisce in
modulo al crescere di l.
4.1.1
Metodo del gradiente precondizionato
Siano A e P simmetriche e definite positive. Il metodo di Richardson pu`o
essere generalizzato con una scelta dinamica del parametro di accelerazione,
prendendo α = αl in modo tale che
p
kx − x(l+1) kA , kykA = y T Ay
18
CAPITOLO 4. METODI ITERATIVI PER SISTEMI LINEARI
sia minima. Si ha
kx − x(l+1) k2A = (x − x(l) − αl z (l) )T A(x − x(l) − αl z (l) ) =
T
T
= αl2 z (l) Az (l) − 2αl z (l) A(x − x(l) ) + (x − x(l) )T A(x − x(l) )
e dunque il minimo `e dato dalla scelta
T
αl =
z (l) r(l)
.
T
z (l) Az (l)
Il metodo ottenuto si chiama metodo del gradiente precondizionato. Dati x(1)
e r(1) , l’algoritmo per calcolare x(l+1) `e
P z (l) = r(l)
T
z (l) r(l)
αl =
T
z (l) Az (l)
x(l+1) = x(l) + αl z (l)
(4.5)
r(l+1) = r(l) − αl Az (l)
Nel caso si scelga P = I, si ottiene il metodo del gradiente (noto anche come
steepest descent).
4.1.2
Metodo del gradiente coniugato precondizionato
Siano A e P simmetriche e definite positive. Il metodo del gradiente coniugato
precondizionato `e una generalizzazione del metodo di Richardson in cui
x(l+1) = x(l) + αl p(l)
ove i {p(l) }l sono coniugati, cio`e soddisfano
T
p(i) Ap(j) = 0,
i 6= j
Per soddisfare questa propriet`a `e necessaria l’introduzione di un ulteriore
parametro βl . Dati x(1) , r(1) , P z (1) = r(1) e p(1) = z (1) , l’algoritmo per
calcolare x(l+1) `e
T
z (l) r(l)
αl =
T
p(l) Ap(l)
x(l+1) = x(l) + αl p(l)
r(l+1) = r(l) − αl Ap(l)
P z (l+1) = r(l+1)
T
βl+1 =
p(l+1)
z (l+1) r(l+1)
T
z (l) r(l)
= z (l+1) + βl+1 p(l)
(4.6)
4.1. METODI DI RICHARDSON
19
Teorema 3. Il metodo del gradiente coniugato applicato ad una matrice di
ordine N converge in al pi`
u N iterazioni (in aritmetica esatta).
Dimostrazione. La dimostrazione (omessa) si basa essenzialmente sul fatto
che p(1) , . . . , p(N ) sono vettori linearmente indipendenti e non ce ne possono
essere pi`
u di N .
Per questo motivo, tale metodo `e detto semiiterativo.
Stima dell’errore
Vale la seguente stima dell’errore:
!l−1
p
cond2 (P −1 A) − 1
p
ke(1) kA
−1
cond2 (P A) + 1
ke(l) kA ≤ 2
dalle quale si osserva che
• la stima d’errore decresce in ogni caso, poich´e il numeratore `e pi`
u
piccolo del denominatore;
• in particolare, nel caso P = I;
• tanto pi`
u `e piccolo il numero di condizionamento di P −1 A, tanto pi`
u il
metodo ha convergenza veloce;
• nel caso limite di P = A, si ha ke(l) kA ≤ 0.
4.1.3
Test d’arresto
Un primo stimatore `e costituito dal residuo: si arresta cio`e il metodo iterativo
quando
kr(l) k ≤ tol · kbk
Infatti, dalla precedente si ricava
ke(l) k
≤ tol · cond(A)
kxk
Una modifica consiste in
kr(l) k ≤ tol · kr(1) k
(4.7)
che coincide con il precedente nel caso in cui come x(1) venga scelto il vettore
di zeri.
Capitolo 5
Memorizzazione di matrici
sparse
Sia A una matrice sparsa di ordine N con m elementi diversi da zero. Esistono
molti formati di memorizzazione di matrici sparse. Quello usato da GNU
Octave `e il Compressed Column Storage (CCS). Consiste di tre array: un
primo, data, di lunghezza m contenente gli elementi diversi da zero della
matrice, ordinati prima per colonna e poi per riga; un secondo, ridx, di
lunghezza m contenente gli indici di riga degli elementi di data; ed un terzo,
cidx, di lunghezza N + 1, il cui elemento i-esimo (i < N + 1) `e la posizione
dentro data del primo elemento della colonna i e l’elemento (N +1)-esimo `e il
numero totale di elementi diversi da zero incrementato di uno. Per esempio,
alla matrice


1 0 0 0
0 2 3 0

A=
4 0 5 6
0 0 0 7
corrispondono i vettori
data = [1, 4, 2, 3, 5, 6, 7]
ridx = [1, 3, 2, 2, 3, 3, 4]
cidx = [1, 3, 4, 6, 8]
Talvolta, soprattutto in linguaggi di calcolo con array che iniziano dall’indice
0, gli array ridx e cidx hanno elementi decrementati di uno.
In GNU Octave, il formato CCS e l’implementazione del prodotto matrice-vettore sono automaticamente usati dalla function sparse e dall’operatore *, rispettivamente.
20
5.1. ALCUNI COMANDI PER MATRICI SPARSE
5.1
21
Alcuni comandi per matrici sparse
• Il comando speye(N) genera la matrice identit`a di ordine N .
• Il comando spdiags(v,0,N,N), ove v `e un vettore colonna, genera la
matrice diagonale di ordine n avente v in diagonale. Se la dimensione
di v `e minore di n, la diagonale viene riempita con zeri posti dopo il
vettore v. Se invece la dimensione di v `e maggiore di N , vengono usate
solo le prime N componenti di v.
Sia V la matrice

v11
 v21

V =  ..
 .
v12
v22
..
.

v13
v23 

.. 
. 
vN 1 vN 2 vN 3
Il comando spdiags(V,-1:1,N,N) genera la matrice


v12 v23 0
0
...
0
v11 v22 v33
0
...
0 

.. 
...
...


. 
0
v
v

21
32
 . .
.. 
...
...
 ..
.. ...
. 


 0 . . . 0 vN −2 1 vN −1 2 vN 3 
0
... ...
0
vN −1 1 vN 2
Capitolo 6
Sistemi tridiagonali
La risoluzione di sistemi tridiagonali
Ax = b
con

a1
 b1


0
A=
 ...


0
0

c1 0 . . .
...
0
a2 c 2
0
...
0 

.. 
... ... ...
...
. 
.. 
... ... ...
...
. 


... ...
bn−2 an−1 cn−1 
... ... 0
bn−1 an
risulta particolarmente economica. Infatti, nel caso non sia necessario il
pivoting, si ha A = LU , ove




1 0 ... ... 0
α1 c1 0
...
0
β1 1 0
 0 α2 c2 . . .
. . . 0
0 


.
.
.. 
... ... ... .
... ... ...



.  , U =  ..
. 
L=0
. .



. . . . . . . . ... 
 ..
 0 . . . . . . αn−1 cn−1 
0 . . . 0 βn−1 1
0 ... ...
0
αn
con
(
α 1 = a1
βk−1 = bk−1 /αk−1 ,
αk = ak − βk−1 ck−1 , k = 2, 3, . . . , n
e dunque la fattorizzazione LU costa O(2n) flops. A questo punto si risolvono
i due sistemi Ly = b e U x = y, mediante
(
y1 = b1
yk = bk − βk−1 yk−1 , k = 2, 3, . . . n
22
23
e
(
xn = yn /αn
xk = (yk − ck xk+1 )/αk , k = n − 1, n − 2, . . . 1
con un ulteriore costo O(2n) flops. GNU Octave usa automaticamente questo
algoritmo per le matrici tridiagonali.
Capitolo 7
Metodo di Newton per sistemi
di equazioni non lineari
Consideriamo il sistema di equazioni non lineari

f1 (x1 , x2 , . . . , xN ) = 0




 f2 (x1 , x2 , . . . , xN ) = 0
..


.



fN (x1 , x2 , . . . , xN ) = 0
che pu`o essere riscritto, in forma compatta,
f (x) = 0 .
Dato x(1) , il metodo di Newton per calcolare x(r+1) `e
J (r) δx(r) = −f (x(r) )
x(r+1) = x(r) + δx(r)
(7.1)
ove J (r) `e la matrice Jacobiana, definita da
(r)
Jij =
∂fi (x(r) )
(r)
∂xj
.
Il criterio d’arresto solitamente usato `e
kδx(r) k ≤ tol
In Matlab/Octave l’implementazione potrebbe essere:
24
(7.2)
7.1. METODO DI NEWTON INESATTO
25
f = @(x) ... % f
J = @(x) ... % jacobiano di f
x0 = ... % guess iniziale
x = x0;
errest = -J(x) \ f(x);
while (norm(errest,inf) > Newt_tol)
x = x + errest;
errest = -J(x) \ f(x);
end
7.1
Metodo di Newton inesatto
Il metodo di Newton (7.1) richiede il calcolo della matrice Jacobiana e la sua
“inversione” ad ogni passo k. Questo potrebbe essere troppo oneroso (O(N 3 )
per un metodo diretto). Una strategia per ridurre il costo computazionale `e
usare sempre la stessa matrice Jacobiana J (1) , oppure aggiornarla solo dopo
un certo numero di iterazioni, oppure ancora usarne una sua approssimazione
costante. In tal modo, per esempio, `e possibile usare la stessa fattorizzazione
L(r) U (r) per pi`
u iterazioni successive e usarla per risolvere i sistemi lineari
2
(di costo O(N )).
Capitolo 8
Esponenziale di matrice
Data una matrice quadrata A ∈ RN ×N , si definisce
exp(A) =
∞
X
Aj
j=0
j!
Tale serie converge per qualunque matrice A, essendo A un operatore lineare
tra spazi di Banach e avendo la serie esponenziale raggio di convergenza ∞.
Se A e B sono permutabili (cio`e AB = BA), allora
exp(A + B) = exp(A) exp(B)
8.1
Formula delle variazioni delle costanti
Data l’equazione differenziale
(
y ′ (t) = ay(t) + b(t, y(t)),
y(t0 ) = y0
t>0
(8.1)
y(t) ∈ R, la soluzione pu`o essere scritta analiticamente mediante la formula
delle variazioni delle costanti
Z t
(t−t0 )a
e(t−τ )a b(τ, y(τ ))dτ
(8.2)
y(t) = e
y0 +
t0
Infatti, si ha
′
y (t) = ae
(t−t0 )a
y0 +a
Z
t
e(t−τ )a b(τ, y(τ ))dτ +e(t−t)a b(t, y(t)) = ay(t)+b(t, y(t))
t0
26
8.2. CALCOLO DI exp(A)
Si osservi che
Z t
e
(t−τ )a
t0
ove
27
t
1 (t−τ )a −ae
dτ = − e
=
a
t0
t0
(t−t
)a
0
1
e
−1
= − 1 − e(t−t0 )a = (t − t0 )
=
a
(t − t0 )a
= (t − t0 )ϕ1 ((t − t0 )a) ,
1
dτ = −
a
Z
t
(t−τ )a
∞
ez − 1 X z j
ϕ1 (z) =
=
z
(j + 1)!
j=0
e, analogamente,
Z
(8.3)
t
t0
e(t−τ )a (τ − t0 )dτ = (t − t0 )2 ϕ2 ((t − t0 )a)
ove
ϕ2 (z) =
∞
ez − 1 − z X z j
=
z2
(j + 2)!
j=0
Consideriamo ora un sistema differenziale
(
y ′ (t) = Ay(t) + b(t, y(t)),
y(t0 ) = y 0
(8.4)
t>0
Ancora, la soluzione esplicita pu`o essere scritta come
Z t
y(t) = exp((t − t0 )A)y 0 +
exp((t − τ )A)b(τ, y(τ ))dτ
t0
8.2
Calcolo di exp(A)
Come per la risoluzione di sistemi lineari, non esiste il modo per calcolare
exp(A), ma diversi modi, ognuno adatto a particolari situazioni.
8.2.1
Matrici piene, di modeste dimensioni
Questi metodi si applicano, in pratica, a quelle matrici per le quali si usano
i metodi diretti per la risoluzione di sistemi lineari.
28
CAPITOLO 8. ESPONENZIALE DI MATRICE
Decomposizione spettrale Se la matrice `e diagonalizzabile, cio`e A =
V DV −1 , allora exp(A) = V exp(D)V −1 , ove exp(D) `e la matrice diagonale
con elementi ed1 , ed2 , . . . , edN . Basta infatti osservare che
A2 = (V DV −1 )2 = (V DV −1 )(V DV −1 ) = V D2 V −1
e scrivere exp(A) come serie di Taylor. La decomposizione spettrale di una
matrice costa, in generale, O(N 3 ). Si ottiene in GNU Octave con il comando
eig.
Approssimazione razionale di Pad´
e Si considera un’approssimazione
razionale della funzione esponenziale
a1 z p−1 + a2 z p−2 + . . . + ap
e ≈
,
b1 z q−1 + b2 z q−2 + . . . + bq
z
(8.5)
ove bq = 1 per convenzione. Essa `e chiamata diagonale quando p = q. Si
pu`o dimostrare che le approssimazioni diagonali sono le pi`
u efficienti. Fissato
il grado di approssimazione, si sviluppa in serie di Taylor la funzione esponenziale e si fanno coincidere quanti pi`
u coefficienti possibile. Per esempio,
fissiamo p = q = 2. Si ha allora
z2 z3
+
+ . . . (b1 z + 1) ≈ a1 z + a2
1+z+
2
6
z2
b1 z + 1 + b1 z 2 + z +
+ o(z 2 ) ≈ a1 z + a2
2
da cui




1 = a2
b 1 + 1 = a1


 b1 + 1 = 0
2
L’approssimazione di Pad´e si estende banalmente al caso matriciale. Considerando sempre il caso p = q = 2, si ha
exp(A) ≈ B = (b1 A + I)−1 (a1 A + a2 I) ,
cio`e B `e soluzione del sistema lineare (b1 A + I)B = a1 A + a2 I.
L’approssimazione di Pad´e `e accurata solo quando |z| < 1/2 (o, nel caso
matriciale, kAk2 < 1/2). Per la funzione esponenziale esiste una tecnica,
chiamata scaling and squaring che permette di aggirare il problema. Si usa
infatti la propriet`a
j
2 j 2
ez = ez/2 = ez/2
8.2. CALCOLO DI exp(A)
29
Se |z| > 1/2, allora |z|/2j < 1/2 per j > log2 (|z|) + 1. Si calcola dunque
j
l’approssimazione di Pad´e di ez/2 e poi si eleva al quadrato j volte. Per la
funzione ϕ1 vale
z 1
ϕ1 (z) = (ez/2 + 1)ϕ1
2
2
Anche l’approssimazione di Pad´e matriciale ha costo O(N 3 ). In GNU Octave
si usa una variante di questa tecnica nel comando expm.
8.2.2
Matrici sparse, di grandi dimensioni
I metodi visti nel paragrafo precedente ignorano l’eventuale sparsit`a delle
matrici. Inoltre, negli integratori esponenziali, non `e mai richiesto di calcolare
esplicitamente funzioni di matrice, ma solo funzioni di matrice applicate a
vettori, cio`e exp(A)v (`e l’analoga differenza tra calcolare A−1 e A−1 v). Si
possono allora usare dei metodi iterativi.
Metodo di Krylov Mediante la tecnica di Arnoldi `e possibile, tramite
prodotti matrice-vettore, decomporre A in VmT AVm = Hm , ove Vm ∈ Rn×m ,
VmT Vm = In , Vm e1 = v e Hm `e matrice di Hessenberg di ordine m (con
m ≪ n). Allora AVm ≈ Vm Hm e quindi
exp(A)Vm ≈ Vm exp(Hm ) ⇒ exp(A)v ≈ Vm exp(Hm )e1
Il calcolo di exp(Hm ) `e fatto mediante l’approssimazione di Pad´e. Il costo
` necessario inoltre
della tecnica di Arnoldi `e O(nm2 ) se A `e matrice sparsa. E
memorizzare la matrice Vm .
Interpolazione su nodi di Leja Se il polinomio pm (z) interpola ez nei
` una
nodi ξ0 , ξ1 , . . . , ξm , allora pm (A)v `e una approssimazione di exp(A)v. E
buona approssimazione se i nodi sono buoni (non equispaziati, per esempio)
` difficile
e se sono contenuti nell’involucro convesso dello spettro di A. E
` conveniente usare
stimare a priori il grado di interpolazione m necessario. E
la formula di interpolazione di Newton
pm−1 (z) = d1 + d2 (z − ξ1 ) + d3 (z − ξ1 )(z − ξ2 ) + · . . . · +dm (z − ξ1 ) · · · (z − ξm−1 )
ove {di }i sono le differenze divise. Tale formula si pu`o scrivere, nel caso
matriciale,
!
m−1
Y
(A − ξi I) v = (A − ξm−1 )wm−1
pm−1 (A)v = pm−2 v + dm wm , wm =
i=1
30
CAPITOLO 8. ESPONENZIALE DI MATRICE
Dunque, la complessit`a `e O(N m) `e richiesta la memorizzazione di un solo
vettore w.
Quali nodi usare? I nodi di Chebyshev, molto buoni per l’interpolazione,
non possono essere usati, in quanto non permettono un uso efficiente della
formula di interpolazione di Newton (cambiano tutti al cambiare del grado).
I nodi di Leja sono distribuiti asintoticamente come i nodi di Chebyshev e,
dati i primi m − 1, ξm `e il nodo per cui
m−1
Y
i=1
|ξm − ξi | = max
ξ∈[a,b]
m−1
Y
i=1
|ξ − ξi | ,
ove l’intervallo [a, b] `e in relazione con lo spettro di A, per esempio [a, b] =
σ(A) ∩ {y = 0}. Il primo nodo coincide, solitamente, con l’estremo dell’in` chiaro che l’insieme dei primi m nodi
tervallo [a, b] di modulo massimo. E
di Leja coincide con l’unione di {ξm } con l’insieme dei primi m − 1 nodi di
Leja.
Capitolo 9
Esercizi
1. Implemetare le functions [data,ridx,cidx] = full2ccs(A) e [A] =
ccs2full(data,ridx,cidx) e le functions che, dati data, ridx e cidx,
implementano i prodotti matrice vettore Ax e AT x.
2. Si risolvano 6 sistemi lineari con le matrici di Hilbert di ordine N =
4, 6, 8, 10, 12, 14 (hilb(N)) e termine noto scelto in modo che la soluzione esatta sia il vettore [1, 1, . . . , 1]T usando il comando \ di GNU
Octave, il metodo del gradiente precondizionato e il metodo del gradiente coniugato precondizionato. Per questi ultimi due, si usi una
tolleranza pari a 10−6 , un numero massimo di iterazioni pari a 2000,
il precondizionatore diagonale e un vettore iniziale x(1) di zeri. Si riporti, per ogni N , il numero di condizionamento della matrice, l’errore
in norma infinito rispetto alla soluzione esatta e il numero di iterazioni
dei metodi iterativi.
3. Risolvere il sistema non lineare
(
f1 (x1 , x2 ) = x21 + x22 − 1 = 0
f2 (x1 , x2 ) = sin(πx1 /2) + x32 = 0
con il metodo di Newton (7.1). Si usi una tolleranza pari a 10−6 , un
numero massimo di iterazioni pari a 150 e un vettore iniziale x(1) =
[1, 1]T . Si risolva lo stesso sistema non lineare usando sempre la matrice
Jacobiana relativa al primo passo e aggiornando la matrice Jacobiana
ogni r iterazioni, ove r `e il pi`
u piccolo numero di iterazioni che permette
di ottenere la stessa soluzione con la tolleranza richiesta calcolando solo
due volte la matrice Jacobiana.
31
32
CAPITOLO 9. ESERCIZI
4. Si implementi una function [a,b] = padeexp(p) che restituisce i coefficienti dell’approssimazione razionale di Pad´e (8.5) (con p = q) per la
funzione esponenziale.
Parte 1
BVPs
(Problemi ai limiti)
33
Capitolo 10
Introduzione
Consideriamo il seguente problema ai limiti (boundary value problem)
 ′′
′

 u (x) = f (x, u(x), u (x)), x ∈ (a, b)
u(a) = ua
(10.1)

 u(b) = u
b
ove u(x) ∈ R. Le condizioni ai bordi sono di Dirichlet quando viene prescritto
il valore della soluzione u(x) e di Neumann quando viene prescritto il valore
della derivata della soluzione u′ (x). Si possono avere anche condizioni miste,
ad esempio
 ′′
′

 u (x) = f (x, u(x), u (x)), x ∈ (a, b)
u(a) = ua

 u′ (b) = u′
b
Con un’unica notazione si pu`o scrivere
 ′′
′

 u (x) = f (x, u(x), u (x)),
αa u(a) + βa u′ (a) = γa

 α u(b) + β u′ (b) = γ
b
b
b
x ∈ (a, b)
Se αa 6= 0 e βa 6= 0 (oppure αb 6= 0 e βb 6= 0) si parla di condizioni di Robin.
Quando i valori prescritti ai bordi sono nulli, si parla di condizioni omogenee.
34
Capitolo 11
Differenze finite
11.1
Differenze finite centrate del secondo ordine
Sia u ∈ C 3 ([a, b]) e xi = a + (i − 1)h, 1 ≤ i ≤ m, h = (b − a)/(m − 1).
Sviluppando in serie di Taylor (resto di Lagrange), si ha
h2 ′′
h3
u (xi ) + u(3) (ˆ
xi )
2
6
h3
h2
xi )
u(xi−1 ) = u(xi ) − hu′ (xi ) + u′′ (xi ) − u(3) (˜
2
6
u(xi+1 ) = u(xi ) + hu′ (xi ) +
da cui
u(xi+1 ) − u(xi−1 )
(1)
− τi
2h
2
(1)
xi ) `e l’errore locale (u(3) (ˆ
xi ) + u(3) (˜
xi ) = 2u(3) (¯
xi ), per
ove τi = h6 u(3) (¯
un opportuno x¯i , per il teorema dei valori intermedi). Analogamente, sia
u ∈ C 4 ([a, b]). Si ha
(1)
u′ (xi ) = ∆u(xi ) − τi
=
h3
h4
h2 ′′
u (xi ) + u(3) (xi ) + u(4) (ˆ
xi )
2
6
24
h2 ′′
h3 (3)
h4 (4)
′
u(xi−1 ) = u(xi ) − hu (xi ) + u (xi ) − u (xi ) + u (˜
xi )
2
6
24
u(xi+1 ) = u(xi ) + hu′ (xi ) +
da cui
(2)
u′′ (xi ) = ∆2 u(xi ) − τi
(2)
=
u(xi+1 ) − 2u(xi ) + u(xi−1 )
(2)
− τi
h2
2
(11.1)
xi ). Queste approssimazioni della derivata prima e seconda
ove τi = h12 u(4) (¯
di chiamano differenze finite centrate del secondo ordine. Il termine “centrate” si riferisce al fatto che i punti xi sono equispaziati e si usano i valori
35
36
CAPITOLO 11. DIFFERENZE FINITE
della funzione u(x) in uno stesso numero di punti a sinistra e a destra di xi
per ricavare un’approssimazione delle derivate. Il termine “secondo ordine”
si riferisce al fatto che l’errore locale `e proporzionale alla seconda potenza del
passo di discretizzazione h. Ovviamente sono possibili altri tipi di approssimazione, basati su nodi non equispaziati, non centrate e di ordine diverso
(vedi § 11.3).
10
errore derivata seconda
stima errore derivata seconda
errore derivata prima
stima errore derivata prima
diff12.m
errore in norma infinito
1
0.1
0.01
10
20
50
100
m
Figura 11.1: Errori nell’approssimazione delle derivate prima e seconda per
la funzione u(x) = sin(3x).
In Figura 11.1 si vedono gli errori (in norma infinito) tra la derivata
prima e seconda della funzione u(x) = sin(3x) e la relativa approssimazione
mediante differenze finite centrate del secondo ordine (asterischi) e le stime
h2 /6 · ku(3) k∞ e h2 /12 · ku(4) k∞ (linea continua), rispettivamente, ove h =
2π/(m − 1). In Figura 11.2 si vede invece che per la funzione u(x) = |x|7/2 ,
l’approssimazione della derivata prima mediante differenze finite centrate ha
effettivamente ordine due, mentre quella della derivata seconda no, in quanto
non esiste la derivata quarta di u(x) (h = 2/(m − 1)).
Una volta scelto il tipo di discretizzazione, invece del problema originale
(10.1) si risolve il problema discretizzato
 2

 ∆ ui = f (xi , ui , ∆ui ),
u 1 = ua

u = u
m
b
2≤i≤m−1
11.1. DIFFERENZE FINITE CENTRATE DEL SECONDO ORDINE 37
1
errore derivata seconda
errore derivata prima
h2
errore in norma infinito
0.1
0.01
0.001
10
20
50
100
m
Figura 11.2: Errori nell’approssimazione delle derivate prima e seconda per
la funzione u(x) = |x|7/2 .
nell’incognita u = [u1 , u2 , . . . , um−1 , um ]T , ove
ui+1 − ui−1
2h
u
− 2ui + ui−1
i+1
∆ 2 ui =
h2
∆ui =
Si tratta dunque di risolvere un sistema di m equazioni (in generale) non
lineari nelle incognite ui , 1 ≤ i ≤ m.
diff12ns.m
38
CAPITOLO 11. DIFFERENZE FINITE
In forma matriciale,


∆u1
 ∆u2 


 ∆u3 


 ..  =
 . 


∆um−1 
∆um


∆ 2 u1
 ∆ 2 u2 


 ∆ 2 u3 



=
..


 2.

∆ um−1 
∆ 2 um


u1
∗
∗
∗
∗
∗ ∗
 u2 
−1 0
1
0 . . . 0



..  
 .. 
1 
1
0 .  . 
 0 −1 0


 . .
.
.
.

. . . . . . . . 0  ... 
2h ..



 0 . . . 0 −1 0 1 um−1 
um
∗
∗
∗
∗
∗ ∗



u1
∗ ∗
∗
∗
∗ ∗
 u2 
1 −2 1
0 . . . 0
 . 

.. 




1 0 1 −2 1
0 .   .. 



h2  ... . . . . . . . . . . . . 0  ... 



0 . . . 0
1 −2 1 um−1 
∗ ∗
∗
∗
∗ ∗
um

ove la prima e l’ultima riga devono essere trattate a parte, solitamente per
includere le condizioni al bordo. Le matrici relative alle approssimazione
della derivata prima e seconda possono essere costruite con i comandi
> toeplitz(sparse(1,2,-1/(2*h),1,m),sparse(1,2,1/(2*h),1,m));
e
> toeplitz(sparse([1,1],[1,2],[-2/h^2,1/h^2],1,m));
rispettivamente.
11.2
Convergenza per un problema modello
Consideriamo il seguente problema modello (elasticit`a della trave)

′′

 −u (x) + q(x)u(x) = g(x), x ∈ (a, b)
u(a) = ua

 u(b) = u
b
(11.2)
con q, g ∈ C 0 ([a, b]), q(x) ≥ 0 per x ∈ [a, b]. La funzione q(x) `e definita dal
rapporto P/(E · I(x)) (P la tensione orizzontale, E il modulo di Young e
I(x) il momento principale di inerzia) e g(x) `e la densit`a di carico verticale
(tipicamente positiva). La soluzione u(x) rappresenta il momento flettente. Vogliamo studiare l’esistenza, l’unicit`a e la regolarit`a della soluzione
analitica.
11.2. CONVERGENZA PER UN PROBLEMA MODELLO
11.2.1
39
Unicit`
a
Se u1 (x) e u2 (x) sono due soluzioni di (11.2), allora z(x) = u1 (x) − u2 (x)
soddisfa il problema omogeneo
 ′′

 −z (x) + q(x)z(x) = 0, x ∈ (a, b)
z(a) = 0
(11.3)

 z(b) = 0
Proposizione 3. Se z(x) `e soluzione di (11.3), allora z(x) ≡ 0.
Dimostrazione (metodo dell’energia). z(x) ≡ 0 `e certamente una soluzione.
Supponiamo, per assurdo, che esista anche z(x) 6= 0 soluzione. Moltiplicando
l’equazione per z(x) ed integrando si ha
Z b
Z b
′′
q(x)z(x)2 dx =
−z (x)z(x)dx +
0=
a
a
Z b
Z b
′
b
′
2
= [−z (x)z(x)]a +
z (x) dx +
q(x)z(x)2 dx =
a
a
Z b
Z b
q(x)z(x)2 dx
z ′ (x)2 dx +
=
a
a
Poich´e le funzioni integrande sono non negative, si ha che deve essere necessariamente z(x) ≡ 0, quindi assurdo.
Dunque, u1 (x) ≡ u2 (x).
11.2.2
Esistenza
Sia z(x) = c1 z1 (x) + c2 z2 (x) la soluzione generale di −z ′′ (x) + q(x)z(x) =
0, con z1 (x) e z2 (x) indipendenti (lo spazio delle soluzioni dell’equazione
lineare omogenea ha proprio dimensione due). La soluzione di (11.3) (che
corrisponde a c1 = c2 = 0) si ottiene imponendo
(
c1 z1 (a) + c2 z2 (a) = 0
c1 z1 (b) + c2 z2 (b) = 0
Poich´e sappiamo che z(x) ≡ 0 `e l’unica soluzione, si ha che la matrice
z1 (a) z2 (a)
z1 (b) z2 (b)
`e non singolare.
40
CAPITOLO 11. DIFFERENZE FINITE
La soluzione generale di −u′′ (x) + q(x)u(x) = g(x) `e u(x) = c1 z1 (x) +
c2 z2 (x) + s(x) (s(x) soluzione particolare che si ottiene dalla tecnica delle
variazioni delle costanti, cio`e supponendo s(x) = c1 (x)z1 (x) + c2 (x)z2 (x),
c1 (x) e c2 (x) da ricavare). La soluzione di (11.2) si ottiene imponendo le
condizioni al bordo
(
c1 z1 (a) + c2 z2 (a) = ua − s(a)
c1 z1 (b) + c2 z2 (b) = ub − s(b)
cio`e risolvendo un sistema lineare non singolare che ammette dunque (unica)
soluzione.
11.2.3
Regolarit`
a
Proposizione 4. Se q, g ∈ C k ([a, b]), allora u ∈ C k+2 ([a, b]).
Dimostrazione. Se q, g ∈ C 0 ([a, b]), poich´e la soluzione u esiste, u′′ `e definita
in ogni punto x ∈ [a, b], e dunque u′ esiste (ed `e derivabile). Quindi u ∈
C 0 ([a, b]) e quindi u′′ ∈ C 0 ([a, b]). Dunque u ∈ C 2 ([a, b]). Sia vero adesso
l’enunciato per k e siano q, g ∈ C k+1 ([a, b]): poich´e anche u ∈ C k+1 ([a, b]), si
ha u′′ ∈ C k+1 ([a, b]) da cui u ∈ C k+3 ([a, b]).
Si `e costretti a ridursi ad un problema modello perch´e problemi ai limiti
anche molto semplici possono non avere soluzione: si consideri, per esempio,
 ′′

 u (x) + u(x) = 0, x ∈ (0, π)
u(0) = 0

 u(π) = 1
La soluzione generale `e c1 cos(x) + c2 sin(x), ma non `e possibile imporre le
condizioni al bordo.
Ci occupiamo adesso di analizzare la convergenza del problema modello
discretizzato mediante differenze finite centrate del secondo ordine, che si
scrive

ui+1 − 2ui + ui−1


+ q i ui = g i , 2 ≤ i ≤ m − 1
−
h2
u1 = u a



um = u b
ove qi = q(xi ) e gi = g(xi ).
11.2. CONVERGENZA PER UN PROBLEMA MODELLO
11.2.4
41
Esistenza ed unicit`
a per il problema discretizzato
Il sistema lineare da risolvere per trovare u = [u1 , u2 , . . . , um−1 , um ]T `e


 

1
0
...
...
...
0
u1
ua /h2

−1 2 + q2 h2
 

−1
0
...
0
  u2   g 2 

.

 

.. 
1 
−1
2 + q3 h2 −1
0
  u3   g 3 
 0
=





.
. 
...
...
...
...
  ..   .. 
h2  ...
0


 

 0
...
0
−1 2 + qm−1 h2 −1 um−1   gm−1 
um
ub /h2
0
...
...
0
0
1
e pu`o essere semplificato in






1 

h2 





2 + q 2 h2
−1
h2
−1
2 + q3
..
.
..
.
0
0
.
.
.
0
...
...
0
...
...
−1
..
.
0
..
.
.
..
...
..
.
..
.
0
...
−1
0
..
.
2 + qm−2 h2
−1
0
..
.
0
0
−1
2 + qm−1 h2


 

u2
g2 + ua /h2

 u  

g3
 3  

 .  

.
 .  

.
 .  
.


=

 . 
.


 . 
..


 . 





 um−2  
gm−2

um−1
gm−1 + ub /h2
cio`e
Au = g
(11.4)
ove adesso u = [u2 , . . . , um−1 ]T (parliamo in questo caso di discretizzazione
a nodi interni ).
Proposizione 5. Il sistema lineare (11.4) `e non singolare e dunque ammette
un’unica soluzione.
Dimostrazione (metodo dell’energia discreto). Dato z = [z2 , z3 , . . . , zm−1 ]T ,
consideriamo il prodotto z T Az. Si ha
1
[(2 + q2 h2 )z22 − z2 z3 − z3 z2 + (2 + q3 h2 )z32 − z3 z4 + . . . +
2
h
2
+ . . . − zm−1 zm−2 + (2 + qm−1 h2 )zm−1
]=
1
2
= 2 [z22 + (z2 − z3 )2 + (z3 − z4 )2 + . . . + (zm−2 − zm−1 )2 + zm−1
]+
h
m−1
X
+
qi zi2 ≥ 0
z T Az =
i=2
Poich´e si ha una somma di elementi non negativi, l’uguaglianza a 0 si pu`o
avere solo quando tutti gli elementi sono nulli e quindi per solo per z nullo.
Dunque la matrice A `e definita positiva e quindi non singolare.
42
CAPITOLO 11. DIFFERENZE FINITE
11.2.5
Propriet`
a di A
`
A `e una matrice simmetrica, definita positiva e diagonalmente dominante. E
possibile usare i metodi iterativi, semi-iterativi e diretti senza pivoting per la
soluzione del sistema lineare. Inoltre, `e una M -matrice, cio`e i suoi elementi
extra-diagonali sono non positivi e la sua inversa ha elementi non negativi
(vedi § A.1).
11.2.6
Consistenza
Se si sostituisce ui con la soluzione analitica u(xi ), da (11.1) si ottiene

u(xi+1 ) − 2u(xi ) + u(xi−1 )
(2)


+ q(xi )u(xi ) − g(xi ) = −τi , 2 ≤ i ≤ m − 1
−
h2
u(x1 ) = ua



u(xm ) = ub
da cui si deduce che il metodo numerico `e consistente di ordine 2.
Definiamo l’errore eh = [e2,h , . . . , em−1,h ]T = [u2 − u(x2 ), . . . , um−1 −
u(xm−1 )]T , h = (b − a)/(m − 1). Poich´e
A[u2 , . . . , um−1 ]T = g
(2)
A[u(x2 ), . . . , u(xm−1 )]T = g − τ h
(2)
(2)
(2)
ove τ h = [τ2,h , . . . , τm−1,h ]T , si deduce eh = A−1 τ h . Si pu`o concludere
che l’errore tende a zero come τ h quando h →? No, perch´e non abbiamo
−1
per h → 0.
informazioni sul comportamento di A−1
h = A
11.2.7
Stabilit`
a
Consideriamo due soluzioni relative a dati perturbati g˜ e g¯ . Si ha
A˜
u = g˜
A¯
u = g¯
da cui
¯ ) = A−1 (˜
(˜
u−u
g − g¯ )
Se si vuole che le perturbazioni sui dati non si ripercuotano in maniera
distruttiva sulle soluzioni, occorre che la matrice A−1 sia limitata in norma
indipendentemente da h, in particolare per h → 0. Consideriamo la matrice
11.2. CONVERGENZA PER UN PROBLEMA MODELLO
43
Aq=0 corrispondente alla stessa discretizzazione nel caso q(x) ≡ 0. Si ha
A − Aq=0 = diag(q2 , . . . , qm−1 ) ≥ 0. Allora
−1
−1
A−1
= A−1
≥0
q=0 − A
q=0 (A − Aq=0 )A
−1
perch´e Aq=0 e A sono M -matrici. Allora A−1 ≤ A−1
q=0 e quindi kA k∞ ≤
−1
−1
T
kA−1
q=0 k∞ . Osserviamo poi che kAq=0 k∞ = kAq=0 [1, . . . , 1] k∞ e che v =
T
A−1
e la soluzione discreta (approssimata) di
q=0 [1, . . . , 1] `
 ′′

 −v (x) = 1
v(a) = 0


v(b) = 0
la cui soluzione analitica `e v(x) = (x−a)(b−x)/2. Poich´e v (4) (x) ≡ 0 l’errore
(2)
locale τi , per questo problema, `e nullo e la soluzione discreta coincide, nei
nodi, con la soluzione analitica. Dunque
−1
T
kA−1
q=0 k∞ = kAq=0 [1, . . . , 1] k∞ = max vi =
2≤i≤m−1
= max v(xi ) ≤ max v(x) ≤
2≤i≤m−1
x∈[a,b]
(b − a)2
8
e poich´e kA−1 k∞ ≤ kA−1
q=0 k∞ , si ha la maggiorazione richiesta. Abbiamo
dunque mostrato che se si hanno due dati iniziali perturbati, le rispettive
soluzioni saranno diverse, ma di poco distanti tra loro, qualunque sia il passo
di discretizzazione h.
11.2.8
Convergenza
Combinando i risultati di consistenza e stabilit`
a, si ottiene, per il problema
(11.2) discretizzato mediante differenze finite centrate del secondo ordine,
keh k∞ ≤
(b − a)2 h2 (4)
ku k∞
8
12
e dunque l’errore `e proporzionale a h2 , posto che u ∈ C 4 ([a, b]).
44
CAPITOLO 11. DIFFERENZE FINITE
11.3
Altre differenze finite
11.3.1
Su nodi non equispaziati
Dati tre nodi xi−1 , xi , xi+1 , con hi−1 = xi − xi−1 e hi = xi+1 − xi , si ha
h3
h2i ′′
u (xi ) + i u(3) (xi ) + O(h4i )
2
6
2
h3
h
u(xi−1 ) = u(xi ) − hi−1 u′ (xi ) + i−1 u′′ (xi ) − i−1 u(3) (xi ) + O(h4i−1 )
2
6
u(xi+1 ) = u(xi ) + hi u′ (xi ) +
da cui
u(xi+1 ) − u(xi−1 ) 1 h2i − h2i−1 ′′
1 h3i−1 + h3i (3)
u (xi ) =
−
u (xi ) −
u (xi )+
hi−1 + hi
2 hi−1 + hi
6 hi−1 + hi
+ O(max{h4i−1 , h4i })
′
Se hi−1 e hi non differiscono troppo (precisamente, se la loro differenza
`e O(max{h2i−1 , h2i })), allora l’approssimazione con il rapporto incrementale centrato `e di ordine O(max{h2i−1 , h2i }). Analogamente, si pu`o costruire
un’approssimazione della derivata seconda
′′
u (xi ) ≈
u(xi+1 )−u(xi )
i−1 )
− u(xi )−u(x
hi
hi−1
hi−1 +hi
2
La matrice corrispondente all’approssimazione mediante differenze finite di
ordine due della derivata prima con griglia non equispaziata `e (senza tener
condo delle condizioni ai bordi)

u′ (x1 )
u′ (x2 )
u′ (x3 )
..
.


∗
∗
0
∗
1
h1 +h2
∗
0
0
..
.
0
∗
−1
h2 +h3
0
1
h2 +h3
 h1−1
 +h2


 

 

 

≈

 



u′ (xm−1 ) 

u′ (xm )
..
.
...
∗
..
0
∗
.
..
.
−1
hm−2 +hm−1
∗
∗
...
..
.
..
.
0
∗
∗
0
..
.


u(x1 )

  u(x2 ) 


  u(x3 ) 



..


.


0

1
 u(xm−1 )
hm−2 +hm−1
u(xm )
∗
Dati i nodi x (vettore colonna di lunghezza m), `e possibile costruire il vettore
[h1 , h2 , . . . , hm−1 ]T con il comando h=diff(x). Allora la matrice, a meno
della prima e dell’ultima riga, pu`o essere costruita, direttamente in formato
sparso, con i comandi
> d = 1./(h(1:m-2)+h(2:m-1));
> spdiags([[-d;0;0],[0;0;d]],[-1,1],m,m)
La costruzione della matrice relativa alla derivata seconda `e analoga.
11.4. CONDIZIONI AL BORDO
11.3.2
45
Non centrate
` possibile approssimare la derivata prima e seconda usando i nodi che stanno
E
solo a sinistra (o a destra) del nodo corrente. Per esempio,
u(x2 ) − u(x1 )
−3u(x1 ) + 4u(x2 ) − u(x3 )
+ O(h) =
+ O(h2 )
h
2h
u(x
)
−
2u(x
)
+
u(x
)
1
2
3
u′′ (x1 ) =
+ O(h) =
h2
2u(x1 ) − 5u(x2 ) + 4u(x3 ) − u(x4 )
=
+ O(h2 )
h2
u′ (x1 ) =
Ci`o pu`o risultare utile per l’approssimazione ai bordi.
11.3.3
Di ordine pi`
u elevato
Si possono per esempio costruire differenze finite di ordine quattro centrate
u(xi−2 ) − 8u(xi−1 ) + 8u(xi+1 ) − u(xi+2 )
+ O(h4 )
12h
−u(xi−2 ) + 16u(xi−1 ) − 30u(xi ) + 16u(xi+1 ) − u(xi+2 )
u′′ (xi ) =
+ O(h4 )
12h2
u′ (xi ) =
11.4
Condizioni al bordo
L’applicazione delle approssimazioni introdotte porta alla trasformazione del
problema differenziale in un sistema di equazioni in generale non lineari
F˜ (u) = 0
Tale sistema deve essere opportunamente modificato (o completato) in modo
da esprimere le condizioni al bordo.
11.4.1
Condizioni di Robin
Le pi`
u generali condizioni al bordo che consideriamo sono quelle di Robin,
del tipo (per esempio per x = a)
αu(a) + βu′ (a) = γ
(11.5)
ove α, β e γ sono noti. Si pu`o procedere in questo modo: si suppone l’esistenza di un nodo x0 definito come a − h (a − h1 in generale) al quale corrisponde
il valore u(a − h) “fantasma” della soluzione approssimato da u0 . A questo
46
CAPITOLO 11. DIFFERENZE FINITE
punto si discretizza l’equazione (11.5) con differenze finite centrate di ordine
due
u2 − u 0
αu1 + β
=γ
2h
Se β = 0 (e α 6= 0), allora le condizioni al bordo sono di Dirichlet e sono
usualmente date nella forma
u(a) = ua = γ/α
da cui si deve imporre
u1 = ua
(11.6)
Se invece β 6= 0, si ricava u0
u0 =
2h
(αu1 − γ) + u2
β
(11.7)
e questo valore va usato nell’approssimare u′ (x) e u′′ (x), per x = a, nell’equazione differenziale. Se α = 0, si parla di condizioni di Neumann e sono
usualmente date nella forma
u′ (a) = u′a
da cui si deve imporre
u0 = −2hu′a + u2
(11.8)
Condizioni di Dirichlet
Conviene discretizzare, in un primo momento, il problema ai limiti senza
tener conto delle condizioni al bordo. Per esempio, la discretizzazione del
problema ai limiti
 ′′

 u (x) = 1, x ∈ (a, b)
u(a) = ua

 u(b) = u
b
senza tener conto delle condizioni al bordo diventa
  


1
u1
−2 1
0 0 ··· 0
 1 −2 1 0 · · · 0   u2  1
  


. . . . . . . . . . . . ..   ..   .. 

1
.
0
.
 .



˜=
˜ −b
F˜ (u) = Au
  .  − . = 0
 . .
2
.
.
.
. . . . . . . . 0   ..   .. 
h  ..
  


 0 · · · 0 1 −2 1  um−1  1
1
um
0 ··· 0 0
1 −2
11.4. CONDIZIONI AL BORDO
47
Poi, si correggono le equazioni relative ai nodi al bordo

1
1

1 
0
F (u) = Au − b = 2  .
h  ..

0
0

 

ua /h2
u1
0
0 0 ··· 0

 

−2 1 0 · · · 0
  u2   1 
. . . . . . . . . . . . ..   ..   .. 
.  .   . 
 . − . =0
... ... ... ... 
 .   . 
0
 .   . 

· · · 0 1 −2 1 um−1   1 
ub /h2
um
··· 0 0
0 1
Si vede che la prima riga del sistema F (u) = 0 corrisponde all’equazione (11.6). A questo punto si risolve il sistema (in questo esempio lineare) di
equazioni
F (u) = Au − b = 0
In questo modo, per`o, la simmetria della matrice A˜ viene persa. Pertanto,
non `e pi`
u possibile applicare gli appositi metodi per la risoluzione di sistemi
lineari simmetrici. Un metodo numericamente equivalente, detto metodo di
penalizzazione, `e quello di modificare i soli elementi diagonali della prima e
dell’ultima riga inserendo un numero molto grande M


 

M 1
0 0 ··· 0
u1
M ua /h2
 1 −2 1 0 · · · 0   u2   1 


 

..
. . . . . . . . . . . . ..   ..  

1 
0
.
.
.


 

−





=0
..

h2  ... . . . . . . . . . . . . 0   ...  
.


 

 0 · · · 0 1 −2 1  um−1   1 
0 ··· 0 0
1 M
um
M ub /h2
Per poter usare l’algoritmo di Choleski, `e inoltre necessario che la matrice
sia definita positiva. Conviene allora considerare il problema −u′′ (x) = −1.
Condizioni di Neumann
L’espressione trovata per u0 nel caso generale delle condizioni di Robin (11.7)
va usata poi in qualunque stencil di discretizzatione. Per esempio, la discretizzazione del problema ai limiti
 ′′
′

 u (x) − u (x) = 1
u′ (a) = u′a

 u(b) = u
b
48
CAPITOLO 11. DIFFERENZE FINITE
u(x)
u3
u2
u1
u0
y = u′a (x − x2 ) + u2
h
x0
h
a = x1
x2
x3
Figura 11.3: Imposizione di una condizione di Neumann sull’estremo sinistro.
in x = a sar`a
(u2 − 2hu′a ) − 2u1 + u2 u2 − (u2 − 2hu′a )
u0 − 2u1 + u2 u2 − u0
−
=
−
=
h2
2h
h2
2h
2u2 − 2u1 − 2hu′a
=
− u′a = 1
h2
da cui
2u2 − 2u1
2u′a
+ u′a
=
1
+
h2
h
e dunque

−2
1 + h

2

1  0
F (u) = Au−b = 2 
.
h 
 ..

 0
0
2
0
−2 1 − h2
..
..
.
.
..
..
.
.
···
0
···
0
0
0
..
.
..
.
1 + h2
0
···
0
···
0
..
..
.
.
..
.
0
−2 1 −
0
1

u1
u2
..
.
..
.
 
 

 

 

 

− 

 

 

 


h  u
m−1  
2
um
1+
2u′a
h
1
..
.
..
.
1
ub /h2
Anche in questo caso, `e possibile recuperare l’eventuale simmetria di partenza
riscalando opportunamente la prima equazione.
11.4.2
Importanza delle condizioni al bordo
Spesso si trascura l’importanza di una corretta imposizione delle condizioni al
bordo e si pensa che l’influenza delle condizioni riguardi solamente un intorno
del bordo. Ovviamente non `e cos`ı: basti pensare all’equazione differenziale
−u′′ (x) = 2,
x ∈ (−1, 1)
+ u′a





=0




11.5. UN ESEMPIO: L’EQUAZIONE DELLA CATENARIA
49
munita delle condizioni al bordo
u(−1) = u(1) = 0
(la cui soluzione `e u(x) = −x2 + 1) oppure
(
u(−1) = 0
u′ (1) = 0
(la cui soluzione `e u(x) = −x2 + 2x + 3) oppure
u′ (−1) = u′ (1) = 0
(nessuna soluzione) oppure
(
u′ (−1) = 2
u′ (1) = −2
(infinite soluzioni u(x) = −x2 + k).
11.5
Un esempio: l’equazione della catenaria
Consideriamo l’equazione della catenaria (corda flessibile inestensibile appesa
agli estremi)

p
′′

u
(x)
=
α
1 + u′ (x)2 , x ∈ (−1, 1)

(11.9)
u(−1) = 1


u(1) = 1
la cui soluzione analitica `e
u(x) =
cosh(ax) cosh a
−
+1
a
a
e il parametro a dipende dalla lunghezza della corda (vedi Appendice A.5).
La discretizzazione mediante differenze finite centrate del secondo ordine `e




u1
1
q


 u2 
−u1 2 

 . 
1 + u32h

 . 


 . 

.
.
A .  − α
=b
.
q
 .. 





m−2 2
 1 + um −u
um−1 

2h
1
um
50
CAPITOLO 11. DIFFERENZE FINITE
Si tratta dunque di risolvere il sistema non lineare nell’incognita u
p
F (u) = Au − α 1 + (Bu)2 − b = 0
ove

1
1

1 
0
A = 2 .
h  ..

0
0

0
0 0 ··· 0
−2 1 0 · · · 0

. . . . . . . . . . . . .. 
.
,
... ... ... ... 
0

· · · 0 1 −2 1
··· 0 0
0 1
e b = [1/h2 − α, 0, . . . , 0, 1/h2 − α]T .
11.5.1

0
−1

1 
0
B=

2h  ...

0
0
0
0
...
...
0
1
...
...
···
···
0
0
0 ···
0 ···
... ...
... ...
−1 0
0
0

0
0
.. 

.

0

1
0
Iterazioni di punto fisso
Si pu`o tentare di risolvere il sistema di equazioni F (u) = 0 mediante iterazioni di punto fisso, che consistono nel risolvere il sistema lineare
q
(r+1)
Au
= α 1 + (Bu(r) )2 + b
L’applicazione del metodo risulta molto semplice: si pu`o decomporre A nei
fattori LU una sola volta e risolvere due sistemi lineari triangolari ad ogni
iterazione. La funzione G deve essere una contrazione e ci`o pu`o essere difficile
da verificare. Inoltre, la convergenza risulta essere lineare. Per l’esempio
della catenaria, comunque, il metodo delle iterazioni di punto fisso converge
adeguatamente.
11.5.2
Metodo di Newton
Volendo applicare il metodo di Newton (a convergenza quadratica) `e necessario calcolare lo jacobiano di F (u), che risulta essere
JF (u(r) ) = A − αD(u(r) )B
ove
D = (dij (u(r) )),

(r)

 p (Bu )i
, i=j
dij (u(r) ) =
1 + (Bu(r) )2i

0,
i=
6 j
A questo punto, l’iterazione del metodo di Newton consiste nella risoluzione
11.6. NORME ED ERRORI
51
1e-3
1
errore
h2
catenaria.m
0.8
errore in norma infinito
u(x)
0.6
0.4
1e-4
0.2
0
1e-5
-0.2
-1
-0.5
0
x
0.5
1
20
30
40
50
60
m
Figura 11.4: Soluzione dell’equazione della catenaria (sinistra, m = 60) e
ordine di convergenza (destra).
del sistema lineare
JF (u(r) ) u(r+1) − u(r) = −F (u(r) )
In generale, lo jacobiano di un funzionale F (u) calcolato in u(r) e applicato a v `e
JF (u(r) )v =
F (u(r) + εv) − F (u(r) )
dF (r)
(u )v = lim
ε→0
du
ε
Come soluzione iniziale si prende solitamente una funzione semplice che
soddisfi le condizioni al bordo.
11.6
Norme ed errori
Data una funzione u(x) e due diverse discretizzazioni su nodi equispaziati
[˜
u1 , . . . , u˜m ] ≈ [u(˜
x1 ), . . . , u(˜
xm )] e [ˆ
u1 , . . . , uˆl ] ≈ [u(ˆ
x1 ), . . . , u(ˆ
xl )], {˜
xi }i ⊂
[a, b], {ˆ
xi }i ⊂ [a, b], non ha molto senso confrontare gli errori k[u(˜
x1 ) −
u˜1 , u(˜
x2 ) − u˜2 , . . . , u(˜
xm ) − u˜m ]k2 e k[u(ˆ
x1 ) − uˆ1 , y(ˆ
x2 ) − uˆ2 ,q
. . . , u(ˆ
xl ) − uˆl ]k2 .
Si preferisce usare la norma infinito, oppure la norma kuk2 b−a
, che risulta
m
essere una approssimazione mediante quadratura con formula dei rettangoli
della norma in L2 di u(x).
Se si devono invece confrontare tra loro le due discretizzazioni, occorre che
i nodi siano “intercalati” e bisogna fare attenzione alla falsa superconvergenza
(vedi Figura 11.5). Se si calcola una soluzione di riferimento con m
¯ punti di
discretizzazione, si ha
kum − uk∞ − ku − um¯ k∞ ≤ kum − um¯ k∞ ≤ kum − uk∞ + ku − um¯ k∞
52
CAPITOLO 11. DIFFERENZE FINITE
10−2
h2
errore rispetto alla soluzione esatta
errore rispetto alla soluzione di riferimento
fsc.m
errore in norma infinito
10−3
10−4
10−5
10−6
102
m
10
103
Figura 11.5: Convergenza e falsa superconvergenza per la risoluzione di
u′′ (x) = − sin(x), u(0) = u(π) = 0.
da cui
kum − uk∞ − ε ≤ kum − um¯ k∞ ≤ kum − uk∞ + ε
se ku − um¯ k∞ = ε < kum − uk∞ . Ci`o significa che si pu`o stimare l’errore di
um usando una soluzione di riferimento um¯ solo se questa dista poco dalla
soluzione analitica e se m ≪ m,
¯ altrimenti la stima dice solo che kum −
um¯ k∞ / 2ε. Si ha cio`e l’impressione che la soluzione numerica sia pi`
u vicina
alla soluzione analitica di quello che dovrebbe, invece `e solo molto vicina a
quella di riferimento (per assurdo, se m = m,
¯ kum −um¯ k∞ = 0 6= kum −uk∞ ).
Una maniera molto comoda per verificare l’ordine di un metodo si basa
sulla seguente osservazione. Siano em˜ e emˆ gli errori corrispondenti a due
discretizzazioni con m
˜ +1 e m
ˆ + 1 punti. Supponiamo che
C
m
˜p
C
= p
m
ˆ
kem˜ k∞ =
kemˆ k∞
Si ricava
logkem˜ k∞ − logkemˆ k∞ = −p(log m
˜ − log m)
ˆ
Dunque, in un grafico logaritmico-logaritmico, l’errore kem k∞ si dispone su
una retta di pendenza −p (cio`e parallelo alla “retta” m−p ) rispetto a m.
11.7. DERIVATE ED EQUAZIONI DIFFERENZIALI
11.7
53
Derivate ed equazioni differenziali
Il calcolo esplicito di derivate e la risoluzione di equazioni differenziali sono
problemi ben distinti. Per esempio, se `e vero che il calcolo della derivata di
exp(x) tramite rapporto incrementale centrato
exp′ (x) ≈
exp(x + h) − exp(x − h)
2h
soffre di severi errori di cancellazione per h piccolo, meno problematica `e la
risoluzione del problema differenziale
 ′

 u (x) = exp(x), x ∈ (0, 1)
u(0) = 1

 u(1) = e
tramite differenze finite centrate del secondo ordine, in cui `e il numero di condizionamento della matrice ad influire sulla corretta risoluzione del sistema
lineare.
10−7
derivata
equazione di.
ordine
10−8
10−9
10−10
10−11
10−12
10−13
103
104
105
m
106
107
Figura 11.6: Andamento degli errori nel calcolo della derivata di exp(x).
In Figura 11.6 `e riportato l’andamento di max2≤i≤m {|(exp(xi + 1/m) −
exp(xi −1/m))/(2/m)−exp(xi )|} e max2≤i≤m {|ui −exp(xi )|}, xi = (i−1)/m,
i = 1, 2, . . . , m + 1 per valori di m da 10000 a pi`
u di 2500000. L’andamento
del numero di condizionamento della matrice si comporta come m.
derequadiff.m
Capitolo 12
Metodo di shooting
` possibile trasformare il problema (10.1) in un sistema differenziale del
E
primo ordine
y ′ (t) = f (t, y(t)), t ∈ (a, b]
tramite il cambiamento di variabili t = x, y1 (t) = u(x), y2 (t) = u′ (x),
f (t, y(t)) = [y2 (t), f (t, y1 (t), y2 (t)]T . Per quanto riguarda le condizioni iniziali, mentre quella per y1 (t) `e y1 (a) = ua , quella per y2 (t) non `e definita. Si
pu`o allora introdurre un parametro s ∈ R e considerare la seguente famiglia
di problemi ai valori iniziali
 ′

 y (t) = f (t, y(t)), t ∈ (a, b]
y1 (a) = ua
(12.1)

 y (a) = s
2
Dato s, il sistema sopra pu`o essere risolto con un opportuno metodo per
problemi ai valori iniziali. Poich´e s `e il valore della derivata prima di u(x), tale
metodo di risoluzione prende il nome di shooting. Chiamiamo y1 (t | y2 (a) = s)
(da leggersi “valore di y1 in t dato che y2 in a vale s”) la prima componente
della soluzione. Si dovr`a ovviamente trovare s¯ tale che y1 (t | y2 (a) = s¯) =
u(x), t = x ∈ [a, b]. In particolare, dovr`a essere y1 (b | y2 (a) = s¯) = ub .
Introduciamo allora la funzione
F (s) = y1 (b | y2 (a) = s) − ub
Si tratta di risolvere l’equazione (in generale non lineare) F (s) = 0.
12.1
Metodo di bisezione
Dati due valori s1 e s2 per cui F (s1 )F (s2 ) < 0, `e possibile applicare il metodo
di bisezione per trovare lo zero di F (s). Poich´e la soluzione di (12.1) `e
54
12.2. METODO DI NEWTON
55
approssimata a meno di un errore dipendente dal passo di discretizzazione
temporale, la tolleranza richiesta per il metodo di bisezione dovr`a essere
(leggermente) inferiore a tale errore.
12.2
Metodo di Newton
Per applicare il metodo di Newton, `e necessario calcolare F ′ (s). Definiamo
a tal scopo
v(x) =
∂
∂
u(x | u′ (a) = s) =
y1 (t | y2 (a) = s)
∂s
∂s
Derivando rispetto a s nel problema ai limiti
 ′′
′

 u (x) = f (x, u(x), u (x)),
u(a) = ua

 u′ (a) = s
x ∈ (a, b)
(la cui incognita u(x) `e proprio u(x | u′ (a) = s)) si ha
∂ ′′
∂
u (x) =
f (x, u(x), u′ (x))
∂s
∂s
da cui, scambiando l’ordine di derivazione
v ′′ (x) = fu (x, u(x), u′ (x))v(x) + fu′ (x, u(x), u′ (x))v ′ (x),
x ∈ (a, b)
Per quanto riguarda le condizioni iniziali per v(x), si ha
∂
u(a | u′ (a) = s) = 0
∂s
∂ ′
v ′ (a) =
u (a | u′ (a) = s) = 1
∂s
v(a) =
Dunque, per calcolare F ′ (s) = v(b) occorre risolvere il sistema variazionale
(lineare in v(x))
 ′′
′
′
′

 v (x) = fu (x, u(x), u (x))v(x) + fu′ (x, u(x), u (x))v (x),
v(a) = 0

 v ′ (a) = 1
x ∈ (a, b)
56
CAPITOLO 12. METODO DI SHOOTING
In conclusione, per calcolare la coppia F (s) e F ′ (s) in un generico punto s,
occorre risolvere il sistema differenziale del primo ordine ai dati iniziali
 ′

 y1 (t) = y2 (t)



y2′ (t) = f (t, y1 (t), y2 (t))





y3′ (t) = y4 (t)



 y ′ (t) = f (t, y (t), y (t))y (t) + f (t, y (t), y (t))y (t)
y1
1
2
3
y2
1
2
4
4

y1 (a) = ua





y2 (a) = s




y3 (a) = 0




y4 (a) = 1
fino al tempo t = b. Quindi F (s) = y1 (b) e F ′ (s) = y3 (b). Poich´e le equazioni
per y1′ (t) e y2′ (t) non dipendono da y3 (t) e y4 (t), `e possibile disaccoppiare le
prime due componenti dalle seconde due.
Una semplificazione del metodo di Newton che non richiede il calcolo di
F ′ (s) `e il metodo delle secanti.
12.3
Problema ai limiti con frontiera libera
Un caso particolarmente interessante per l’applicazione del metodo di shooting `e quello a frontiera libera (free boundary)
 ′′
u (x) = f (x, u(x), u′ (x)),




u(s) = α

u′ (s) = β



u(b) = ub
x ∈ (s, b)
(12.2)
ove i valori di u e di u′ sono assegnati in un punto incognito s, s < b. La
funzione di cui si deve trovare lo zero `e, in questo caso,
F (s) = u(b | u(s) = α, u′ (s) = β) − ub
(scriveremo F (s) = u(b | s) − ub per brevit`a). Dati due punti s1 e s2 tali
che F (s1 )F (s2 ) < 0, l’applicazione del metodo di bisezione non presenta
difficolt`a. Per quanto riguarda il metodo di Newton, il sistema variazionale
per
∂
u(x | s + h) − u(x | s)
v(x) =
u(x | s) = lim
h→0
∂s
h
12.3. PROBLEMA AI LIMITI CON FRONTIERA LIBERA
57
`e analogo al caso precedente. L’unica diversit`a `e data dalle condizioni iniziali
(in s). Si ha
u(s | s + h) − u(s | s)
v(s) = lim
h→0
h
Ora, u(s | s) = α. Poi
u(s | s + h) = u(s + h | s + h) − hu′ (s + h | s + h) + O(h2 ) = α − hβ + O(h2 )
Dunque, v(s) = −β. In maniera analoga
u′ (s | s + h) − u′ (s | s)
= −u′′ (s)
h→0
h
v ′ (s) = lim
ove il valore u′′ (s) si ricava dal problema (12.2) e vale f (s, α, β).
Capitolo 13
Equazione di Poisson
Di particolare interesse `e l’equazione di Poisson
−∇2 u(x) = f (x),
x ∈ Ω ⊂ Rd
ove ∇2 `e l’operatore laplaciano definito da
d
X
∂2
∇ =
∂x2k
k=1
2
L’equazione `e solitamente accompagnata da condizioni al bordo di Dirichlet
o di Neumann.
13.1
Equazione di Poisson bidimensionale
Analizziamo numericamente in dettaglio il caso d = 2 (x = (x, y)) e Ω =
[a, b] × [c, d].
13.1.1
Condizioni al bordo di Dirichlet
Consideriamo dapprima il caso con condizioni al bordo di Dirichlet. Dunque


−∇2 u(x, y) = f (x, y), (x, y) ∈ [a, b] × [c, d] ⊂ R2





 u(a, y) = Da (y)
u(b, y) = Db (y)



u(x, c) = Dc (x)



 u(x, d) = D (x)
d
con le necessarie condizioni di compatibilit`a ai vertici. Introduciamo una
discretizzazione xi = a + (i − 1)hx , i = 1, 2, . . . , mx , hx = (b − a)/(mx − 1)
58
13.1. EQUAZIONE DI POISSON BIDIMENSIONALE
59
e yj = c + (j − 1)hy , j = 1, 2, . . . , my , hy = (d − c)/(my − 1). Introduciamo
infine la discretizzazione di u(x, y) definita da
uk ≈ u(xi , yj ),
k = (j − 1)mx + i
di cui si vede un esempio in Figura 13.1. La matrice di discretizzazio-
u13
u14
u15
u16
u9
u10
u11
u12
u5
u6
u7
u8
u1
u2
u3
u4
Figura 13.1: Numerazione di una griglia bidimensionale
ne alle differenze finite centrate del secondo ordine, senza tener conto delle
condizioni al bordo, `e data da
A = Imy ⊗ Ax + Ay ⊗ Imx
ove ⊗ indica il prodotto di Kronecker e
2



−1



1  0

Ax =

2
hx 

 0

 .
 .
 .
0

−1
0
2
..
.
.
..
...
...
...
...
−1
0
...
..
..
..
.
.
..
0
...
.
.
..
−1
0
.
.
..
2
−1

0
.
.
.




0
,



0



−1
2
2



−1



1  0

Ay =

2
hy 

 0

 .
 .
 .
0

−1
0
2
..
.
.
..
...
...
...
...
−1
0
...
..
..
.
.
..
0
...
.
.
..
−1
0
..
.
.
..
2
−1

0
.
.
.




0




0



−1
2
ove Ax ∈ Rmx ×mx e Ay ∈ Rmy ×my . Poi, le righe di indice, diciamo k, corrispondente ad un nodo al bordo vanno sostituite con il vettore della base
60
CAPITOLO 13. EQUAZIONE DI POISSON
canonica ek , diviso per h2x + h2y . Il termine noto `e [b1 , b2 , . . . , bmx my ]T , ove


f (xi , yj ) se (xi , yj ) `e un nodo interno, k = (j − 1)mx + i



Da (yj )

se xi = a, k = (j − 1)mx + i

 h2x +h2y

Db (yj )
se xi = b, k = (j − 1)mx + i
bk = h2x +h2y


D (x )

se yj = c, k = (j − 1)mx + i
 h2xc+hi2y



 Dd (xi )
se yj = d, k = (j − 1)mx + i
h2 +h2
x
y
Alternativamente, si pu`o sostituire il solo termine diagonale delle righe corrispondenti ad un nodo al bordo con un coefficiente M/(h2x + h2y ), M ≫ 1
e moltiplicare per M il corrispondente elemento nel termine noto. Questa
procedura permette di assegnare, di fatto, le condizioni al bordo di Dirichlet,
mantenendo la matrice A simmetrica.
In GNU Octave, la corretta numerazione dei nodi avviene con i comandi
> x = linspace(a,b,mx);
> y = linspace(c,d,my);
> [X,Y] = ndgrid(x,y);
e la costruzione della matrice A tramite il comando kron.
13.1.2
Condizioni al bordo miste
L’equazione di Poisson non pu`o essere accompagnata solo da condizioni al
bordo di Neumann, altrimenti la soluzione `e indeterminata. Consideriamo
allora il seguente problema con condizioni al bordo miste

−∇2 u(x, y) = f (x, y), (x, y) ∈ [a, b] × [c, d] ⊂ R2





u(b, y) = Db (y)




 u(x, c) = Dc (x), Dc (b) = Db (c)
∂u


− (x, y) = Na (y), x = a, c < y < d


∂x



∂u



(x, y) = Nd (x), y = d, x < b
∂y
La matrice di discretizzazione alle differenze finite centrate del secondo ordine
`e data da
A = Imy ⊗ Ax + Ay ⊗ Imx
13.1. EQUAZIONE DI POISSON BIDIMENSIONALE
61
ove
2


−1




1  0

Ax =

h2
x 

 0

 .
 .
 .
0

0
−2
...
...
2
−1
0
...
..
.
..
.
..
.
..
.
..
.
..
.
..
0
...
−1
0
..
...
...
2
−1
.
.

0
.
.
.




0
,



0



−1
2
2


−1




1  0

Ay =

h2
y 

 0

 .
 .
 .
0

−1
0
2
..
..
...
...
−1
0
...
.
..
.
..
.
..
.
..
0
...
−1
0
...
...
.
..
.
.
..
.
2
−2

0
.
.
.




0




0



−1
2
Poi, le righe di indice, diciamo k, corrispondente ad un nodo al bordo su cui
sono prescritte condizioni di Dirichlet vanno sostituite con il vettore della
base canonica ek , diviso per h2x + h2y . La riga di indice my , corrispondente al
nodo di bordo (a, c), va sostituita con
[0, . . . , 0, 1] ⊗
1
1
[−2, 5, −4, 1, 0, . . . , 0] + 2 [0, . . . , 0, −2, 2] ⊗ [1, 0, . . . , 0]
2
hx
hy
(si pu`o verificare che lo stencil [2, −5, 4, −1]/h2x `e un’approssimazione al secondo ordine della derivata seconda). Il termine noto `e [b1 , b2 , . . . , bmx my ]T ,
ove


se (xi , yj ) `e un nodo interno, k = (j − 1)mx + i
f (xi , yj )


Db (yj )


se xi = b, k = (j − 1)mx + i

 h2 +h2
x
bk =
y
Dc (xi )
2
2
 hx +hy



f (xi , yj ) +



f (xi , yj ) +
2Na (yi )
hx
2Nd (xi )
hy
se yj = c, k = (j − 1)mx + i
se xi = a, k = (j − 1)mx + i, j 6= 1, j 6= my
se yj = d, k = (j − 1)my + i, i =
6 mx
Capitolo 14
Metodi variazionali
14.1
Formulazione variazionale di un problema modello
Un filo elastico (con tensione unitaria) sottoposto ad un carico soddisfa, sotto
opportune ipotesi di regolarit`a e nel caso di piccole deformazioni, l’equazione
(
−u′′ (x) = g(x),
x ∈ (0, 1)
u(0) = u(1) = 0
(14.1)
ove u(x) rappresenta lo scostamento dalla posizione di riposo orizzontale.
Supponiamo che il carico sia g(x) = gε (x)
(
−u′′ (x) = gε (x),
x ∈ (0, 1)
u(0) = u(1) = 0
(14.2)
ove


0
1
gε (x) = − 2ε


0
0 ≤ x < 21 − ε
1
− ε ≤ x ≤ 21 + ε
2
1
+ε<x≤1
2
La funzione discontinua gε rappresenta la densit`a di carico e il carico totale
vale
Z 1
gε (x)dx = −1
0
62
14.1. UN PROBLEMA MODELLO
63
La “soluzione” di (14.2) `e

1
1


0≤x≤ −ε
− x


2
2


2
 1
1
1
ε−1 1
uε (x) =
x−
−ε≤x≤ +ε
+

4ε
2
4
2
2




1

 − 1 (1 − x)
+ε≤x≤1
2
2
In che senso soluzione? Chiaramente u′′ε (1/2 ± ε) non esiste e quindi non `e
vero che −u′′ε (x) = gε (x), x ∈ (0, 1). Cerchiamo dunque una formulazione
alternativa che renda sensato il modello per un problema cos`ı semplice e fisico
come (14.2).
Introduciamo il seguente spazio lineare:
V = {v: v ∈ C 0 ([0, 1]), v ′ continua a tratti e limitata, v(0) = v(1) = 0}
e il prodotto scalare su V
(v, w) =
Z
1
v(x)w(x)dx
0
Con il termine “v ′ continua a tratti e limitata” intendiamo che v `e derivabile
ovunque eccetto alpi`
u un insieme finito di punti e dove `e derivabile v ′ `e
continua e limitata.
Teorema 4 (Formulazione variazionale). Se u(x) `e la soluzione del problema (14.1), allora u ∈ V e
(u′ , v ′ ) = (g, v),
∀v ∈ V
Dimostrazione. Sia u soluzione di (14.1). Allora, per ogni v ∈ V ,
Z
1
′′
0
−u (x)v(x)dx =
Z
1
g(x)v(x)dx = (g, v)
0
Integrando per parti,
Z
1
1 Z
−u (x)v(x)dx = −u (x)v(x) +
′′
0
poich´e v(0) = v(1) = 0.
′
0
1
u′ (x)v ′ (x)dx = (u′ , v ′ )
0
(14.3)
64
CAPITOLO 14. METODI VARIAZIONALI
Per quanto visto per il problema modello (11.2), se g ∈ C 0 (0, 1), la soluzione di (14.1) esiste ed `e unica. Per quanto appena dimostrato, essa `e
soluzione anche di (14.3). Ritornando al problema modello (14.1), ove per`o
non facciamo ipotesi su g, la soluzione classica, quella di classe (almeno) C 2 ,
si chiama soluzione forte del problema (14.1), mentre la soluzione di (14.3)
si chiama soluzione debole del problema (14.1). Con il teorema e l’esempio
precedenti abbiamo dimostrato che se esiste la soluzione forte, essa `e anche
soluzione debole, ma non `e sempre vero il contrario (cio`e pu`o esistere la sola
soluzione debole). Questo `e il caso di (14.2), per cui la soluzione debole `e
uε ∈ V , visto che
Z
1
0
u′ε (x)v ′ (x)dx
=
Z
1
−ε
2
0
=−
=−
Z
Z
u′ε (x)v ′ (x)dx
1
−ε
2
0
1
+ε
2
1
−ε
2
+
Z
u′′ε (x)v(x)dx
−
1
v(x)dx =
2ε
Z
1
+ε
2
u′ε (x)v ′ (x)dx
1
−ε
2
1
+ε
2
Z
1
−ε
2
1
+ε
2
1
−ε
2
+
u′′ε (x)v(x)dx
gε (x)v(x)dx =
Z
−
Z
1
1
+ε
2
Z
u′ε (x)v ′ (x)dx =
1
1
+ε
2
u′′ε (x)v(x)dx =
1
gε (x)v(x)dx
0
Qualora si trovi una soluzione debole, ha per`o senso verificare se per caso
non sia anche forte. Infatti, se u ∈ V `e soluzione di (14.3) e u ∈ C 2 ([0, 1]) e
g `e continua allora 0 = (u′ , v ′ ) − (g, v) = (−u′′ , v) − (g, v) = −(u′′ + g, v) per
ogni v ∈ V . Poich´e u′′ +g `e continua, si deduce −u′′ (x) = g(x) per 0 < x < 1.
Per quanto visto, la formulazione variazionale (14.3) del problema (14.1)
`e in realt`a le pi`
u “fisica”: pensando al problema della trave, essa permette
di descrivere, per esempio, anche il caso in cui la densit`a di carico g(x)
non sia continuo. Basta infatti che sia possibile calcolare (g, v), v ∈ V e
dunque basta, per esempio, che g sia continua a tratti. Quindi, in generale,
`e possibile come modello per un fenomeno fisico la sola formulazione debole.
La soluzione debole, se esiste, `e unica: infatti, se u1 e u2 sono due soluzioni
di (14.3), allora
(u′1 − u′2 , v ′ ) = 0,
∀v ∈ V
e in particolare per v = u1 − u2 . Dunque
Z
1
0
(u′1 (x) − u′2 (x))2 dx = 0
e quindi u′1 (x) − u′2 (x) = (u1 (x) − u2 (x))′ = 0. Pertanto u1 − u2 `e costante e
siccome u1 (0) − u2 (0) = 0, allora u1 (x) − u2 (x) = 0.
14.1. UN PROBLEMA MODELLO
14.1.1
65
Metodo di approssimazione variazionale
Prendiamo un sottospazio Vm di V di dimensione finita. Si cerca allora
uˆ ∈ Vm tale che
(ˆ
u′ , v ′ ) = (g, v), ∀v ∈ Vm
(14.4)
(metodo di Galerkin).
Teorema 5. Il problema (14.4) ha un’unica soluzione.
Dimostrazione. Sia {φj }m
ˆ(x) ∈ Vm
j=1 una base di Vm . Allora, se esiste u
soluzione `e
m
X
uˆ(x) =
uˆj φj (x)
j=1
e il problema (14.4) si riscrive, per i = 1, 2, . . . , m,
!
!′
Z 1
m
m
X
X
uˆj φj , φ′i =
uˆ′ (x)φ′i (x)dx =
(φ′j , φ′i )ˆ
uj = Au = (g, φi )
0
j=1
j=1
ove A = (aij ) = (φ′j , φ′i ) e u = [ˆ
u1 , . . . , uˆm ]T . Quindi, l’esistenza ed unicit`a
di uˆ(x) equivale all’esistenza ed unicit`a della soluzione di un sistema lineare
di matrice A. Calcoliamo ora wT Aw per w = [w1 , . . . , wm ]T . Si ha
!
m
m
X
X
(φ′i , φ′j )wj
wT Aw =
wi
i=1
j=1
da cui, per la linearit`a del prodotto scalare,
!′
!′ ! Z
m
m
X
X
wT Aw =
wi φi (x) ,
wj φj (x)
=
i=1
j=1
1
0
m
X
wj φ′j (x)
j=1
!2
dx ≥ 0
P
e l’unica possibilit`a per avere 0 `e che
wj φj (x) sia costante e dunque nullo
(poich´e nullo ai bordi). Dunque, A `e definita positiva.
La matrice A, che risulta essere simmetrica e definita positiva, si chiama
matrice di rigidezza (stiffness matrix) e il vettore (g, φi ) vettore di carico
(load vector). Vale poi il seguente risultato:
Teorema 6. Se u `e soluzione di (14.3) e uˆ di (14.4), allora
ku − uˆk ≤ inf ku − vk
v∈Vm
ove kvk =
p
(v ′ , v ′ ).
(14.5)
66
CAPITOLO 14. METODI VARIAZIONALI
Dimostrazione. Dalle uguaglianze
(u′ , v ′ ) = (g, v) ∀v ∈ V e, dunque, ∀v ∈ Vm
(ˆ
u′ , v ′ ) = (g, v) ∀v ∈ Vm
si ricava ((u − uˆ)′ , v ′ ) = 0 per ogni v ∈ Vm . Dunque, se v ∈ Vm , allora
v − uˆ ∈ Vm e quindi
((u − uˆ)′ , (u − uˆ)′ ) = ((u − uˆ)′ , (u − v + v − uˆ)′ ) = ((u − uˆ), (u − v)′ ) ≤
≤ ku − uˆkku − vk
(per la disuguaglianza di Cauchy–Schwartz) da cui
ku − uˆk ≤ ku − vk,
∀v ∈ Vm
e quindi la tesi.
Per definizione, uˆ `e allora la proiezione ortogonale della soluzione esatta
u sul sottospazio Vm , tramite il prodotto scalare hu, vi = (u′ , v ′ ).
Stabilit`
a e consistenza
La consistenza del metodo di Galerkin discende dal fatto che se u ∈ V , allora
(u′ , v ′ ) = (g, v),
∀v ∈ Vm
(il metodo si dice fortemente consistente). Per quanto riguarda la stabilit`a,
cominciamo ad osservare che se uˆ soddisfa (14.4), allora
Z 1
Z 1
p
p
′
′
≤ 2
≤ 2 (ˆ
2xˆ
u
(x)ˆ
u
(x)dx
u
ˆ
(x)ˆ
u
(x)dx
u
,
u
ˆ
)
(ˆ
u′ , uˆ′ )
0
0
per la monotonia degli integrali (x ≤ 1 in [0, 1]) e la disuguaglianza di
Cauchy–Schwartz e
Z
1
′
2xˆ
u(x)ˆ
u (x)dx =
0
da cui
(ˆ
u, uˆ) ≤ 2
cio`e
p
Z
1
1 Z
xˆ
u (x) dx = uˆ (x)x −
2
0
(ˆ
u, uˆ)
′
1
uˆ2 (x)dx
2
0
0
p
p
p
(ˆ
u′ , uˆ′ ) = 2 (ˆ
u, uˆ) (ˆ
u′ , uˆ′ )
p
(ˆ
u, uˆ) ≤ 2kˆ
uk
14.1. UN PROBLEMA MODELLO
67
Poich´e uˆ soddisfa, in particolare,
(ˆ
u′ , uˆ′ ) = (g, uˆ)
si ricava, suppondendo g a quadrato sommabile,
p
p
p
u, uˆ) ≤ 2 (g, g)kˆ
uk
kˆ
uk2 ≤ (g, g) (ˆ
da cui
kˆ
uk ≤ 2
p
(g, g)
Si conclude osservando che date due perturbazioni della soluzione u˜ e u¯
corrispondenti rispettivamente a g˜ e g¯, allora
((˜
u − u¯)′ , v ′ ) = (˜
g − g¯, v),
e pertanto
k˜
u − u¯k ≤ 2
p
∀v ∈ Vm
(˜
g − g¯, g˜ − g¯)
e cio`e che piccole variazioni sui dati producono piccole variazioni sulle soluzioni.
Metodo degli elementi finiti (FEM)
La scelta di Vm caratterizza il metodo. Da un lato bisogna considerare la
regolarit`a della soluzione richiesta. Dall’altro la difficolt`a di assemblare la
matrice di rigidezza e di risolvere il sistema lineare. Vediamo un esempio.
Introduciamo una discretizzazione dell’intervallo [0, 1] a passo variabile, come
φ1
φj−1
h1
x1
φj
hj−1
x2
xj−2
xj−1
xj
φj+1
hj
hm−1
xj+1
xm
Figura 14.1: Hat functions
in Figura 14.1. Lo spazio Vm `e generato
quali sono definite da
x−x
j−1

,



 hj−1
φj (x) = xj+1 − x ,


hj



0,
m−1
dalle funzioni di base {φj }j=2
, le
xj−1 ≤ x ≤ xj
xj ≤ x ≤ xj+1
altrimenti
68
CAPITOLO 14. METODI VARIAZIONALI
e

1


, xj−1 < x < xj



 hj−1
1
φ′j (x) =
, xj < x < xj+1
−


h

j


 0,
altrimenti
Tuttavia, per permettere la trattazione di problemi con differenti condizioni
al bordo, consideriamo anche

 x2 − x , x1 ≤ x ≤ x2
h1
φ1 (x) =

0,
altrimenti
e

 − 1, x <x<x
1
2
′
h1
φ1 (x) =

0,
altrimenti
e

 x − xm−1 , xm−1 ≤ x ≤ xm
hm−1
φm (x) =

0,
altrimenti
e
φ′m (x) =


1
hm−1

0,
, xm−1 < x < xm
altrimenti
Dunque, nell’approssimazione
uˆ(x) =
m
X
uˆj φj (x)
j=1
i coefficienti uˆj sono i valori di uˆ nei nodi xj . Il problema (14.4) si riscrive
Z
1
uˆ
0
′
(x)φ′i (x)dx
=
=
m
X
j=1
m
X
j=1
uˆj
Z
1
0
φ′j (x)φ′i (x)dx
uˆj aij =
=
m
X
uˆj
j=1
Z
xi +hi
g(x)φi (x)dx
xi −hi−1
Z
xi +hi
xi −hi−1
φ′j (x)φ′i (x)dx =
14.1. UN PROBLEMA MODELLO
69
Siccome il supporto di φj (x) `e [xj−1 , xj+1 ], gli unici elementi non nulli aij
sono aii , ai i−1 e ai+1 i = ai i+1 . Per 1 < i < m,
2
2
Z xi
Z xi +hi 1
1
1
1
′
′
−
aii = (φi , φi ) =
dx +
dx =
+
hi−1
hi
hi−1 hi
xi −hi−1
xi
Z xi
1
1
1
−
ai i−1 = (φ′i−1 , φ′i ) =
·
dx = −
= ai−1 i
hi−1 hi−1
hi−1
xi −hi−1
Per i = 1 e i = m, si ha invece
2
Z x1 +h1 1
1
dx =
−
a11 =
h1
h1
Zx1x2
1 1
1
− · dx = − = a12
a21 =
h1 h1
h1
x2 −h1
Z xm
1
1
1
am m−1 =
−
·
dx = −
= am−1 m
hm−1 hm−1
hm−1
xm −hm−1
2
Z xm
1
1
−
amm =
dx =
hm−1
hm−1
xm −hm−1
Per quanto riguarda il calcolo di (g, φi ) si pu`o ricorrere alla formula del punto
medio: per 1 < i < m `e
Z xi+1
Z xi
xi+1 − x
x − xi−1
g(x)
dx +
dx ≈
g(x)
gi = (g, φi ) =
hi−1
hi
xi
xi−1
xi−1 + xi hi−1
xi + xi+1 hi
≈g
+g
2
2
2
2
Per i = 1 e i = m si ha invece
Z x2
x2 − x
x1 + x2 h 1
g1 = (g, φ1 ) =
g(x)
dx ≈ g
h1
2
2
x1
Z xm
xm−1 + xm hm−1
x − xm−1
dx ≈ g
gm = (g, φm ) =
g(x)
hm−1
2
2
xm−1
L’approssimazione di
Z xi
xi−1
g(x)φi (x)dx =
Z
xi
g(x)
xi−1
x − xi−1
dx
hi−1
mediante la formula del punto medio produce un errore
3 ′
hi−1
2g
(ξ
)
ξ
−
x
i−1
i−1
i−1
′′
= O(h2i−1 ), ξi−1 ∈ (xi−1 , xi )
+
24 g (ξi−1 )
hi−1
hi−1
70
CAPITOLO 14. METODI VARIAZIONALI
(occorre infatti valutare la derivata seconda di g(x)φi (x) in un opportuno
punto ξi−1 ). Siccome
g(xi−1 ) + g(xi )
xi−1 + xi
g
=
+ O(h2i−1 ) = g¯i−1 + O(h2i−1 )
2
2
e, essendo la formula del punto medio esatta sulle funzioni lineari,
Z xi
xi−1 + xi
hi−1
φi (x)dx = φi
hi−1 =
2
2
xi−1
la formula del punto medio viene di solito sostituita dalla formula equivalente
(nel senso dell’ordine di approssimazione)
Z xi +hi
Z xi
hi−1
hi
φi (x)dx = g¯i−1
φi (x)dx + g¯i
gi = (g, φi ) ≈ g¯i−1
+ g¯i
2
2
xi
xi −hi−1
per 1 < i < m e da
g1 = (g, φ1 ) = g¯1
Z
x1 +h1
φ1 (x)dx = g¯1
x1
gm = (g, φm ) = g¯m−1
Z
h1
2
xm
φm (x)dx = g¯m−1
xm −hm−1
hm−1
2
La riga i-esima del sistema lineare risulta dunque essere
 . 
..


..


.
h
i uˆi−1 

 
+¯
g i hi 
1
1
0 . . . 0 − hi−1
+ h1i
− h1i 0 . . . 0  uˆi  =  g¯i−1 hi−1

hi−1
2


.
u
ˆ
 i+1 
..
..
.
e dunque molto simile (il termine noto `e diverso, anche se dello stesso ordine)
`
a quella della discretizzazione con differenze finite del secondo ordine. E
importante sottolineare che la similitudine con le differenze finite si ha solo
per questo semplice problema modello, per la scelta delle funzioni di base e
per la scelta della formula di quadratura. Pertanto, `e naturale aspettarsi,
sotto opportune ipotesi di regolarit`a, che l’errore, nella norma indotta dal
prodotto scalare, rispetto alla soluzione analitica tenda a zero come h2 , h =
maxj hj (e ci`o giustifica, a posteriori, la scelta della formula di quadratura).
Si ha infatti, nell’intervallo [xj , xj+1 ]
Z
Z
x
x
|u′ (x)−(pc1 )u)′ (x)| = (u′′ (s) − (pc1 u)′′ (s))ds = u′′ (s)ds ≤ hj ku′′ k[xj ,xj+1 ]
zj
zj
14.1. UN PROBLEMA MODELLO
71
(per il teorema di Rolle) e quindi
ku −
pc1 uk2
=
≤
Z
1
′
0
|u (x) −
m−1
X
j=1
2
(pc1 u)′ (x)|2 dx
=
m−1
X Z xj+1
j=1
′′
2
hj (hj ku k[xj ,xj+1 ] ) ≤
= h maxku′′ k2[xk ,xk+1 ]
m−1
X
j=1
xj
|u′ (x) − (pc1 u)′ (x)|2 dx ≤
hj (h2 maxku′′ k2[xk ,xk+1 ] ) =
k
k
Dunque, usando (14.5), si ha
ku − uˆk ≤ h maxku′′ kxj ,xj+1
j
Questa `e una stima che coinvolge la derivata prima della funzione.
consideriamo ancora l’intervallo [xj , xj+1 ], possiamo scrivere
Z
x
|u(x) − pc1 u(x)| = (u′ (s) − (pc1 u)′ (s))ds ≤ hj · hj ku′′ k[xj ,xj+1 ]
xj
Se
e quindi
ku −
pc1 uk2L2
=
≤
Z
1
0
|u(x) −
m−1
X
j=1
pc1 u(x)|2 dx
=
m−1
X Z xj+1
xj
j=1
|u(x) − pc1 u(x)|2 dx ≤
hj (h4 ku′′ k2[xj ,xj+1 ] ) = h4 maxku′′ k2[xk ,xk+1 ]
k
da cui
ku − uˆkL2 ≤ h2 maxku′′ k2[xk ,xk+1 ]
j
Si noti come nelle stime sopra sia sufficiente che la derivata seconda della
soluzione esista in ogni intervallo, ma non sia necessario che esista dappertutto.
A questo punto si risolve il sistema lineare, dopo aver opportunamente
modificato la matrice e il termine noto per imporre le condizioni al bordo di
Dirichlet.
Nel caso di condizioni di Neumann (per esempio in u′ (0) = u′0 ), la forma
debole del problema `e
Z 1
1 Z 1
′
′
′
−ˆ
u (x)φi (x) +
g(x)φi (x)dx, 1 ≤ i ≤ m
uˆ (x)φi (x)dx =
0
0
0
72
CAPITOLO 14. METODI VARIAZIONALI
Per i = 1, che `e il caso di interesse, si ha
Z 1
Z
′
′
′
uˆ (0) +
uˆ (x)φ1 (x)dx =
0
1
g(x)φ1 (x)dx
0
Dunque, la prima riga del sistema lineare da risolvere `e
Z 1
Z 1
′
′
′
uˆ (x)φ1 (x)dx = −u0 +
g(x)φ1 (x)dx
0
0
Da notare che il problema con due condizioni di Neumann non `e ben definito,
in quanto se u(x) `e soluzione, allora lo `e anche u(x) + k.
Ovviamente, lo spazio Vm pu`o essere costituito da funzioni molto pi`
u
regolari (per esempio polinomi di grado superiore).
Vediamo un approccio pi`
u generale all’implementazione del metodo degli
elementi finiti. Supponiamo di avere l elementi {ℓj }lj=1 (nel caso unidimensionale, sono gli intervalli) ad ognuno dei quali sono associati due nodi. Con
ℓ1
ℓ2
x1 x2
ℓj−1
xj−1
ℓj
xj
ℓl
xj+1
xm
Figura 14.2: Nodi (numerati in basso) ed elementi (numerati in alto).
riferimento alla Figura 14.2, ove m = l + 1, si ha
ℓj,1 = j, ℓj,2 = j + 1,
1≤j≤l
che significa che l’elemento ℓj ha associati i nodi xj e xj+1 . Ogni elemento
contribuisce all’assemblaggio della matrice di stiffness e del termine noto. Per
quanto riguarda la matrice di stiffness, ad ogni elemento ℓj si associa
Z
1
φℓj,k ℓj,k =
φ′ℓj,k (x)φ′ℓj,k (x)dx = , k = 1, 2
hj
ℓ
Zj
1
φ′ℓj,k (x)φ′ℓj,3−k (x)dx = − , k = 1, 2
φℓj,k ℓj,3−k =
hj
ℓj
Per quanto riguarda il termine noto, ad ogni elemento ℓj si associa
gℓj = g¯j =
g(xℓj,1 ) + g(xℓj,2 )
2
Pertanto si ha
• aij = 0, 1 ≤ i, j ≤ m, gi = 0, 1 ≤ i ≤ m
14.2. METODI SPETTRALI
73
• for j = 1, . . . , l
for k = 1, 2
aℓj,k ℓj,k = aℓj,k ℓj,k + φℓj,k ℓj,k , gℓj,k = gℓj,k + gℓj
aℓj,k ℓj,3−k = aℓj,k ℓj,3−k + φℓj,k ℓj,3−k
hj
2
end
end
14.1.2
Estensione al caso bidimensionale
Tutto quanto detto si estende, in particolare, al caso bidimensionale. Si deve
usare la formula di Green
Z
Z
Z
2
∇ u(x)v(x)dx = − ∇u(x) · ∇v(x)dx +
v(s)∇u(s) · ν(s)ds
Ω
Ω
∂Ω
ove ν(s) `e il versore esterno normale a ∂Ω.
14.2
Metodi spettrali
Sia
u(x) =
X
uj φj (x)
j
L’indice algebrico di convergenza `e il pi`
u grande k tale che
lim |uj |j k < +∞
j→∞
Se tale limite `e finito per ogni k, allora la serie si dice convergere esponenzialmente oppure spettralmente. Significa che |uj | decade pi`
u velocemente di
ogni potenza negativa di j. Parleremo di metodi spettrali quando useremo
un’approssimazione di una serie convergente spettralmente
uˆ(x) =
m
X
uˆj φj (x)
j=1
al posto di u(x). Quindi, useremo i metodi spettrali quando ci aspettiamo
soluzioni molto regolari.
Consideriamo una famiglia di funzioni {φj }j ortonormali rispetto al prodotto scalare
Z b
φj (x)φi (x)w(x)dx = δji
a
74
CAPITOLO 14. METODI VARIAZIONALI
La formulazione di Galerkin di un problema ai limiti Lu = g, L operatore
differenziale lineare, diventa
m
X
j=1
uˆj
Z
b
Lφj (x)φi (x)w(x)dx =
a
Z
b
g(x)φi (x)w(x)dx,
a
1≤i≤m
Nel caso non si possano calcolare analiticamente o con formule di quadratura
esatte gli integrali, si ricorre alle formule di quadratura gaussiana (relative
alle funzioni φj (x)) a m punti, dando origine al sistema lineare
!
m
m
m
X
X
X
Lφj (xn )φi (xn )wn =
uˆj
g(xn )φi (xn )wn = gˆi , 1 ≤ i ≤ m
j=1
n=1
n=1
(14.6)
In tal caso si parla di metodi pseudospettrali. I coefficienti uˆj che si trovano
risolvendo il sistema lineare si chiamano solitamente soluzione nello spazio
spettrale.
Dati i coefficienti, si ricostruisce la soluzione nello spazio fisico
P
u
ˆ
φ
(x).
Detta F la matrice
j j j
√
F = (fij ) = φi (xj ) wj
e dati i coefficienti uˆj , si calcola la soluzione fisica
quadratura mediante

 
√
uˆ1
w1 uˆ(x1 )
 uˆ2 
 √w2 uˆ(x2 ) 

 

 = F T  .. 

..

 . 

.
√
uˆm
wn uˆ(xn )
P
j
uˆj φj (x) sui nodi di
Per quanto riguarda invece i coefficienti gi , essi sono dati da
 

√ 
gˆ1
g(x1 ) w1
 gˆ2 
 g(x2 )√w2 
 


 ..  = F 

..
.


.
√
g(xn ) wn
gˆn
Solitamente le funzioni {φj (x)}j sono polinomi ortonormali rispetto alla funzione peso w(x) e in tal caso, ma non solo in questo, F T = F −1 (lo si dimostra
calcolando F F T e usando l’equazione (3.1) con pj (x) = φj+1 (x)). La soluzione u(x), per`o, potrebbe non essere efficacemente approssimata da polinomi,
per esempio se deve soddisfare particolari condizioni al contorno (tipo vanishing boundary conditions, condizioni al bordo periodiche o altro). Pu`o essere
14.2. METODI SPETTRALI
75
utile allora la decomposizione
u(x) ≈
m
X
j=1
m
X
p
uˆj ϕj (x)
uˆj φj (x) w(x) =
j=1
La formulazione di Galerkin di Lu = g diventa allora
Z b
Z b
m
X
p
p
p
uˆj L(φj (x) w(x))φi (x) w(x)dx = g(x)φi (x) w(x)dx, 1 ≤ i ≤ m
j=1
a
a
Ad ogni modo, la differenza sostanzionale con il metodo degli elementi finiti
`e che le funzioni di base sono regolari e a supporto globale.
Consideriamo ora un caso particolare di fondamentale importanza (per
l’analisi numerica in generale). Molte propriet`a risultano comuni anche agli
altri metodi pseudospettrali.
14.2.1
Trasformata di Fourier
Sia [a, b] un intervallo di R, m > 0 pari e fissato. Consideriamo, per ogni
j ∈ Z,
ei(j−1−m/2)2π(x−a)/(b−a)
√
φj (x) =
b−a
Allora,
Z
b
φj (x)φk (x)dx = δjk
(14.7)
a
Infatti, se j = k allora φj (x)φk (x) = 1/(b − a), altrimenti
ei2π(j−k)(x−a)/(b−a)
b−a
φj (x)φk (x) =
e quindi
Z
b
φj (x)φk (x)dx =
a
Z
1
0
ei2π(j−k)y
(b − a)dy = 0 ,
b−a
poich´e l’integrale delle funzioni sin e cos in un intervallo multiplo del loro periodo `e nullo. La famiglia di funzioni {φj }j si dice ortonormale nell’intervallo
[a, b] rispetto al prodotto scalare
(φj , φk ) =
Z
b
φj (x)φk (x)dx
a
76
CAPITOLO 14. METODI VARIAZIONALI
Un risultato utile `e il seguente
m
X
ei(n−1)2π(j−k)/m = mδjk ,
n=1
1 ≤ j, k ≤ m
(14.8)
` ovvio per j = k; altrimenti
E
m
X
e
i(n−1)2π(j−k)/m
=
n=1
m−1
X
ei2π(j−k)/m
n=0
=
n
=
1 − ei2π(j−k)
1 − cos(2π(j − k))
=
=0
i2π(j−k)/m
1−e
1 − ei2π(j−k)/m
poich´e −m + 1 ≤ j − k ≤ m − 1.
14.2.2
Trasformata di Fourier discreta
Sia u una funzione da [a, b] a C tale che u(a) = u(b). Supponiamo che u si
possa scrivere (ci`o `e vero, per esempio, per funzioni di classe C 1 ) come
+∞
X
u(x) =
uj φj (x),
j=−∞
uj ∈ C
(14.9)
Fissato k ∈ Z, moltiplicando entrambi i membri per φk (x) e integrando
nell’intervallo [a, b], usando (14.7) si ottiene
Z
b
u(x)φk (x)dx =
a
Z
=
+∞
X
b
a
∞
X
uj φj (x)φk (x) dx =
j=−∞
uj
Z
!
b
(14.10)
φj (x)φk (x)dx = uk
a
j=−∞
Dunque, abbiamo un’espressione esplicita per uj . Analogamente si vede che
Z
b
2
a
|u(x)| dx =
+∞
X
|uj |2
j=−∞
(identit`a di Parseval)
14.2. METODI SPETTRALI
77
La prima approssimazione da fare consiste nel troncare la serie infinita.
Osserviamo che, definito J = Z \ {1, 2, . . . , m},
2
2
Z b Z b X
m
X
uj φj (x) dx =
uj φj (x) dx =
u(x) −
a
a
j=1
j∈J
!
!
Z b X
X
uk φk (x) dx =
uj φj (x)
=
a
=
X
j∈J
j∈J
k∈J
|uj |2
Stimiamo adesso uj : posto λj = i(j − 1 − m/2)2π/(b − a) si ha, per funzioni
di √
classe u ∈ C 2 , integrando per parti e tenendo conto che φj (a) = φj (b) =
1/ b − a e che φ′j (x) = λj φ(x)
Z
Z
1 b ′
1
uj =
u(x)φj (x)dx = − √
(u(b) − u(a)) +
u (x)φj (x)dx =
λj a
λj b − a
a
Z b
1
1
1
′
′
(u(b) − u(a)) − 2 √
(u (b) − u (a)) + 2
u′′ (x)φj (x)dx
=− √
λ
λj b − a
λj b − a
j a
−2
= O (j − 1 − m/2)
b
Se anche u′ (a) = u′ (b) e u ∈ C 3 , allora, integrando ancora per parti, si ottiene
|uj | = O (|j − 1 − m/2|−3 ) e cos`ı via: in generale, se u ∈ C k e u(l) periodica
per l = 1, 2, . . . , k − 2, allora
|uj | = O |j − 1 − m/2|−k , j → ∞
Si ha dunque
X
|uj |2 = |um+1 |2 + |u0 |2 + |um+2 |2 + |u−1 |2 + |um+3 |2 + . . . =
j∈J
= O (m/2)−2k + O (1 + m/2)−2k + O (2 + m/2)−2k + . . .
con |um+1 | termine dominante.
Se poi u `e infinitamente derivabile e periodica (cio`e tutte le derivate sono
periodiche), allora, fissato k,
0 ≤ lim |uj |j k ≤ lim M |j − 1 − m/2|−(k+1) j k = 0
j→∞
j→∞
La seconda approssimazione da fare `e utilizzare una formula di quadratura per il calcolo di uj . Riportiamo per comodit`a la formula di quadratura
78
CAPITOLO 14. METODI VARIAZIONALI
trapezoidale a m+1 nodi equispaziati xn = (b−a)yn +a, ove yn = (n−1)/m,
n = 1, . . . , m + 1 per funzioni periodiche:
!
Z b
m
m
X
X
b−a
g(x)dx ≈
g(x1 ) + 2
g(xn ) + g(xm+1 ) = h
g(xn )
2m
a
n=2
n=1
ove h = (b − a)/m. Usando la (14.8), abbiamo
mδjk =
m
X
ei(n−1)2π(j−k)/m =
n=1
m
X
ei(j−k)2πyn =
n=1
m
X
ei(j−k)2π(xn −a)/(b−a) =
n=1
m
X
ei(j−1−m/2)2π(xn −a)/(b−a) e−i(k−1−m/2)2π(xn −a)/(b−a)
√
√
=
= (b − a)
b−a
b−a
n=1
Z b
m
X
φj (x)φk (x)dx
= (b − a)
φj (xn )φk (xn ) = m
a
n=1
cio`e la famiglia {φj }m
e ortonormale anche rispetto al prodotto scalare
j=1 `
discreto
m
b−aX
φj (xn )φk (xn )
(φj , φk )d =
m n=1
Applicando la formula di quadratura ai coefficienti (14.10) si ottiene
Z
b
e−i(j−1−m/2)2π(x−a)/(b−a)
√
dx =
u(x)
b−a
a
Z 1
√
u((b − a)y + a)e−i(j−1)2πy eimπy dy ≈
= b−a
uj =
≈
√
0
m
b−a X
u(xn )eimπyn e−i(j−1)2πyn = uˆj
m
n=1
ove x = (b − a)y + a.
La funzione (serie troncata di Fourier)
uˆ(x) =
m
X
m/2−1
uˆj φj (x) =
j=1
X
k=−m/2
uˆk+1+m/2 φk+1+m/2 (x) =
k=−m/2
m/2−1
=
X
uˆk+1+m/2
eik2π(x−a)/(b−a)
√
b−a
14.2. METODI SPETTRALI
79
`e un polinomio trigonometrico che approssima u(x) ed `e interpolante nei nodi
xn . Infatti, usando (14.8),
u
ˆ(xn ) =
m
X
j=1
=
m
X
j=1
=
=
1
m
1
m
u
ˆj φj (xn ) =
!
√
m
−i(j−1)2πy
b−a X
ei(j−1−m/2)2π(xn −a)/(b−a)
imπyk
k
√
u(xk )e
e
=
m
b−a
m
X
k=1
m
X
k=1
u(xk )eimπ(k−1)/m e−imπ(n−1)/m
m
X
e−i(j−1)2π(k−1)/m ei(j−1)2π(n−1)/m =
j=1
u(xk )ei(k−n)π
m
X
ei(j−1)2π(n−k)/m =
j=1
k=1
1
u(xn )m = u(xn ) .
m
Si pu`o far vedere poi che
2
Z b m
X
X
uˆj φj (x) dx ≤ 2
|uj |2
u(x) −
a
j=1
j∈J
Si usa spesso considerare allora il doppio del primo termine trascurato (cio`e
um+1 ), oppure della somma dei primi termini trascurati come stima di errore.
La trasformazione
[u(x1 ), u(x2 ), . . . , u(xm )]T → [ˆ
u1 , uˆ2 , . . . , uˆm ]T
si chiama trasformata di Fourier discreta √
di u e uˆ1 , . . . , uˆm coefficienti di FouT
rier di u. Il vettore m · [ˆ
u1 , uˆ2 , . . . , uˆm ] / b − a pu`o essere scritto come pro√
dotto matrice-vettore F m[u(x1 )eimπy1 , u(x2 )eimπy2 , . . . , u(xm )eimπym ]T , ove
F = (fjn ),
fjn
e−i(j−1)2πyn
√
= φj+m/2
=
m
xn − a √
h.
b−a
Alternativamente, si pu`o usare la Fast Fourier Transform (FFT). Il comando
1
fft applicato al vettore [u(x1 )eimπy
, u(x2 )eimπy2 , . . . , u(xm )eimπym ]T produ√
ce il vettore m · [ˆ
u1 , uˆ2 , . . . , uˆm ]T / b − a, cos`ı come il comando fftshift
applicato al risultato del comando fft applicato a [u(x1 ), u(x2 ), . . . , u(xm )].
Dati dei coefficienti vˆj , j = 1, . . . , m, si pu`o considerare la funzione
(periodica)
m
X
vˆj φj (x)
j=1
80
CAPITOLO 14. METODI VARIAZIONALI
La valutazione nei nodi xn , 1 ≤ n ≤ m, porge
m
X
m
X
ei(j−1−m/2)2π(xn −a)/(b−a)
√
=
vˆj φj (xn ) =
vˆj
b−a
j=1
j=1
!
m
m
1 X i(j−1)2πyn
=√
e−imπyn .
vˆj e
b − a m j=1
vˆˆn =
La trasformazione
[ˆ
v1 , vˆ2 , . . . , vˆm ]T → [vˆˆ1 , vˆˆ2 , . . . , vˆˆm ]T
si chiama anti-trasformata di Fourier discreta. Se i vˆj sono i coefficienti di
Fourier di una funzione v(x), la propriet`a di interpolazione comporta vˆˆn =
v(xn ). Ma, in generale, non `e vero che
v(x) =
m
X
vˆj φj (x)
j=1
√
m T
Il vettore b − a · [vˆˆ1 eimπy1 , vˆˆ2 eimπy2 , . . . , vˆˆm eimπy√
] /m pu`o essere scritto
′
T
come prodotto matrice-vettore F [ˆ
v1 , vˆ2 , . . . , vˆm ] / m, ove F ′ denota, come in GNU Octave, la trasposta coniugata di F . Alternativamente,
√ il comando ifft applicato al vettore [ˆ
v1 , vˆ2 , . . . , vˆm ] produce il vettore b − a ·
[vˆˆ1 eimπy1 , vˆˆ2 eimπy2 , . . . , vˆˆm eimπym ]/m, mentre, se applicato al risultato del comando ifftshift applicato al vettore [ˆ
v1 , vˆ2 , . . . , vˆm ], produce il vettore
√
ˆ
ˆ
ˆ
b − a · [vˆ1 , vˆ2 , . . . , vˆm ]/m.
√
Da notare che F ′ = F −1 e che, detta D = h·diag(eimπy1 , eimπy2 , . . . , eimπym ),
si ha [ˆ
u1 , uˆ2 , . . . , uˆm ]T = F D[u(x1 ), u(x2 ), . . . , u(xm )]T e (F D)−1 = D−1 F −1 =
(1/h)D′ F ′ = (1/h)(F D)′ .
Sul range delle frequenze
Con le notazioni attuali la serie troncata di Fourier `e definita come
m/2−1
uˆ(x) =
X
...
k=−m/2
mentre molte volte si vuole calcolare
m/2
X
...
k=−m/2
` sufficiente considerare allora la famiglia di funzioni {φj }m+1 con nodi xn =
E
j=1
(b − a)yn + a, yn = (n − 1)/(m + 1), n = 1, . . . , m + 2.
14.2. METODI SPETTRALI
81
Applicazione ad un problema modello
10−2
ordine 1
ordine 2
ordine 4
ordine 8
errore
10−4
fourier.m
10−6
errore in norma-2
10−8
10−10
10−12
10−14
10−16
10−18
1
10
100
m
Figura 14.3: Convergenza spettrale di Fourier per il problema (14.11) rispetto
ad una soluzione di riferimento ottenuta con m = 64.
Consideriamo la soluzione del problema

1
 − u′′ (x) + u(x) =
, x ∈ (−π, π)
sin x + 2

u(−π) = u(π)
(14.11)
mediante decomposizione in funzioni di Fourier. Posto a = −π, b = π,
g(x) = 1/(sin x + 2), si ha
φj (x) =
ei(j−1−m/2)2π(x−a)/(b−a)
√
b−a
ove m `e pari e fissato e, per 1 ≤ k ≤ m,
!′′
Z π
Z
m
X
−
uj φj (x) φk (x)dx +
−π
j=1
=
da cui
Z
m
X
−
uj
j=1
π
−π
φ′′j (x)φk (x)dx
+
m
X
j=1
uj
Z
π
−π
Z
π
m
X
!
uj φj (x) φk (x)dx =
j=1
g(x)φk (x)dx
−π
π
φj (x)φk (x)dx =
−π
Z
π
g(x)φk (x)dx
−π
82
CAPITOLO 14. METODI VARIAZIONALI
Poich´e
φ′′j (x)
=
i(j − 1 − m/2)2π
b−a
2
φj (x) = λ2j φj (x)
usando l’ortonormalit`a delle funzioni di Fourier e calcolando i coefficienti di
Fourier di g(x), si ha
−λ2k uˆk + uˆk = gˆk ,
da cui
uˆk =
e quindi
gˆk
,
1 − λ2k
u(x) ≈
m
X
1≤k≤m
1≤k≤m
uˆj φj (x)
j=1
In Figura 14.3 si vede la convergenza spettrale del metodo.
Da notare che le condizioni al bordo devono essere di tipo periodico:
condizioni come
 ′′
′

 u (x) = f (x, u(x), u (x)), x ∈ (a, b)
u(a) = 0

 u(b) = 0
sono invece di Dirichlet omogenee. Inoltre, la soluzione del problema deve
poter essere periodica (o, almeno, avere pi`
u derivate possibili periodiche):
per esempio, non possono esserci termini non omogenei non periodici.
Costi computazionali e stabilit`
a
La Fast Fourier Transform di un vettore di lunghezza m ha costo O(m log m),
mentre il prodotto matrice-vettore O(m2 ). Tali costi sono per`o asintotici e
nascondono i fattori costanti. Inoltre, GNU Octave pu`o far uso di implementazioni ottimizzate di algebra lineare (come, ad esempio, le librerie ATLAS1
o OpenBLAS2 ). In pratica, dunque, esiste un m0 sotto il quale conviene, dal
punto di vista del costo computazionale, usare il prodotto matrice-vettore e
sopra il quale la FFT.
Per quanto riguarda l’accuratezza, in generale la FFT `e pi`
u precisa del
prodotto matrice vettore. Poich´e la trasformata di Fourier discreta comporta
l’uso di aritmetica complessa (anche se la funzione da trasformare `e reale),
1
2
http://math-atlas.sourceforge.net/
http://xianyi.github.com/OpenBLAS/
14.2. METODI SPETTRALI
83
la sequenza trasformata/anti-trasformata potrebbe introdurre una quantit`a
immaginaria spuria che pu`o essere eliminata con il comando real.
Anche per la trasformata di Fourier vi possono essere problemi di stabilit`a
simili al fenomeno di Runge (qui chiamato fenomeno di Gibbs). Una tecnica
per “smussare” (in inglese “to smooth”) eventuali oscillazioni, consiste nel
moltiplicare opportunamente i coefficienti di Fourier uˆj per opportuni termini
σj che decadono in j, per esempio
σj =
m
2
+ 1 − | m2 + 1 − j|
,
m
+1
2
1≤j≤m
Il risultato `e che il coefficiente uˆm/2+1 `e pesato da σm/2+1 = 1, i coefficienti
uˆm/2 e um/2+2 sono pesati da m/(m + 2) e cos`ı via fino al coefficiente uˆ1
pesato da 2/(m + 2). Questa scelta corrisponde alle medie di Ces´
aro. Infatti,
si sostituisce la serie troncata di Fourier
m
X
uˆj φj (x)
j=1
con la media delle troncate
m
m
max{ 2 +1+k,m}
2
X
X
k=0
uˆj φj (x)
+1−k
j= m
2
m
2
+1
Si ricorda che se una serie `e convergente, allora il limite delle medie delle sue
troncate `e la somma della serie.
Valutazione di un polinomio trigonometrico
Supponiamo di conoscere i coefficienti uˆj , j = 1, . . . , m e di voler valutare la
funzione
m
X
uˆ(x) =
uˆj φj (x)
j=1
su un insieme di nodi target xk equispaziati, xk = (k − 1)/n, 1 ≤ k ≤ n,
n > m, n pari. Si possono introdurre dei coefficienti fittizi Uˆk
Uˆk = 0
1≤k≤
Uˆk = uˆk− n−m
2
Uˆk = 0
n−m
2
n−m
n−m
+1≤k ≤m−
2
2
n−m
m−
+1≤k ≤n
2
84
CAPITOLO 14. METODI VARIAZIONALI
Si avr`a
uˆ(xk ) =
m
X
uˆj φj (xk ) =
j=1
n
X
e
Uˆj
i(j−1−n/2)2π(xk −a)/(b−a)
√
j=1
1
n
=√
b−a n
n
X
Uˆj ei(j−1)2πyk
j=1
!
b−a
=
e−inπyk
Oppure si pu`o costruire la matrice F relativa ai nodi (ci`o funziona anche per
nodi non equispaziati). Infine, si pu`o usare la trasformata di Fourier non
equispaziata NFFT.
14.3
Metodi di collocazione
Si assume comunque
uˆ(x) =
m
X
uˆj φj (x)
j=1
ove {φj } `e un sistema ortonormale rispetto ad un prodotto scalare, ma si
impone poi che l’equazione differenziale Lu = g sia soddisfatta in certi nodi
xn . Si ha il seguente risultato interessante:
Teorema 7. La soluzione del sistema lineare
m
X
uˆj Lφj (xn ) = g(xn ),
1≤n≤m
j=1
(14.12)
ove gli {xn } sono i nodi della quadratura gaussiana relativa alla famiglia {φj }
`e la stessa del problema di Galerkin
m
X
j=1
uˆj
Z
b
Lφj (x)φi (x)w(x)dx =
a
Z
b
g(x)φi (x)w(x)dx
a
quando si approssimino gli integrali con le formule gaussiane.
Dimostrazione. Per ogni i, 1 ≤ i ≤ m, da (14.12), si ha
m
X
j=1
uˆj Lφj (xn )φi (xn )wn = g(xn )φi (xn )wn ,
1≤n≤m
14.3. METODI DI COLLOCAZIONE
85
ove i {wn }n sono i pesi di quadratura gaussiana, da cui, sommando su n,
!
!
m
m
m
m
X
X
X
X
Lφj (xn )φi (xn )wn =
uˆj
uˆj Lφj (xn )φi (xn )wn =
n=1
j=1
=
j=1
m
X
n=1
g(xn )φi (xn )wn ,
n=1
1≤i≤m
che `e precisamente la formulazione di Galerkin pseudospettrale (14.6).
14.3.1
Condizioni al bordo
Consideriamo il problema


 Lu(x) = g(x)
u(a) = ua

 ′
u (b) = u′b
Con il metodo di collocazione, si ha
 m
X



uˆj Lφj (xn ) = g(xn ),




j=1



m
X
uˆj φj (a) = ua


 j=1


m

X



uˆj φ′j (b) = u′b


1≤n≤m−2
j=1
Anche in questo caso il metodo di collocazione pu`o essere visto come un metodo di Galerkin pseudospettrale: basta prendere come nodi di collocazione
gli m − 2 nodi di quadratura gaussiana. Si ha poi
! m−2
 m
m−2
X
X
X



Lφ
(x
)φ
(x
)w
u
ˆ
=
g(xn )φi (xn )wn , 1 ≤ i ≤ m − 2
j
n
i
n
n
j




n=1
n=1
j=1



m
X
uˆj φj (a) = ua


j=1



m

X



uˆj φ′j (b) = u′b


j=1
Alternativamente, si possono usare, come nodi di collocazione, quelli delle
formule di quadratura di Gauss–Lobatto (che contengono i nodi al bordo).
86
CAPITOLO 14. METODI VARIAZIONALI
Collocazione Gauss–Lobatto–Chebyshev
I polinomi di Chebyshev sono definiti da
Tj (x) = cos(j arccos(x)),
−1 ≤ x ≤ 1
e soddisfano
Z
1
−1



ππ
Tj (x)Ti (x)
√
dx =
2

1 − x2

0
i=j=0
i = j 6= 0
i 6= j
(lo si vede con il cambio di variabile x = cos θ e applicando le formule di Werner, oppure integrando per parti due volte). I nodi di (Gauss–)Chebyshev–
Lobatto sono xn = cos((n − 1)π/(m − 1)), 1 ≤ n ≤ m. Possiamo allora
definire la seguente famiglia di funzioni ortonormali
φ1 (x) =
r
1
T0 (x),
π
φj (x) =
r
2
Tj−1 (x),
π
2≤j≤m
Ricordando la formula di ricorrenza tra polinomi di Chebyshev, possiamo
scrivere
r
√
1
2
, φ2 (x) =
x, φ3 (x) = 2xφ2 (x) − 2φ1 (x),
φ1 (x) =
π
π
φj+1 (x) = 2xφj (x) − φj−1 (x), 3 ≤ j ≤ m − 1
r
Da qui, possiamo calcolare anche la derivata prima e seconda delle funzioni:
r
2
, φ′3 (x) = 2φ2 (x) + 2xφ′2 (x),
π
φ′j+1 (x) = 2φj (x) + 2xφ′j (x) − φ′j−1 (x), 3 ≤ j ≤ m − 1
φ′1 (x) = 0,
φ′2 (x) =
φ′′1 (x) = 0, φ′′2 (x) = 0, φ′′3 (x) = 4φ′2 (x),
φ′′j+1 (x) = 4φ′j (x) + 2xφ′′j (x) − φ′′j−1 (x), 3 ≤ j ≤ m − 1
14.3. METODI DI COLLOCAZIONE
Conviene calcolare le matrici

φ1 (x1 )
 φ2 (x1 )

T0 =  ..
 .
φm (x1 )

φ′1 (x1 )
 φ′ (x1 )
 2
T1 =  ..
 .
φ′m (x1 )

φ′′1 (x1 )
 φ′′ (x1 )
 2
T2 =  ..
 .
φ′′m (x1 )
87

φ1 (x2 ) . . . φ1 (xm )
φ2 (x2 ) . . . φ2 (xm ) 

..
.. 
.
...
. 
φm (x2 ) . . . φm (xm )

φ′1 (x2 ) . . . φ′1 (xm )
φ′2 (x2 ) . . . φ′2 (xm ) 

..
.. 
.
...
. 
′
′
φm (x2 ) . . . φm (xm )

φ′′1 (x2 ) . . . φ′′1 (xm )
φ′′2 (x2 ) . . . φ′′2 (xm ) 

..
.. 
.
...
. 
′′
′′
φm (x2 ) . . . φm (xm )
Consideriamo, a titolo di esempio, il seguente problema modello

′′

 −u (x) + q(x)u(x) = g(x)
u(−1) = ua

 u′ (1) = u′
b
Il sistema lineare risultante da risolvere per il metodo di collocazione Gauss–
Chebyshev–Lobatto (per il momento senza tener conto delle condizioni al
bordo) `e
   



u1
q(x1 )
g(x1 )
   u2   g(x2 ) 


q(x2 )
 T   
 T 

 T0   ..  =  .. 
−T2 + 
.
.
  .   . 


.
q(xm )
um
g(xm )
Per imporre le condizioni al bordo, si sostituisce la prima riga della matrice
con la prima riga di TT
0 e il primo elemento del termine noto con ua . Poi,
l’ultima riga della matrice con l’ultima riga di TT
1 e l’ultimo elemento del
termine noto con u′b . Una volta noti i coefficienti uj , si ricostruisce la soluzione
nello spazio fisico tramite


 
u(x1 )
u1
 u(x2 ) 
 u2 


 
 ..  = TT
0  .. 
 . 
 . 
u(xm )
um
Capitolo 15
Esercizi
1. Si risolva il problema ai limiti
 ′′

 u (x) = u(x) + x,
u(0) = 0

 u(1) = 0
x ∈ (0, 1)
(15.1)
usando il metodo delle differenze finite del secondo ordine. Sapendo
che la soluzione esatta `e u(x) = (ex − e−x )/(e − e−1 ) − x, si mostri
inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico
dell’errore in norma infinito.
2. Si risolva il problema ai limiti
 ′′
′

 u (x) + u (x) + u(x) − cos(x) = 0,
u(0) = 0

 u(π/2) = 1
x ∈ (0, π/2)
usando il metodo delle differenze finite del secondo ordine. Si mostri
inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico
dell’errore in norma infinito rispetto ad una soluzione di riferimento.
3. Si risolva il problema ai limiti
 ′′
′

 u (x) + u (x) + u(x) − cos(x) = 0,
u′ (0) = 1

 u(π/2) = 1
x ∈ (0, π/2)
usando il metodo delle differenze finite del secondo ordine. Si mostri
inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico
dell’errore in norma infinito rispetto ad una soluzione di riferimento.
88
89
4. Si risolva il problema ai limiti
 ′′

 u (x) = cos(u(x)),
u(0) = 0

 u(1) = 1
x ∈ (0, 1)
usando il metodo delle differenze finite del secondo ordine.
5. Si risolva il problema ai limiti

d
d



 − dx (1 + x) dx u(x) = 1,
 u(0) = 0



u(1) = 0
x ∈ (0, 1)
Si mostri inoltre l’ordine del metodo mediante un grafico logaritmicologaritmico dell’errore in norma infinito rispetto alla soluzione esatta.
6. Si risolva il problema ai limiti
 ′′
′

 u (x) = 20u (x) + u(x),
u(0) = 0

 u(1) = 1
x ∈ (0, 1)
Visto l’andamento della soluzione, si implementi uno schema di differenze finite su nodi non equispaziati secondo una distribuzione di tipo
coseno. Si confrontino gli errori rispetto alla soluzione analitica.
7. Si ricavi la relazione di ricorrenza dei polinomi ortonormali nell’inter2 2
vallo [−∞, ∞] rispetto alla funzione peso w(x) = e−α x
8. Noti gli zeri dei polinomi di Legendre e i pesi di quadratura della rispettiva formula gaussiana, si ricavino i nodi e i pesi di una formula
gaussiana nell’intervallo [a, b] rispetto al peso w(x) = 1.
9. Si risolva il problema ai limiti (15.1) usando il metodo di collocazione con polinomi di Legendre. Gli N nodi di collocazione in [a, b] e la
valutazione dei polinomi di Legendre e delle loro derivate sono dati dalla function [L,x,L1,L2] = legendrepolynomials(N,a,b). Si mostri
inoltre l’ordine del metodo mediante un grafico logaritmico-logaritmico
dell’errore in norma infinito.
Parte 2
ODEs
(Equazioni differenziali
ordinarie)
90
Capitolo 16
Introduzione
Consideriamo il sistema di equazioni differenziali ordinarie (ODEs) ai valori
iniziali (initial value problem)
con dato iniziale
 ′
y1 (t) = f1 (t, y1 (t), y2 (t), . . . , yd (t))




 y2′ (t) = f2 (t, y1 (t), y2 (t), . . . , yd (t))
..


.


 ′
yd (t) = fd (t, y1 (t), y2 (t), . . . , yd (t))

y1 (t0 ) = y1 0




 y2 (t0 ) = y2 0
..


.



yd (t0 ) = yd 0
che pu`o essere riscritto, in forma compatta,
(
y ′ (t) = f (t, y(t)),
y(t0 ) = y 0
t > t0
(16.1)
Assumiamo y 0 ∈ Rd e f : [t0 , +∞) × Rd → Rd globalmente lipschitziana nel
secondo argomento
kf (t, x) − f (t, y)k ≤ λkx − yk
Allora il sistema (16.1) ha un’unica soluzione.
91
∀x, y ∈ Rd
92
CAPITOLO 16. INTRODUZIONE
16.1
Riduzione in forma autonoma
Un sistema in forma non autonoma
(
y ′ (t) = f (t, y(t)),
y(t0 ) = y 0
t > t0
pu`o essere ricondotto in forma autonoma mediante l’introduzione della variabile
yd+1 (t) = t
Si giunge a
16.2
 ′

 y (t) = f (yd+1 (t), y(t)), t > t0

 y ′ (t) = 1,
t > t0
d+1

y(t0 ) = y 0



yd+1 (t0 ) = t0
Equazioni di ordine superiore al primo
Le equazioni differenziali di ordine d del tipo


y (d) (t) = f (t, y(t), y ′ (t), . . . , y (d−1) (t)),




y(t ) = y0,0


 ′ 0
y (t0 ) = y0,1


..


.



 (d−1)
y
(t0 ) = y0,d−1
t > t0
(cio`e in cui vengono prescritti i valori iniziali della funzione e delle derivate)
si possono ricondurre ad un sistema di ODEs di ordine uno, mediante la
sostituzione

y1 (t) = y(t)




 y2 (t) = y ′ (t)
..

.




yd (t) = y (d−1) (t)
dando cos`ı luogo a
(
y ′ (t) = f (t, y(t))
y(t0 ) = [y0,0 , y0,1 , . . . , y0,d−1 ]T
ove
f (t, y(t)) = [y2 (t), y3 (t), . . . , yd (t), f (t, y1 (t), y2 (t), . . . , yd−1 (t))]T
Capitolo 17
Metodi ad un passo
17.1
Metodo di Eulero
Il metodo di Eulero (o Eulero esplicito, o forward Euler ) si basa sull’approssimazione
y(t) − y(t0 )
y ′ (t) ≈
t − t0
f (t, y(t)) ≈ f (t0 , y(t0 ))
per cui y(t) ≈ y(t0 ) + (t − t0 )f (t0 , y(t0 )). Pertanto l’approssimazione di y(t)
`e ottenuta per interpolazione lineare a partire da (t0 , f (t0 , y(t0 ))), con pendenza f (t0 , y(t0 )). Pu`o essere visto anche come applicazione della formula
di quadratura del rettangolo (estremo sinistro) alla soluzione analitica
Z t
y(t) = y(t0 ) +
f (τ, y(τ ))dτ
t0
Data la sequenza t0 , t1 = t0 + k, t2 = t0 + 2k, . . . , tn = t0 + nk, . . ., ove k `e il
passo temporale (o time step), lo schema numerico che ne risulta `e
y n+1 = y n + kf (tn , y n ),
y 0 = y(t0 )
n ≥ 0,
(17.1)
ove y n ≈ y(tn ). In pratica, y n+1 `e la soluzione approssimata al tempo tn + k,
mediante un passo del metodo di Eulero, del sistema
(
˜ ′ (t) = f (t, y˜ (t)), t > tn
y
˜ (tn ) = y n
y
Se consideriamo l’intervallo temporale [t0 , t0 + t∗ ] e abbiamo fissato m, indichiamo con y n , n ≤ m, la soluzione approssimata al tempo tn mediante un generico metodo y n+1 = Y n (f , k, y n ) per la soluzione del sistema differenziale
(16.1), ove il passo temporale `e k = t∗ /m.
93
94
CAPITOLO 17. METODI AD UN PASSO
Definizione 1. La quantit`
a y(tn+1 )−Y n (f , k, y(tn )) si chiama errore locale
del metodo.
Detto in altre parole, esso `e la differenza tra la soluzione esatta al tempo
tn+1 e la soluzione approssimata al tempo tn+1 che si otterrebbe applicando il
metodo numerico al problema differenziale e supponendo esatta la soluzione
al tempo tn . Per il metodo di Eulero, si ha
y(tn+1 ) − Y n (f , k, y(tn )) = y(tn+1 ) − y(tn ) − kf (tn , y(tn )) =
= y(tn ) + ky ′ (tn ) + O(k 2 ) − y(tn ) − ky ′ (tn ) = O(k 2 ) (17.2)
(supponendo y ∈ C 2 ). Poich´e ad ogni passo si commette un errore di ordine
O(k 2 ) (che si accumula agli errori prodotti ai passi precendeti) e i passi
sono m = t∗ /k, se tutto va bene, anche quando m → ∞ (cio`e k → 0+ ) si
` giustificata
commette un errore massimo di ordine t∗ /k · O(k 2 ) = O(k). E
allora la seguente
Definizione 2. Un metodo y n+1 = Y n (f , k, y n ) `e di ordine p se y(tn+1 ) −
Y n (f , k, y(tn )) = O(k p+1 ), k = t∗ /m, per m → ∞, per qualunque f analitica
e 0 ≤ n ≤ m − 1.
Un metodo di ordine p ≥ 1 si dice consistente di ordine p, o semplicemente
consistente. Se y(tn+1 ) − Y n (f , k, y(tn )) = 0 il metodo si dice fortemente
consistente. Dunque il metodo di Eulero `e consistente di ordine 1. Si tratta
ora di dimostrare che tutto va bene.
Nella definizione sopra, al variare di m il significato di tn (e di y n ) cambia,
nel senso che y n ≈ y(tn ) = y(t0 + nt∗ /m). Per essere pi`
u chiari (ma anche
pi`
u pesanti) dobbiamo introdurre la notazione y n,m per indicare l’approssimazione di y(tn,m ) = y(t0 + nt∗ /m), osservando che y(tn,m1 ) 6= y(tn,m2 ) se
m1 6= m2 .
Definizione 3. Il metodo y n+1,m = Y n (f , k, y n,m ) `e convergente se
lim max ken,m k = 0
m→∞ 0≤n≤m
ove en,m = y n,m − y(tn ). La quantit`
a maxn ken,m k si chiama errore globale.
` la
Di solito si parla di convergenza, e anche di ordine, per k → 0+ . E
∗
stessa cosa, ma se si fissa k, non `e detto che t /k sia un numero intero. Si
pu`o allora considerare il limite
lim max ken,m k
kn →0 0≤n≤m
ove km = t∗ /m. Nel seguito assumeremo comunque sempre che valga la
relazione k = t∗ /m. Con questa assunzione, useremo anche le notazioni
tn,k = tn,m , y n,k = y n,m e en,k = en,m .
17.1. METODO DI EULERO
95
Teorema 8. Il metodo di Eulero `e convergente.
Dimostrazione. Assumiamo f (e dunque y) analitica. Dalle uguaglianze
y n+1,k = y n,k + kf (tn,k , y n,k )
(definizione del metodo)
2
y(tn+1,k ) = y(tn ) + kf (tn,k , y(tn )) + O(k ) (errore locale (17.2))
si ricava
en+1,k = en,k + k[f (tn,k , y n ) − f (tn,k , y(tn,k )] +
|
{z
}
y n+1,k −Y n (f ,k,y(tn ))
O(k 2 )
| {z }
Y n (f ,k,y (tn,k ))−y(tn+1,k )
da cui, siccome f `e lipschitziana,
ken+1,k k ≤ ken,k k + kkf (tn,k , y n,k ) − f (tn,k , y(tn,k )k + ck 2 ≤
≤ (1 + kλ)ken,k k + ck 2 ,
c>0
Applicando l’analoga disuguaglianza a en,k si trova
ken+1,k k ≤ (1 + kλ)2 ken−1,k k + ((1 + kλ) + 1)ck 2
e dunque
ken,k k ≤ (1 + kλ)n ke0,k k + ((1 + kλ)n−1 + . . . + (1 + kλ) + 1)ck 2 =
(1 + kλ)n − 1 2
= (1 + kλ)n ke0,k k +
ck
(1 + kλ) − 1
∗
Poich´e 1 + kλ < ekλ , (1 + kλ)n < enkλ ≤ emkλ = et λ . Dunque
ken,k k ≤ e
t∗ λ
ke0,k k +
et
∗λ
−1
ck,
λ
1≤n≤m
Si assume generalmente che y 0,k = y(t0 ) e dunque
ken,k k ≤
et
∗λ
−1
ck,
λ
0≤n≤m
da cui
lim max ken,k k = 0
k→0+ 0≤n≤m
In particolare, l’errore globale tende a 0 come k, come ci si aspettava. Da
notare che l’errore globale dipende anche dall’intervallo di tempo t∗ (anche se
la stima ottenuta `e molto pessimistica, generalmente l’errore globale cresce
linearmente con l’ampiezza dell’intervallo di tempo).
96
17.2
CAPITOLO 17. METODI AD UN PASSO
Metodo dei trapezi
Il metodo dei trapezi (o metodo di Crank–Nicolson) si basa sull’approssimazione
y(t) − y(t0 )
y ′ (t) ≈
t − t0
1
f (t, y(t)) ≈ (f (t0 , y(t0 )) + f (t, y(t)))
2
Pu`o essere visto anche come applicazione della formula di quadratura del
trapezio alla soluzione analitica
Z t
y(t) = y(t0 ) +
f (τ, y(τ ))dτ
t0
Data la sequenza t0 , t1 = t0 + k, t2 = t0 + 2k, . . . , tn = t0 + nk, . . ., lo schema
numerico che ne risulta `e
k
y n+1 = y n + (f (tn , y n ) + f (tn+1 , y n+1 )), n ≥ 0,
(17.3)
2
y 0 = y(t0 )
ove y n ≈ y(tn ). Indicato con y n+1 = Y n (f , k, y n , y n+1 ) un generico metodo
di questo tipo, l’errore locale si ottiene calcolando
y(tn+1 ) − Y n (f , k, y(tn ), y(tn+1 )) =
k
= y(tn+1 ) − y(tn ) − (f (tn , y(tn )) + f (tn+1 , y(tn+1 ))) =
2
2
k
k3
k
= y(tn )+ky ′ (tn )+ y ′′ (tn )+ y ′′′ (tn )+O(k 4 )−y(tn )− (y ′ (tn )+y ′ (tn+1 )) =
2
6
2
2
3
k
k
= ky ′ (tn ) + y ′′ (tn ) + y ′′′ (tn ) + O(k 4 )+
2
6
k
k 2 ′′′
′
′
′′
3
−
y (tn ) + y (tn ) + ky (tn ) + y (tn ) + O(k ) = O(k 3 )
2
2
(supponendo y ∈ C 3 ). Dunque il metodo dei trapezi `e di ordine 2. Rimandiamo la dimostrazione della convergenza del metodo al paragrafo successivo.
In Figura 17.1 si vede chiaramente che l’errore (per l’equazione del pendolo linearizzata) decade come k 2 ∝ m−2 e che lo stesso cresce linearmente
con l’intervallo di tempo. Entrambi i metodi descritti sono ad un passo (cio`e
la soluzione y n+1 dipende esplicitamente solo da y n ). Il metodo dei trapezi `e
per`o implicito, cio`e la soluzione y n+1 `e implicitamente definita dall’equazione
(in generale non lineare)
k
k
Fn (y n+1 ) = y n+1 − f (tn+1 , y n+1 ) − y n − f (tn , y n ) = 0
2
2
17.3. THETA-METODO
97
100
pendoloperiod.m
10−1
m
10−2
error in infinity norm
4 periodi
3 periodi
10
−3
2 periodi
1 periodo
10−4
m−2
10−5
10−6
200
400
600
800
m
Figura 17.1: Errori del metodo dei trapezi per l’equazione del pendolo
linearizzata.
17.3
θ-metodo
Il θ-metodo `e una generalizzazione dei metodi precedenti e si scrive
y n+1 = y n + k[(1 − θ)f (tn , y n ) + θf (tn+1 , y n+1 )],
y 0 = y(t0 )
n≥0
(17.4)
` facile verificare che
E
y(tn+1 ) − Y n (f , k, y(tn ), y(tn+1 )) =
= y(tn+1 ) − y(tn ) − k[(1 − θ)f (tn , y(tn )) + θf (tn+1 , y(tn+1 ))] =
1 θ
1
2 ′′
k 3 y ′′′ (tn ) + O(k 4 ) (17.5)
− θ k y (tn ) +
−
=
2
6 2
e dunque il metodo ha ordine due se θ = 21 , e ordine uno altrimenti. In
particolare, se y ′′ (t) `e nulla, tale `e l’errore locale per il θ-metodo. E se θ = 12
e y ′′′ (t) `e nulla, tale `e l’errore locale. Si assume θ ∈ [0, 1].
Qual `e il significato dell’errore locale per un metodo implicito? Possiamo
considerare il problema differenziale
(
y ∗ ′ (t) = f (t, y ∗ (t)), t > tn
y ∗ (tn ) = y(tn )
98
CAPITOLO 17. METODI AD UN PASSO
ed approssimare y ∗ (tn+1 ) mediante un passo del θ-metodo. Si ha
y ∗n+1 = Y n (f , k, y(tn ), y ∗n+1 ) = y(tn ) + k[(1 − θ)f (tn , y(tn )) + θf (tn+1 , y ∗n+1 )]
da cui (usando (17.5))
y(tn+1 ) − y ∗n+1 = kθ[f (tn+1 , y(tn+1 )) − f (tn+1 , y ∗n+1 )]+
1 θ
1
2 ′′
− θ k y (tn ) +
−
k 3 y ′′′ (tn ) + O(k 4 )
+
2
6 2
Per il metodo di Eulero (θ = 0), y ∗n+1 = Y n (f , k, y(tn )) e dunque y(tn+1 ) −
y ∗n+1 `e l’errore locale per definizione. Altrimenti, posto e∗n+1 = y(tn+1 ) −
y ∗n+1 , si ha
1
1 θ
∗
∗
2
ken+1 k ≤ kθλken+1 k +
− θ ck +
−
dk 3
2
6 2
Dunque, se 0 < ε < 1 − kθλ (cio`e k `e sufficientemente piccolo), a meno di
rinominare le costanti c e d
1
1 θ
∗
2
ken+1 k ≤
− θ ck +
−
dk 3 =
2
6 2
= y(tn+1 ) − Y n (f , k, y(tn ), y(tn+1 ))
Quindi, anche per uno schema implicito, l’errore locale `e dello stesso ordine
della differenza tra la soluzione esatta al tempo tn+1 e la soluzione che si
otterrebbe applicando il metodo numerico e supponendo esatta la soluzione al tempo tn . Per questo motivo, con un abuso di linguaggio, spesso si
identificano le due cose.
Per dimostrare che il θ-metodo converge, introduciamo la seguente funzione (definita implicitamente per θ 6= 0)
ψ(t, y) = (1 − θ)f (t, y) + θf (t + k, y + kψ(t, y))
Osserviamo che
y n + kψ(tn , y n ) = y n + k[(1 − θ)f (tn , y n ) + θf (tn + k, y n + kψ(tn , y n ))]
|
{z
}
|
{z
}
da cui
y n + kψ(tn , y n ) = y n+1
Analogamente,
y(tn ) + kψ(tn , y(tn )) = y ∗n+1
17.3. THETA-METODO
99
Osserviamo infine che
kψ(t, x) − ψ(t, y)k = k(1 − θ)f (t, x) + θf (t + k, x + kψ(t, x))+
− (1 − θ)f (t, y) − θf (t + k, y + kψ(t, y))k ≤
≤ (1 − θ)λkx − yk + θλkx + kψ(t, x) − y − kψ(t, y)k ≤
≤ (1 − θ)λkx − yk + θλkx − yk + kθλkψ(t, x) − ψ(t, y)k
da cui, se 0 < 1 − kθλ (cio`e k sufficientemente piccolo),
kψ(t, x) − ψ(t, y)k ≤
λ
kx − yk = Λkx − yk
1 − kθλ
Quindi ψ(t, y) `e uniformemente lipshitziana nel secondo argomento.
Teorema 9. Il θ-metodo `e convergente.
Dimostrazione. Si ha
ken+1 k = ky n+1 − y(tn+1 )k = k(y n+1 − y ∗n+1 ) + (y ∗n+1 − y(tn+1 ))k ≤
≤ ky n+1 − y ∗n+1 k + ky ∗n+1 − y(tn+1 )k ≤
1 θ
1
2
− θ ck +
−
dk 3 ≤
≤ ken k + kkψ(tn , y n ) − ψ(tn , y(tn ))k +
2
6 2
1
1 θ
≤ (1 + kΛ)ken k +
dk 3
− θ ck 2 +
−
2
6 2
Si conclude adesso esattamente come nel caso del metodo di Eulero. Quindi il
θ-metodo `e convergente con ordine uno se θ 6= 12 e ordine due altrimenti.
Osserviamo che:
• il metodo per θ = 1 si chiama Eulero implicito (backward Euler);
• per θ = 13 il metodo `e di ordine uno, ma il termine contenente la derivata
terza della soluzione `e annullato.
17.3.1
Risoluzione di un metodo implicito
Nel caso implicito (θ 6= 0), ad ogni passo n si deve risolvere un sistema di
equazioni in generale non lineari Fn (x) = 0, x = y n+1 , ove
Fn (x) = x − kθf (tn+1 , x) − y n − k(1 − θ)f (tn , y n )
La prima idea potrebbe essere quella di applicare il metodo di punto fisso:
x(r+1) = g(x(r) ) = kθf (tn+1 , x(r) ) + y n + k(1 − θ)f (tn , y n )
100
CAPITOLO 17. METODI AD UN PASSO
La funzione g soddisfa
kg(x) − g(y)k = kkθf (tn+1 , x) − kθf (tn+1 , y)k ≤ kθλkx − yk
ed `e una contrazione se
1
(17.6)
θλ
Dunque, a patto di prendere k sufficientemente piccolo, si pu`o ricavare la
soluzione x = y n+1 con il metodo del punto fisso, partendo, per esempio,
da x(0) = y n . Il metodo del punto fisso, facile da applicare, ha convergenza
lineare ed `e inoltre soggetto ad una restrizione sul passo k che potrebbe essere
eccessiva. Per questi motivi `e utile considerare anche il metodo di Newton
per la risoluzione del sistema non lineare. La matrice jacobiana associata `e
∂fi (tn+1 , x)
Jn (x) = I − kθ
∂xj
ij
kθλ < 1 ⇒ k <
Il calcolo di y n+1 , con y n come valore iniziale, con il metodo di Newton
avviene dunque secondo il seguente algoritmo:
• r=0
• x(r) = y n
• Jn (x(r) )δ (r) = −Fn (x(r) )
• while kδ (r) k > Newt tol
x(r+1) = x(r) + δ (r)
r =r+1
Jn (x(r) )δ (r) = −Fn (x(r) )
end
• y n+1 = x(r)
In Matlab/Octave l’implementazione potrebbe essere:
f = @(t,y) ... % rhs dell’equazione
j = @(t,y) ... % jacobiano di f
F = @(tn,yn,t,y) y - k * theta * f(t,y) - yn - k * (1 - theta) * f(tn,yn)
J = @(t,y) eye(length(y)) - k * theta * j(t,y)
y(:,1) = y0;
t = 0;
17.3. THETA-METODO
for n = 1:ts
y(:,n+1) = y(:,n);
errest = -J(t + k,y(:,n +
while (norm(errest,inf) >
y(:,n + 1) = y(:,n + 1)
errest = -J(t + k,y(:,n
end
t = t + k;
end
101
1)) \ F(t,y(:,n),t + k,y(:,n + 1));
Newt_tol)
+ errest;
+ 1)) \ F(t,y(:,n),t + k,y(:,n + 1));
La tolleranza Newt tol va presa tenendo conto che si sta comunque commettendo un errore proporzionale a k 2 (trapezi) o addirittura k. Come valore
iniziale x(0) , invece di y n si pu`o prendere y n + kf (tn , y n ), che corrisponde
a y(tn+1 ) approssimato con il metodo di Eulero e dunque dovrebbe essere
un’approssimazione migliore di y n+1 (ma si veda il capitolo 20). Anche altre
scelte possono andare bene, a patto di avere convergenza del metodo.
17.3.2
Newton inesatto e passo variabile
Nel caso in cui il calcolo e/o la risoluzione dei sistemi lineari con Jn (x(r) ) risulti particolarmente oneroso, si pu`o ricorrere al metodo di Newton inesatto,
considerando ad ogni passo la matrice jacobiana costante Jn (x(r) ) ≡ Jn (x(0) ),
o, in generale, qualunque modifica della matrice jacobiana. A questo punto,
la si pu`o fattorizzare in LU una sola volta per passo temporale e poi risolvere i sistemi con le corrispondenti matrici triangolari. Il metodo di Newton
inesatto converge generalmente in maniera lineare e dunque serviranno pi`
u
iterazioni (ma meno costose) rispetto al metodo di Newton esatto. Per inciso, questo `e il sintomo principale di una matrice jacobiana non corretta. Il
numero di iterazioni necessarie alla convergenza dipende (anche) dalla vicinanza della soluzione iniziale x(0) = y n a quella finale y n+1 . Tanto pi`
u sono
vicine, tante meno iterazioni serviranno, e viceversa. Se in un certo intervallo
di tempo la soluzione non varia molto, allora `e plausibile pensare di prendere
i successivi passi temporali pi`
u grandi. Viceversa, se varia molto, pu`o essere
necessario prendere i successivi passi temporali pi`
u piccoli. La velocit`a di
convergenza del metodo di Newton inesatto `e un indicatore della variazione
della soluzione. Il metodo di Newton inesatto a passo variabile potrebbe
essere implementato nel seguente modo (θ 6= 0):
• r=0
• x(r) = y n
• Fn (x(r) ) = x(r) − kn+1 θf (tn+1 , x(r) ) − y n − kn+1 (1 − θ)f (tn , y n )
102
CAPITOLO 17. METODI AD UN PASSO
(r)
• Jn (x ) = I − kn+1 θ
• Pn Jn (x(r) ) = Ln Un
∂fi (tn+1 ,x(r) )
∂xj
ij
• Ln Un δ (r) = −Pn Fn (x(r) )
• while kδ (r) k > Newt tol
x(r+1) = x(r) + δ (r)
r =r+1
Ln Un δ (r) = −Pn Fn (x(r) )
end
• y n+1 = x(r)
• if r < rmin then kn+2 = kn+1 ρ
else if r > rmax then kn+2 = kn+1 /ρ
Dunque, dato il passo temporale kn+1 = tn+1 − tn , il successivo passo temporale kn+2 `e uguale a kn+1 se il metodo di Newton inesatto ha raggiunto la
convergenza in un numero di iterazioni r compreso tra rmin e rmax , `e amplificato da un fattore ρ > 1 se il numero di iterazioni `e stato pi`
u piccolo di rmin
ed `e ridotto dello stesso fattore se il numero di iterazioni `e stato pi`
u grande
di rmax (ove rmax > rmin ). Ovviamente i valori di ρ, rmin e rmax dipendono dal
problema. Bisognerebbe prevedere anche un numero massimo di iterazioni
R dentro il ciclo while del metodo di Newton: raggiunto tale numero, il
passo corrente kn+1 andrebbe ridotto (per esempio a kn+1 /δ e si dovrebbe
procedere nuovamente al calcolo di y n+1 .
Nel caso in cui non sia necessario applicare il metodo di Newton (perch´e
il problema `e lineare), il numero di iterazioni da considerare potrebbe essere
quello necessario ad un metodo iterativo per risolvere i sistemi lineari.
17.3.3
Caso lineare
Un caso molto frequente `e quello lineare autonomo a coefficienti costanti
(
y ′ (t) = Ay(t) + b
y(t0 ) = y 0
con passo di integrazione k costante. In tal caso, il metodo si scrive
(I − kθA)y n+1 = (I + k(1 − θ)A)y n + kb
17.4. VERIFICA DELL’IMPLEMENTAZIONE
103
Nel caso implicito, si tratta dunque di risolvere un sistema lineare (non `e
necessario quindi il metodo di Newton) di matrice I − kθA ad ogni passo.
Pertanto, per problemi di piccola dimensione, `e conveniente precalcolare la
fattorizzazione LU della matrice. Altrimenti, si pu`o considerare un metodo thetamlin.m
iterativo, ove si scelga come vettore iniziale per il calcolo di y n+1 la soluzione
al passo precedente y n . Se il termine b dipende invece dal tempo, allora kb
va sostituito, ovviamente, con k(1 − θ)b(tn ) + kθb(tn+1 ).
17.4
Verifica della correttezza dell’implementazione
Supponiamo di aver implementato un metodo di ordine p per la soluzione del
sistema differenziale
(
y ′ (t) = f (t, y(t))
y(t0 ) = y 0
e di volerne testare la corretta implementazione. L’idea `e quella di creare
una soluzione artificiale x(t), inserirla nell’equazione e calcolarne il residuo
x′ (t) − f (t, x(t)) = g(t)
A questo punto, si risolve il sistema differenziale
(
y ′ (t) = f (t, y(t)) + g(t) = fˆ (t, y(t))
y(t0 ) = x(t0 )
fino ad un tempo t0 + t∗ fissato, con due discretizzazioni di passo costante
k1 = t∗ /m1 e k2 = t∗ /m2 , rispettivamente. Si avranno errori finali em1 ,k1 =
ky m1 ,k1 − x(t0 + t∗ )k = Ck1p e em2 ,k2 = ky m2 ,k2 − x(t0 + t∗ )k = Ck2p . Si ha
dunque
p
em2 ,k2
k2
=
,
em1 ,k1
k1
da cui
log em2 ,k2 − log em1 ,k1 = p(log k2 − log k1 ) = −p(log m2 − log m1 ).
Dunque, rappresentando in un grafico logaritmico-logaritmico l’errore in dipendenza dal numero di passi, la pendenza della retta corrisponde all’ordine
del metodo, cambiato di segno. Tale verifica `e valida anche nel caso di passi
non costanti.
104
CAPITOLO 17. METODI AD UN PASSO
Nel caso f (t, y(t)) sia particolarmente complicato, invece di calcolare il
residuo, si pu`o calcolare una soluzione di riferimento y m,
¯ e poi confrontare
¯ k
con essa le soluzioni y m1 ,k1 e y m2 ,k2 , ove m1 , m2 ≪ m.
¯ In questo caso, per`o, si
pu`o mostrare solo che il metodo converge con l’ordine giusto ad una soluzione,
non necessariamente quella giusta.
Capitolo 18
Metodi multistep
18.1
Metodi di Adams–Bashforth
Invece di costruire la soluzione y n+1 a partire dalla sola soluzione al passo
precedente y n , si pu`o pensare di usare le soluzioni di pi`
u passi precedenti.
Fissato s numero naturale maggiore di 0 e una discretizzazione dell’intervallo
[t0 , t0 + t∗ ] in m passi di ampiezza costante k, data la formula di risoluzione
Z tn+s
y(tn+s ) = y(tn+s−1 ) +
f (τ, y(τ ))dτ
(18.1)
tn+s−1
l’idea `e quella di sostituire la funzione integranda in (18.1) con il “suo” polinomio interpolatore sui nodi equispaziati tn , tn+1 , . . . , tn+s−1 (tn+j = tn +
jk)
s−1
X
p(τ ) =
Lj (τ )f (tn+j , y n+j )
j=0
ove Lj (t) `e il polinomio elementare di Lagrange di grado s − 1 definito da
Lj (tn+i ) = δij . Poich´e p(tn+j ) = f (tn+j , y n+j ), 0 ≤ j ≤ s − 1 (e non,
ovviamente, p(tn+j ) = f (tn+j , y(tn+j ))), dobbiamo supporre di avere gi`a a
disposizione i valori iniziali y n+j ≈ y(tn+j ), 0 ≤ j ≤ s − 1. Si ha dunque
Z
tn+s
p(τ )dτ =
tn+s−1
s−1 Z
X
j=0
tn+s
Lj (τ )dτ
tn+s−1
f (tn+j , y n+j ) = k
s−1
X
bj f (tn+j , y n+j )
j=0
da cui il metodo esplicito multistep Adams–Bashforth
y n+s = y n+s−1 + k
s−1
X
j=0
105
bj f (tn+j , y n+j )
(18.2)
106
CAPITOLO 18. METODI MULTISTEP
I coefficienti bj non dipendono da n e neanche da k: infatti
1
bj =
k
=
Z
0
Z
s−1
tn+s Y
tn+s−1 i=0
i6=j
s−1
1Y
i=0
i6=j
τ − tn+i
dτ =
tn+j − tn+i
Z
0
((s − 1 − i)k + rk)
dr =
(j − i)k
s−1
1Y
i=0
i6=j
Z
0
tn+s−1 + rk − tn+i
dr =
tn+j − tn+i
s−1
1Y
(s − 1 − i + r)
dr
(j − i)
i=0
i6=j
Dunque possono essere calcolati una volta per tutte. Calcoliamo l’ordine di
tale metodo: come al solito, dobbiamo valutare l’espressione
y(tn+s ) − y(tn+s−1 ) − k
s−1
X
bj f (tn+j , y(tn+j ))
j=0
L’ultimo termine `e l’integrale del polinomio q(τ ) di grado s − 1 che interpola
f (tn+j , y(tn+j )), 0 ≤ j ≤ s − 1. Dunque, per tn+s−1 ≤ τ ≤ tn+s ,
kf (τ, y(τ )) − q(τ )k ≤
ky (s+1) (¯
τ )k
|(τ − tn ) · . . . · (τ − tn+s−1 )| ≤
|
{z
}
s!
s termini
≤
ky
(s+1)
(¯
τ )k
s!
s!k s = O(k s ),
tn+s−1 ≤ τ ≤ tn+s
e quindi
y(tn+s ) − y(tn+s−1 ) − k
Z
tn+s
tn+s−1
s−1
X
bj f (tn+j , y(tn+j )) =
j=0
f (τ, y(τ ))dτ − k
Z
tn+s
tn+s−1
s−1
X
bj f (tn+j , y(tn+j )) =
j=0
f (τ, y(τ ))dτ −
Z
tn+s
tn+s−1
q(τ )dτ = O(k s+1 )
perch´e un ulteriore fattore k deriva dal fatto che si integra in un intervallo
di ampiezza k. Quindi, se anche y n = y(tn ) + O(k s ), 0 ≤ n ≤ s − 1 (queste
approssimazioni non possono essere ottenute con il metodo stesso), il metodo
`e di ordine s. Calcoliamo esplicitamente i metodi che corrispondono a s = 1
e s = 2. Se s = 1, dobbiamo cercare il polinomio di grado 0 che interpola
` ovviamente p(τ ) ≡ f (tn , y n ) e b0 = 1, quindi
f (tn , y n ). E
y n+1 = y n + kf (tn , y n )
18.2. METODI LINEARI MULTISTEP
107
e si ritrova il metodo di Eulero. Nel caso s = 2, il polinomio interpolatore `e
p(τ ) =
tn+1 − τ
τ − tn
f (tn , y n ) +
f (tn+1 , y n+1 )
k
k
e dunque
1
b0 =
k
Z
tn+2
tn+1
tn+1 − τ
1
dτ = − ,
k
2
1
b1 =
k
Z
tn+2
tn+1
τ − tn
3
dτ =
k
2
da cui
3k
k
(18.3)
y n+2 = y n+1 − f (tn , y n ) + f (tn+1 , y n+1 )
2
2
Il valore y 1 pu`o essere ricavato, per esempio, anche con il metodo di Eulero,
poich´e si ha, in tal caso, y 1 = y(t1 ) + O(k 2 ).
18.2
Metodi lineari multistep
Una semplice generalizzazione del metodo di Adams–Bashforth `e permettere
che il metodo sia implicito:
y n+s = y n+s−1 + k
s
X
bj f (tn+j , y n+j )
(18.4)
j=0
Il caso banale s = 0 d`a
y n = y n−1 + kb0 f (tn , y n )
da cui, per b0 = 1, si ottiene una riscrittura del metodo di Eulero implicito.
Per s = 1 abbiamo il θ-metodo (b0 = (1 − θ), b1 = θ). Il metodo (18.4) ha
ordine massimo s + 1. In tal caso si chiama metodo Adams–Moulton. Una
generalizzazione ulteriore `e
s
X
aj y n+j = k
j=0
s
X
bj f (tn+j , y n+j )
(18.5)
j=0
con la normalizzazione as = 1. Il metodo `e di ordine p se, come al solito,
y n = y(tn ) + O(k p ) e
s
X
j=0
aj y(tn+j ) − k
s
X
j=0
bj f (tn+j , y(tn+j )) = O(k p+1 )
per ogni funzione f analitica e 0 ≤ n ≤ m − s. Siccome la verifica pu`o
risultare molto tediosa, risulta utile il seguente
108
CAPITOLO 18. METODI MULTISTEP
Teorema 10. Dato un metodo multistep (18.5), definiamo i due polinomi
ρ(w) =
s
X
j
aj w ,
σ(w) =
j=0
s
X
bj w j
j=0
Allora il metodo `e di ordine p se e solo se esiste c 6= 0 tale che
ρ(1 + ξ) − σ(1 + ξ) · ln(1 + ξ) = cξ p+1 + O ξ p+2
per ξ → 0
Prima di vedere la traccia della dimostrazione, proviamo ad applicare il
teorema a qualche caso noto. Per il metodo di Eulero si ha ρ(1 + ξ) = ξ e
σ(1 + ξ) = 1. Si ha
ξ2
ξ−1· ξ−
+ O(ξ 3 )
2
=
ξ2
+ O(ξ 3 )
2
e dunque il metodo `e di ordine 1, come noto. Per il metodo di Adams–
Bashforth (18.3) si ha ρ(1 + ξ) = (1 + ξ)2 − (1 + ξ) = ξ 2 + ξ e σ(1 + ξ) =
3(1 + ξ)/2 − 1/2. Si ha
2
(ξ + ξ) −
1
3
(1 + ξ) −
2
2
5
ξ2 ξ3
4
+
− O(ξ ) = ξ 3 + O(ξ 4 )
· ξ−
2
3
12
e dunque il metodo `e di ordine 2, come noto.
Traccia della dimostrazione del Teorema 10. Si ha
s
X
j=0
aj y(tn+j ) − k
s
X
bj f (tn+j , y(tn+j )) =
j=0
s
X
aj y(tn + jk) − k
s
X
j=0
∞
X
s
X
bj y ′ (tn + jk) =
j=0
s
X
∞
X
j iki
j iki
=
aj
−k
=
y (tn )
bj
y (i+1) (tn )
i!
i!
j=0
i=0
j=0
i=0
!
∞
s
∞
s
i i
X
X
X
X
j
k
j i−1 k i−1
(i)
y (tn )
=
aj y(tn ) +
y (i) (tn )
−k
bj
=
i!
(i
−
1)!
i=1
j=0
i=1
j=0
!
!
s
s
s
∞
X
X
X1 X
j i aj − i
j i−1 bj k i y (i) (tn )
aj y(tn ) +
=
i! j=0
j=0
j=0
i=1
(i)
18.2. METODI LINEARI MULTISTEP
109
Dunque l’ordine `e p se e solo se i coefficienti delle potenze fino a p di k sono
s
nulli, e cio`e se le 2s + 1 incognite {aj }s−1
j=0 e {bj }j=0 soddisfano il sistema
lineare
s
s
X
X
i
j aj = i
j i−1 bj , i = 0, 1, . . . , p
(18.6)
j=0
j=0
Da notare che, per i = j = 0, si intende j i = 1. Per finire la dimostrazione, si
calcola lo sviluppo in serie di Taylor di ρ(ez ) − σ(ez )z per z → 0 e si osserva
che esso `e O(z p+1 ) se e solo se vale (18.6). Posto w = ez , l’ordine `e p se e
solo se lo sviluppo di ρ(w) − σ(w) · ln w per w → 1 vale
−c(ln w)p+1 + O (ln w)p+2 = c(w − 1)p+1 + O (w − 1)p+2
A questo punto, si pone ξ = w − 1.
Non bisogna dimenticare che l’ordine `e p se y(t) `e almeno di classe C p+1 .
Pertanto, qualora ci si aspetti una soluzione non regolare, potrebbe non essere
adatto un metodo di ordine alto. In realt`a, anche le condizioni (18.6) sono
molto utili per determinare l’ordine di un metodo multistep: per esempio,
per il metodo lineare multistep (implicito) a due passi
y n+2 − 3y n+1 + 2y n =
k −5f (tn , y n ) − 20f (tn+1 , y n+1 ) + 13f (tn+2 , y n+2 ) (18.7)
=
12
si ha
18.2.1
a0 + a1 + a2
a1 + 2a2
a1 + 4a2
a1 + 8a2
=0
= b0 + b1 + b2 ⇒ ordine (almeno) 1
= 2(b1 + 2b2 ) ⇒ ordine (almeno) 2
6= 3(b1 + 4b2 ) ⇒ ordine 2
Metodi BDF
I metodi BDF (Backward Differentiation Formulas) sono metodi multistep
impliciti a s passi, di ordine s e con σ(w) = βws . Dato σ(w) e le condizioni
d’ordine, si pu`o costruire ρ(w). Poich´e per`o tali metodi sono della forma
s
X
aj y n+j = kbs f (tn+s , y n+s )
j=0
e kbs f (tn+s , y n+s ) ≈ kbs y ′ (tn + sk), conviene cercare una combinazione lineare di y n+j , 0 ≤ j ≤ s che approssimi kbs y ′ (tn+s ). Si procede dunque con
110
CAPITOLO 18. METODI MULTISTEP
lo sviluppo in serie di Taylor di y(tn + jk), 0 ≤ j ≤ s, centrato in y(tn + sk).
Per esempio, per s = 1,
(
y(tn ) = y(tn + k) − ky ′ (tn + k) + O(k 2 )
y(tn + k) = y(tn + k)
da cui a1 = 1 e a0 = −1. Dunque, il metodo BDF di ordine 1 `e il metodo di
Eulero implicito (backward Euler). Per s = 2

4k 2 ′′

′

y(t
)
=
y(t
+
2k)
−
2ky
(t
+
2k)
+
y (tn + 2k) + O(k 3 )

n
n
n

2

k 2 ′′
′
y(t
+
k)
=
y(t
+
2k)
−
ky
(t
+
2k)
+
y (tn + 2k) + O(k 3 )

n
n
n


2


y(tn + 2k) = y(tn + 2k)
da cui

1



a0 =


a2 = 1
3








 a = −4
 a0 + a1 + a2 = 0
1
3
(18.8)
− 2a0 − a1 = b2 ⇒ 



a2 = 1





 2a0 + a1 = 0


2

2
 b2 =
3
e il metodo `e di ordine 2.
In generale, un metodo BDF a s passi pu`o essere scritto nella forma
s
X
1
j=1
j
∇j y n+s = kf (tn+s , y n+s )
ove ∇0 y n+s = y n+s e ∇j y n+s = ∇j−1 y n+s − ∇j−1 y n+s−1 . In questo modo
per`o as 6= 1 per s > 1.
I metodi BDF sono gli unici metodi multistep in cui non `e difficile calcolare
i coefficienti anche nel caso di passi temporali variabili. Sempre per s = 2,
se tn+1 = tn + kn+1 e tn+2 = tn+1 + kn+2 , allora

y(tn ) = y(tn + kn+1 + kn+2 ) − (kn+1 + kn+2 )y ′ (tn + kn+1 + kn+2 )+





(kn+1 + kn+2 )2 ′′


+
y (tn + kn+1 + kn+2 ) + . . .


2

y(tn + kn+1 ) = y(tn + kn+1 + kn+2 ) − kn+2 y ′ (tn + kn+1 + kn+2 )+


2

kn+2



y ′′ (tn + kn+1 + kn+2 ) + . . .
+


2


y(tn + kn+1 + kn+2 ) = y(tn + kn+1 + kn+2 )
`
18.3. CONSISTENZA E STABILITA
111
da cui i coefficienti

a2 = 1




 a0 + a1 + a2 = 0
− a0 (kn+1 + kn+2 ) − a1 kn+2 = b2 kn+2



a

 0 (kn+1 + kn+2 )2 + a1 k 2 = 0
2
2 n+2

2
kn+2


a
=
0


(kn+1 + 2kn+2 )kn+1



2


 a = − (kn+1 + kn+2 )
1
(kn+1 + 2kn+2 )kn+1
⇒



a2 = 1





(kn+1 + kn+2 )

 b2 =
(kn+1 + 2kn+2 )
Va notato per`o che
√ il metodo che ne risulta in generale non converge se
kn+2 /kn+1 ≥ 1 + 2. E rimane aperto poi il problema di scegliere come
cambiare il passo (vedi per`o il paragrafo 17.3.2). Questi metodi risultano
particolarmente vantaggiosi quando la valutazione della funzione f `e onerosa,
poich´e permettono di raggiungere un ordine elevato con una sola valutazione
(nel caso lineare, altrimenti `e necessario valutare f in un ciclo di Newton ad
ogni passo temporale).
18.3
Consistenza e stabilit`
a
Dalle condizioni d’ordine (18.6), si vede che un metodo lineare multistep `e
consistente se
ρ(1) = 0, ρ′ (1) = σ(1)
La consistenza `e una condizione necessaria per la convergenza: infatti, se
consideriamo il semplice problema differenziale
(
y ′ (t) = 0, t ∈ (0, t∗ ]
(18.9)
y(0) = y0
una soluzione numerica al passo n = m − s, k = t∗ /m soddisfa
a0 ym−s,m + a1 ym−s+1,m + . . . + as ym,m = 0
Se il metodo `e convergente, ym−s+j,m → y(t∗ ), 0 ≤ j ≤ s, per m → ∞ e
dunque
0 = a0 ym−s,m +a1 ym−s+1,m +. . .+as ym,m → (a0 +a1 +. . .+as )y(t∗ ) = ρ(1)y(t∗ )
da cui ρ(1) = 0. Lo stesso metodo applicato invece a
(
y ′ (t) = 1, t ∈ (0, t∗ ]
y(0) = 0
112
CAPITOLO 18. METODI MULTISTEP
ammette una soluzione numerica del tipo yn,m = nkα = tn,m α. Infatti, da
α(a0 nk + a1 (n + 1)k + . . . + as (n + s)k) = k(b0 + b1 + . . . + bs )
si ricava
α[n(a0 + a1 + . . . + as ) + (a1 + 2a2 + . . . + sas )] = α[nρ(1) + ρ′ (1)] = σ(1)
Se il metodo `e convergente, allora ρ(1) = 0 e dunque α = σ(1)/ρ′ (1). Siccome
la soluzione analitica `e y(t) = t, ym,m → tm,m = t∗ , per m → ∞ e dunque
α = 1.
La consistenza, per`o, non `e sufficiente ad assicurare la convergenza di
un metodo. Consideriamo l’applicazione del metodo a due passi del secondo
ordine (18.7) al problema differenziale (18.9) la cui soluzione `e evidentemente
y(t) ≡ y0 . Si ha
yn+2 − 3yn+1 + 2yn = 0
Prendiamo y1 = y0 + O(k 2 ) = y0 + ck 2 (valore iniziale lecito per un metodo
multistep a due passi di ordine due). Allora, y2 = 3y0 +3ck 2 −2y0 = y0 +c3k 2 .
Si ha poi y3 = y0 + c7k 2 . In generale, si ha
yn = y0 + c(2n − 1)k 2
Dunque, se il numero di passi `e m = t∗ /k, si ha
∗
m
y(t ) ≈ ym = y0 + c(2 − 1)
t∗
m
2
e facendo tendere m → ∞ (o, equivalentemente, k → 0), si ha ym → ∞.
Abbiamo quindi un metodo la cui soluzione numerica diverge facendo tendere
il passo temporale a 0 (cio`e proprio l’opposto di quanto dovrebbe succedere).
` proprio un piccolo errore commesso ad un passo (in questo caso al solo
E
passo y1 ) che si accumula in maniera distruttiva. Per il problema (18.9)
consideriamo un metodo ad s passi di ordine p i cui primi valori siano
zj = y0 + cθj k p ,
0≤j ≤s−1
ove θ `e una radice del polinomio ρ(w) (che d’ora in poi chiameremo caratteristico). Sono valori accettabili, anche per j = 0, in quanto distano O(k p )
dalla soluzione analitica. Ora zs si trova risolvendo
s
X
j=0
aj z j = 0
`
18.3. CONSISTENZA E STABILITA
113
da cui
zs = −
ove si `e usato
P
j
s−1
X
j=0
aj zj = −y0
s−1
X
j=0
aj − ck
p
s−1
X
aj θj = y0 + cθs k p
j=0
aj = 0 e ρ(θ) = 0. Per induzione si arriva a provare che
zn,k = zn = y0 + cθn k p
`e una soluzione di (18.9), con zn,k − y(tn ) = zn,k − y0 = cθn k p . Dunque il metodo `e consistente ma, se vogliamo che si abbia limm→∞ zm,k =
limm→∞ zm,t∗ /m = y(t∗ ) = y0 occorre che |θ| ≤ 1. Se θ `e radice multipla di
ρ(w), allora `e radice anche di ρ′ (w) e pertanto soddisfa anche
′
ρ (θ) =
s
X
aj jθj−1 = 0
j=0
Allora anche zn,k = zn = y0 + cnθn k p `e una soluzione numerica. Infatti
s
X
j=0
aj zn+j = y0
s
X
aj + ck p θn
j=0
p n
s
X
aj nθj + θn+1
j=0
p n+1 ′
= 0 + ck θ nρ(θ) + ck θ
ρ (θ) = 0
s
X
aj jθj−1
j=0
!
=
ed `e generata dai valori iniziali zj = y0 + cjθj k p , 0 ≤ j ≤ s − 1. Se vogliamo
che zn,k converga alla soluzione analitica per m → ∞, deve essere |θ| < 1.
Se il polinomio caratteristico ha radici semplici θ tali che |θ| ≤ 1 e radici
multiple θ tali che |θ| < 1, diremo che il polinomio soddisfa la condizione
delle radici. Consideriamo adesso yn = y0 e zn = y0 + cθn k p , θ radice del
polinomio caratteristico. Sono entrambe soluzioni consistenti del problema
e le seconde sono state generate ammettendo delle perturbazioni δj = cθj k p
per i primi s termini. Dunque
|zj,k − yj,k | = |δj | ≤ max c|θ|j k p
0≤j≤s−1
mentre le soluzioni distano
|zn,k − yn,k | = c|θ|n k p = |θ||zn−1,k − yn−1,k |
e se |θ| > 1, tali differenze non sono limitate. Dunque, un insieme di perturbazioni limitate pu`o produrre un insieme di soluzioni non limitate. Allo
114
CAPITOLO 18. METODI MULTISTEP
stesso modo, se si considerano le soluzioni yn = y0 e zn = y0 + cnθn k p , θ
radice multipla del polinomio caratteristico, si ha
|zj,k − yj,k | = |δj | ≤ max cj|θ|j k p
0≤j≤s−1
mentre
|zn,k − yn,k | = cn|θ|n k p = |θ|
n
|zn−1,k − yn−1,k |
n−1
` giustificata allora (in analogia
e quindi le soluzioni divergono se |θ| ≥ 1. E
con quanto visto al paragrafo 11.2.7) la seguente
Definizione 4. Dato un metodo lineare multistep (18.5), siano z in , i = 1, 2,
due perturbazioni della soluzione definite da
z ij = y j + δ ij ,
0≤j ≤s−1
s
s
X
X
aj z in+j = k
bj f (tn+j , z in+j ) + kδ in+s , 0 ≤ n ≤ m − s
j=0
j=0
Se da maxn kδ 1n −δ 2n k ≤ ε segue maxn kz 1n −z 2n k ≤ Cε per k piccolo a piacere,
allora il metodo (18.5) si dice (zero-)stabile.
Oltre alla consistenza, l’altro ingrediente per avere la convergenza di un
metodo `e proprio la stabilit`a. Infatti, posto, come al solito,
y ∗n+s
+
s−1
X
j=0
aj y(tn+j ) = k
s−1
X
bj f (tn+j , y(tn+j )) + kbs f (tn+s , y ∗n+s )
j=0
(e y ∗j = y(tj ), 0 ≤ j ≤ s − 1) l’errore al passo n + s pu`o essere espresso come
en+s = y n+s − y(tn+s ) = (y n+s − y ∗n+s ) + (y ∗n+s − y(tn+s ))
(18.10)
ove il secondo termine `e dell’ordine dell’errore locale e il primo termine tiene
conto dell’accumulazione degli errori ai passi precedenti, cio`e delle perturbazioni tra la soluzione esatta e la soluzione numerica ai passi precedenti.
Guardando la rappresentazione dell’errore (18.10), si vede che il primo termine (y n+s − y ∗n+s ) `e la differenza tra due particolari soluzioni perturbate z 1n
e z 2n corrispondenti a
δ 1j = 0, 0 ≤ j ≤ m
`
18.3. CONSISTENZA E STABILITA
115
e
δ 2j = y(tj ) − y j ,
δ 2n+s
=−
s−1
X
bj f (tj+n , z 2j+n )
+
j=s−n
s−1
X
0≤j ≤s−1
bj f (tj+n , y(tj+n ))+
j=s−n
s−1
1 X
+
aj z 2j+n − y(tj+n ) ,
k j=s−n
δ 2n+s = −
+
1
k
s−1
X
j=0
s−1
X
j=0
bj f (tj+n , z 2j+n ) +
s−1
X
0≤n≤s
bj f (tj+n , y(tj+n ))+
j=0
aj z 2j+n − y(tj+n ) ,
s+1≤n≤m−s
Dunque, perch´e un metodo sia convergente (cio`e l’errore tenda a zero con
k), occorre che le perturbazioni della soluzione introdotte ad ogni passo da
errori di approssimazione del metodo stesso rimangano limitate (ci`o non fa
esplodere la prima parte di (18.10)) e che l’errore locale tenda a zero con k
(ci`o fa andare a zero la seconda parte di (18.10)).
Abbiamo visto che la condizione delle radici `e necessaria affinch´e perturbazioni limitate generino soluzioni limitate. In realt`a essa `e anche sufficiente.
Si ha infatti il seguente teorema fondamentale:
Teorema 11 (Equivalenza di Dahlquist). Un metodo lineare multistep con
valori iniziali consistenti `e convergente se e solo se `e consistente e stabile
(cio`e il suo polinomio caratteristico soddisfa la condizione delle radici).
La grande portata di questo teorema `e che il risultato `e valido non solo
per il problema modello (18.9). Inoltre, se i valori iniziali approssimano con
ordine p le soluzioni analitiche, allora il metodo `e convergente con ordine p.
La dimostrazione della sufficienza della consistenza e della condizione delle
radici passa attraverso la riscrittura di un metodo multistep come un metodo
ad un passo in uno spazio di dimensione maggiore. A quel punto, la dimostrazione procede essenzialmente come nel caso del θ-metodo, introducento una
opportuna funzione ψ(t, y), lipschitziana con costante Λ. Si ottiene quindi
kE n+1 k ≤ (1 + kΛ)kE n k + ck p+1
in cui il valore 1 deriva dal fatto che il metodo `e stabile. Dalla disuguaglianza
sopra si ricava
kE n k ≤ (1 + kΛ)n kE 0 k +
(1 + kΛ)n − 1 p+1
ck
(1 + kΛ) − 1
116
CAPITOLO 18. METODI MULTISTEP
1010
k = 0.125
k = 0.250
k = 0.500
k = 0.625
soluzione esatta
msinstabile.m
108
106
104
102
1
0
1
2
3
4
5
t
Figura 18.1: Applicazione del metodo (18.7) al problema differenziale y ′ (t) =
y(t), y(0) = 1.
Il vettore E 0 contiene tutte le differenze dei valori iniziali y j − y(tj ), j =
0, 1, . . . , s − 1 che, anche se non nulle, sono di ordine k p . L’importante `e che
∗
(1 + kΛ)n ≤ et Λ (mentre invece, per esempio, (2 + kΛ)m = 2m (1 + kΛ/2)m =
∗
∗
2m (1 + t∗ Λ/(2m))m = 2m [(1 + 1/(2m/(t∗ Λ)))2m/(t Λ) ]t Λ/2 → ∞ per m → ∞,
cio`e k → 0). Ritornando al metodo (18.7), si ha che θ = 2 `e radice del
polinomio caratteristico e pertanto, il metodo non `e stabile, come si vede
anche in Figura 18.1 ove il metodo `e stato applicato al problema differenziale
(
y ′ (t) = y(t), t ∈(0, 5]
y(0) = 1
Come corollario al teorema precedente, abbiamo che ogni metodo ad un
passo `e stabile (perch´e ρ(w) = w − 1) e che i metodi di Adams–Bashforth
e Adams–Moulton sono stabili (perch´e ρ(w) = ws − ws−1 ). Esiste un limite
superiore per l’ordine di un metodo a s passi, dato dal seguente
Teorema 12 (Prima barriera di Dahlquist). Il massimo ordine per un metodo a s passi convergente `e 2⌊(s + 2)/2⌋ se implicito e s se esplicito.
Per quanto riguarda i metodi BDF (speciali metodi impliciti) si ha che
sono convergenti (cio`e sono stabili) solo per 1 ≤ s ≤ 6.
18.4. INFLUENZA DEGLI ERRORI DI ARROTONDAMENTO
18.4
117
Influenza degli errori di arrotondamento
Abbiamo visto che la stabilit`a (assieme alla consistenza) assicura che perturbazioni del tipo kδ n+s , n ≥ 0, permettono ad un metodo di convergere.
Tali perturbazioni si generano per approssimazione dei passi precedenti e, per
esempio, quando si risolve un sistema (non)lineare per un metodo implicito
e si chiede una tolleranza proporzionale a k p se il metodo `e di ordine p. Gli
errori di arrotondamento sono per`o di ordine O(1) ed `e del tutto evidente
che in aritmetica di macchina non si pu`o in generale pretendere di trovare
la soluzione esatta. Vediamo esplicitamente il caso del metodo di Eulero: si
avr`a
˜ n+1 = y˜ n + kf (tn , y˜ n ) + εn+1
y
e dunque, definito
˜n = y
˜ n − y(tn )
e
si ottiene
k˜
en+1 k ≤ (1 + kλ)k˜
en k + ck 2 + kεn+1 k,
c>0
da cui, per induzione,
k˜
en k ≤
ck 2 + ε
[(1 + kλ)n − 1] + (1 + kλ)n k˜
e0 k,
kλ
ove ε = max0≤n≤m kεn k e quindi
ε
ck
∗
t∗ λ
+
+ et λ k˜
e0 k,
k˜
en k ≤ (e − 1)
λ
kλ
0≤n≤m
0≤n≤m
Anche se non `e detto che gli errori di arrotondamento si sommino ad ogni
passo (potrebbero anche compensarsi in un certo qual modo), si vede che
al tendere di k a 0 l’errore potrebbe esplodere. Pertanto esisterebbe un
k ottimale (non eccessivamente piccolo) che minimizza l’errore globale del
metodo quando implementato in aritmetica di macchina.
Nel caso si usasse un metodo non stabile la situazione sarebbe ancora
peggiore, come si vede in Tabella 18.1, ove il metodo (18.7) `e stato applicato
al problema (18.9) avendo preso y0 = y1 = 1/3. Il problema nasce dal fatto
che y2 = 3y1 − 2y0 , a causa degli errori di arrotondamento, non `e uguale a y1
e y0 .
118
CAPITOLO 18. METODI MULTISTEP
y2
y3
y10
y20
y30
y40
y50
y60
y70
y80
y90
y100
3.333333333333334e-01
3.333333333333333e-01
3.333333333333051e-01
3.333333333042297e-01
3.333333035310111e-01
3.333028157552085e-01
3.020833333333335e-01
-3.166666666666666e+01
-3.276766666666667e+04
-3.355443166666666e+07
-3.435973836766667e+10
-3.518437208883166e+13
Tabella 18.1: Primi passi di risoluzione del problema test (18.9) con il
metodo (18.7).
Capitolo 19
Metodi di Runge–Kutta
19.1
Metodi di Runge–Kutta espliciti
I metodi lineari multistep lasciano aperti alcuni problemi. Come calcolare i
valori iniziali per i metodi di ordine elevato? Abbiamo visto che il massimo
ordine per un metodo ad un passo convergente `e 2 se implicito (lo raggiunge
` possibile modificarlo e renderlo esplicito (e
il solo metodo dei trapezi). E
dunque di pi`
u facile applicazione)? Si possono costruire metodi di ordine elevato e che permettano un passo temporale “adattabile” all’andamento della
soluzione? Cominciamo a rispondere alla seconda domanda: una modifica
abbastanza ovvia al metodo dei trapezi
k
y n+1 = y n + (f (tn , y n ) + f (tn+1 , y n+1 ))
2
per renderlo esplicito `e sostituire y n+1 con y n + kf (tn , y n ) cos`ı da avere
k
y n+1 = y n + (f (tn , y n ) + f (tn+1 , y n + kf (tn , y n ))
2
(19.1)
Da un punto di vista “logico”, esso pu`o essere definito come
ξ 1 = y n ≈ y(tn )
ξ 2 = y n + kf (tn , ξ 1 ) ≈ y(tn+1 )
k
y n+1 = y n + (f (tn , ξ 1 ) + f (tn+1 , ξ 2 )) ≈ y(tn+1 )
2
Un altro modo di rendere esplicito il metodo dei trapezi `e sostituire la media
delle funzioni f con la funzione f valutata nel “punto medio”
k
k
(19.2)
y n+1 = y n + kf tn + , y n + f (tn , y n )
2
2
119
120
CAPITOLO 19. METODI DI RUNGE-KUTTA
cio`e
ξ 1 = y n ≈ y(tn )
k
k
ξ 2 = y n + f (tn , ξ 1 ) ≈ y tn +
2
2
k
y n+1 = y n + kf tn + , ξ 2 ≈ y(tn+1 )
2
L’idea generale dei metodi espliciti di Runge–Kutta `e quella, come al solito,
di sostituire l’integrale nella formula risolutiva
y(tn+1 ) = y(tn ) +
Z
tn+1
f (τ, y(τ ))dτ
tn
con una formula di quadratura su nodi tn + cj k, 1 ≤ j ≤ ν nell’intervallo
[tn , tn+1 ]. Si giunge quindi a
y(tn+1 ) ≈ y(tn ) + k
ν
X
bj f (tn + cj k, y(tn + cj k))
j=1
Si tratta ora di trovare delle approssimazioni ξ j di y(tn + cj k). Si procede
iterativamente in questo modo

y(tn ) ≈ y n = ξ 1 (⇒ c1 = 0)





y(tn + c2 k) ≈ y n + c2 kf (tn , y n ) = y n + a2,1 kf (tn , ξ 1 ) = ξ 2




..


.





i−1

X

 y(t + c k) ≈ y + k

ai,j f (tn + cj k, ξ j ) = ξ i
n
i

n


j=1
..


.




ν−1

X



y(tn + cν k) ≈ y n + k
aν,j f (tn + cj k, ξ j ) = ξ ν




j=1



ν

X



y n+1 = y n + k
bj f (tn + cj k, ξ j )


(19.3)
j=1
ove i parametri cj , bj e ai,j sono da determinare in modo da ottenere l’ordine
desiderato. Il numero ν indica il numero di stadi. I parametri cj , bj e ai,j
si racchiudono di solito nel tableau di Butcher. Se ν = 1, ci si riconduce al
19.1. METODI DI RUNGE–KUTTA ESPLICITI
121
0
c2
c3
..
.
(0)
a2,1
a3,1
..
.
a3,2
..
.
...
cν−1
cν
aν−1,1
aν,1
aν−1,2
aν,2
...
...
aν−1,ν−2
aν,ν−2
aν,ν−1
b1
b2
...
bν−2
bν−1
bν
Tabella 19.1: Tableau di Butcher per metodi di Runge–Kutta espliciti.
metodo di Eulero. Per ν = 2, l’ordine si ricava al solito modo
y(tn+1 )−y(tn )−kb1 f (tn , y(tn ))−kb2 f (tn +c2 k, y(tn )+a2,1 kf (tn , y(tn ))) =
k2
= y(tn ) + ky ′ (tn ) + y ′′ (tn ) + O(k 3 ) − y(tn ) − kb1 y ′ (tn )+
2
∂f
∂f
′
2
(tn , y(tn ))c2 k +
(tn , y(tn ))a2,1 ky (tn ) + O(k ) =
−kb2 f (tn , y(tn )) +
∂t
∂y
k2
= ky ′ (tn ) + y ′′ (tn ) + O(k 3 ) − kb1 y ′ (tn ) − kb2 y ′ (tn )+
2
∂f
∂f
2
′
− kb2 (tn , y(tn ))c2 k − k a2,1 b2
(tn , y(tn ))y (tn ) =
∂t
∂y
k 2 ′′
′
= ky (tn ) + y (tn ) + O(k 3 ) − kb1 y ′ (tn ) − kb2 y ′ (tn )+
2
∂f
∂f
2
′′
− kb2 (tn , y(tn ))c2 k − k a2,1 b2 y (tn ) −
(tn , y(tn )) =
∂t
∂t
1
′
2
− a2,1 b2 y ′′ (tn )+
= k(1 − b1 − b2 )y (tn ) + k
2
∂f
− k 2 (b2 c2 − a2,1 b2 ) (tn , y(tn )) + O(k 3 )
∂t
Dunque l’ordine `e due se
0
1
0
0
1
2
1
1
2
1
2
1
2
0
2
3
1
2
3
1
4
3
4
Tabella 19.2: Metodi di Runge–Kutta espliciti di ordine 2.
122
CAPITOLO 19. METODI DI RUNGE-KUTTA

b1 + b2 = 1



1
(19.4)
a2,1 b2 =

2


b2 c2 = b2 a2,1
da cui, per esempio, i metodi di ordine due riportati in Tabella 19.2. I primi
due corrispondono ai due metodi visti all’inizio del capitolo e si chiamano,
rispettivamente, metodo di Heun e metodo di Eulero modificato. Da notare
come non esista, tra le infinite soluzioni, una soluzione che annulla il termine O(k 3 ) (bisognerebbe scriverlo esplicitamente per verificarlo). Lo si pu`o
verificare indirettamente, considerando l’equazione
(
y ′ (t) = y(t)
y(0) = 1
L’applicazione del metodo sopra porge


 ξ 1 = yn
ξ2 = yn + ka2,1 yn

y
2
n+1 = yn + kb1 ξ1 + kb2 ξ2 = yn + kb1 yn + kb2 yn + k b2 a2,1 yn
da cui, usando le condizioni d’ordine,
k2
yn
2
Sostituendo la soluzione analitica in questo schema, si ottiene
yn+1 = yn + kyn +
y(tn+1 ) − y(tn ) − ky(tn ) −
k2
k2
y(tn ) = ek y(tn ) − y(tn ) − ky(tn ) − y(tn ) =
2
2
3
k
= y(tn ) + O(k 4 )
6
e pertanto l’ordine `e 2.
Il punto cruciale del calcolo dell’ordine per ν = 2 `e l’uguaglianza tra
d
f (tn , y(tn )) =
dt
∂f
∂f
= y ′ (tn ) + k (tn , y(tn )) + k (tn , y(tn ))y ′ (tn )
∂t
∂y
y ′ (tn ) + ky ′′ (tn ) = y ′ (tn ) + k
e
f (tn + k, y(tn ) + kf (tn , y(tn ))) = f (tn , y(tn ))+
∂f
∂f
(tn , y(tn ))k +
(tn , y(tn ))kf (tn , y(tn )) + O(k 2 ) =
+
∂t
∂y
∂f
∂f
= y ′ (tn ) + k (tn , y(tn )) + k (tn , y(tn ))y ′ (tn ) + O(k 2 )
∂t
∂y
19.1. METODI DI RUNGE–KUTTA ESPLICITI
123
(a meno di O(k 2 )) in cui le derivate di ordine superiore di y (e quindi di f )
sono sostituite da funzioni di funzioni f .
Per ogni ν > 1, il corrispondente sistema non lineare che si ottiene per la
determinazione dell’ordine pu`o avere infinite soluzioni. Solitamente si impone
l’ulteriore vincolo (non strettamente necessario)
i−1
X
ai,j = ci ,
2≤i≤ν
j=1
che forza ξ i ad essere un’approssimazione almeno del primo ordine di y n . Da
notare che la condizione
ν
X
bj = 1
j=1
`e necessaria per avere almeno ordine 1 (cio`e la consistenza). Per quanto
riguarda la stabilit`a, si pu`o ripetere tutto il ragionamento fatto per il caso
dei metodi multistep: si arriva ad osservare che il polinomio caratteristico `e
ρ(w) = w − 1 e pertanto tutti i metodi di Runge–Kutta espliciti sono stabili.
Ne discende la convergenza. Per quanto riguarda il massimo ordine che si pu`o
raggiungere dato il numero di stadi ν, si ha quanto riportato in Tabella 19.3.
numero stadi ν
massimo ordine p
1
1
2
2
3
3
4
4
5
4
6
5
7
6
8
6
Tabella 19.3: Massimo ordine dei metodi di Runge–Kutta espliciti dato il
numero di stadi.
Il numero di stadi equivale al numero di valutazioni della funzione f (e
dunque al costo del metodo).
` possibile generalizzare i metodi espliciti di Runge–Kutta per ottenere
E
metodi semiimpliciti e impliciti, i cui tableaux sono riportati in Tabella 19.4.
Per tali metodi, l’ordine massimo raggiungibile dato il numero di stadi ν `e
p = 2ν. Anche per essi valgolo le condizioni
ν
X
ai,j = ci ,
j=1
e
ν
X
j=1
1≤i≤ν
bj = 1
124
CAPITOLO 19. METODI DI RUNGE-KUTTA
c1
c2
c3
..
.
a1,1
a2,1
a3,1
..
.
a2,2
a3,2
..
.
a3,3
...
...
cν−1
cν
aν−1,1
aν,1
aν−1,2
aν,2
...
...
aν−1,ν−2
aν,ν−2
aν−1,ν−1
aν,ν−1
aν,ν
b1
b2
...
bν−2
bν−1
bν
a1,1
a2,1
..
.
..
.
aν−1,1
aν,1
a1,2
a2,2
..
.
..
.
aν−1,2
aν,2
...
...
...
...
...
...
...
...
...
...
b1
b2
...
c1
c2
c3
..
.
cν−1
cν
...
...
a1,ν−1
a2,ν−1
..
.
..
.
aν−1,ν−1
aν,ν−1
a1,ν
a2,ν
..
.
..
.
aν−1,ν
aν,ν
...
bν−1
bν
Tabella 19.4: Tableaux di Butcher per i metodi di Runge–Kutta semiimpliciti
(sopra) e impliciti (sotto).
Lo schema generale di un metodo di Runge–Kutta si scrive dunque

j∗

X



ai,j f (tn + cj k, ξ j ),
ξ = yn + k

 i
j=1
ν

X



y
=
y
+
k
bj f (tn + cj k, ξ j )

n
 n+1
i = 1, . . . , ν
(19.5)
j=1
ove j ∗ = i − 1 per gli schemi espliciti, j ∗ = i per gli schemi semiimpliciti
e j ∗ = ν per gli schemi impliciti. Il guess iniziale per il calcolo di ξ i `e
generalmente y n .
` buona norma, dopo aver definito la matrice A e i vettori c e b del
E
tableau, controllare che queste condizioni siano soddisfatte, confrontando
sum(A,2) con c e sum(b) con 1, al fine di evitare banali errori. Ovviamente,
si tratta di condizioni necessarie ma non sufficienti per garantire la corretta
implementazione. Ai fini dell’implementazione dei metodi di Runge–Kutta,
per evitare di calcolare pi`
u volte la funzione f negli stessi punti, si pu`o usare
19.2. METODI DI RUNGE–KUTTA SEMIIMPLICITI
125
lo schema




 fi = f


∗
tn + ci k, y n + k
j
X
j=1
ν

X



bj f j

 y n+1 = y n + k
ai,j f j
!
,
i = 1, . . . , ν
j=1
Si ricava da (19.5) ponendo f j = f (tn + cj k, ξ j ) e osservando che f i =
P∗
f (tn + ci k, ξ i ) = f (tn + ci k, y n + k jj=1 ai,j f j ), i = 1, . . . , ν. In questo caso,
il guess iniziale per il calcolo di f i `e f (tn , y n ).
19.2
Due esempi di metodi di Runge–Kutta
semiimpliciti
Consideriamo il seguente metodo di Runge–Kutta (semi)implicito
k
k
ξ 1 = y n + f tn + , ξ 1
2
2
k
y n+1 = y n + kf tn + , ξ 1
2
di tableau
1
2
(19.6a)
(19.6b)
1
2
1
Esso equivale al metodo punto medio implicito
¯ n+1
k yn + y
¯ n+1 = y n + kf tn + ,
y
2
2
(19.7)
infatti, per quest’ultimo vale
¯ n+1
yn + y
k
= yn + f
2
2
¯ n+1
k y +y
tn + , n
2
2
¯ n+1 )/2 = ξ 1 e dunque (19.6b) coincide con (19.7).
da cui si deduce che (y n + y
`
E un metodo di ordine 2 (lo si dimostra a partire da (19.7) con passaggi molto
simili a quelli fatti per i metodi di Runge–Kutta espliciti di ordine 2) e in
qualche modo simile al metodo dei trapezi. Gode della seguente importante
propriet`a: se per
y ′ (t) = f (t, y(t))
126
CAPITOLO 19. METODI DI RUNGE-KUTTA
y(t)T y(t) `e costante per ogni t0 e y 0 allora per (19.7) vale y T
n+1 y n+1 =
T
y n y n . Prima di dimostrarlo, osserviamo che la condizione sopra significa
e xT f (t, x) = 0 per ogni t e ogni x.
y(t)T f (t, y(t)) = 0 = y T
0 f (t0 , y 0 ) cio`
Osserviamo infine che la propriet`a `e interessante quando y(t) `e un vettore di dimensione maggiore di uno, altrimenti deve essere f = 0 e dunque
banalmente y n+1 = y n . Osserviamo poi che
k y n + y n+1
y n+1 − y n = kf tn + ,
2
2
e quindi, posto x = (y n + y n+1 )/2,
y n + y n+1 T
y n + y n+1 T
k y n + y n+1
0=
=
kf tn + ,
(y n+1 − y n )
2
2
2
2
da cui la tesi.
3.3
Heun
trapezi
punto medio implicito
symplectic.m
y1 (t)2 + y2 (t)2 + y3 (t)2
3.2
3.1
3
2.9
2.8
0
20
40
60
t
80
100
120
Figura 19.1: Evoluzione di y1 (t)2 + y2 (t)2 + y3 (t)2 per il problema (19.8).
Consideriamo il seguente problema (equazioni di Eulero per il corpo rigido
libero):

I2 − I3

′

y2 (t)y3 (t)
y
(t)
=

1

I2 I3



I3 − I1
(19.8)
y2′ (t) =
y3 (t)y1 (t)

I3 I1




I − I2

 y3′ (t) = 1
y1 (t)y2 (t)
I1 I2
19.2. METODI DI RUNGE–KUTTA SEMIIMPLICITI
127
y rappresenta il momento angolare e I1 , I2 e I3 sono i momenti principali
d’inerzia. Evidentemente |y(t)|2 = y1 (t)2 + y2 (t)2 + y3 (t)2 `e costante. Proviamo a risolvere il sistema con i metodi punto medio implicito, trapezi e
Heun (tutti di ordine 2): l’integrazione fino al tempo t∗ = 120 con 300 passi
temporali (I1 = 2, I2 = 1, I3 = 2/3, y(0) = [1, 1, 1]T ) produce il grafico
in Figura 19.1, in cui si vede che il metodo punto medio implicito conserva
“esattamente” la quantit`a |y(t)|2 , a differenza dei metodi dei trapezi e di
Heun. Ovviamente bisogna tenere in conto che gli errori di approssimazione
(risoluzione del sistema non lineare) non garantiscono l’esatta uguaglianza
T
yT
n+1 y n+1 = y n y n anche per il metodo punto medio implicito. I tre metodi
testati sono dello stesso ordine, ma uno produce soluzioni “qualitativamente”
migliori.
Un metodo di Runge–Kutta di ordine tre `e quello di tableau
√
3+ 3
6
√
3− 3
6
√
3+ 3
6
√
− 33
1
2
0
√
3+ 3
6
(19.9)
1
2
` interessante perch´e ξ 1 e ξ 2 soddisfano
E
ξ 1 = y n + a1,1 kf (tn + c1 k, ξ 1 )
ξ 2 = y n + a2,1 kf (tn + c1 k, ξ 1 ) + a2,2 kf (tn + c2 k, ξ 2 )
con a1,1 = a2,2 . Dunque, gli jacobiani dei due sistemi da risolvere sono
∂f
= I − ka1,1 (tn + c1 k, x)
∂y
∂f
2
Jn (x) = I − ka1,1 (tn + c2 k, x)
∂y
Jn1 (x)
Spesso si usa l’approssimazione
Jn1 (x)
≈
Jn2 (x)
≈ Jn (y n ) =
∂f
I − ka1,1 (tn + (c1 + c2 )k/2, y n )
∂y
e quindi si risolvono entrambi i sistemi non lineari con un metodo di Newton
modificato con jacobiano costante e fattorizzato una volta e per tutte. I
metodi di Runge–Kutta semiimpliciti in cui il tableau ha diagonale costante
si dicono singolarmente (semi)impliciti (singly diagonally implicit).
128
CAPITOLO 19. METODI DI RUNGE-KUTTA
Anche il θ-metodo pu`o essere fatto rientrare nella classe dei metodi di
Runge–Kutta semiimpliciti:


 ξ1 = yn
ξ 2 = y n + k(1 − θ)f (tn , ξ 1 ) + kθf (tn + k, ξ 2 )


y n+1 = y n + k(1 − θ)f (tn , ξ 1 ) + kθf (tn + k, ξ 2 )
o, in forma implementativa (anche se non si usa in pratica),


 f 1 = f (tn , y n )
f 2 = f (tn + k, y n + k(1 − θ)f 1 + kθf 2 )


y n+1 = y n + k(1 − θ)f 1 + kθf 2
Dunque, abbiamo risposto anche alla prima domanda all’inizio di questo
capitolo. Vediamo ora come rispondere alla terza domanda.
19.3
Metodi di Runge–Kutta embedded
Per i metodi ad un passo risulta alquanto facile adottare un passo temporale
kn variabile nel tempo (non cos`ı con i multistep, in cui i parametri dipendono dall’avere assunto i passi temporali costanti). In generale, pi`
u l’equazione
ha un comportamento “lineare”, pi`
u i passi possono essere presi grandi. Ma
come adattare automaticamente il passo all’andamento della soluzione? Supponiamo di avere due metodi di Runge–Kutta espliciti di ordine p − 1 e p
` chiaro che,
rispettivamente, i cui tableaux sono riportati in Tabella 19.5. E
dopo aver costruito il primo metodo, con una sola nuova valutazione della
funzione f si pu`o costruire il secondo metodo. Una tale coppia di metodi si
dice embedded e si scrive di solito un unico tableau, come nella Tabella 19.6.
Il fatto che per trovare metodi di Runge–Kutta sia necessario risolvere sistemi non lineari per i coefficienti, rende difficile ma non impossibile trovare
coppie di metodi con tali caratteristiche.
Consideriamo il sistema differenziale
( ′
˜ (t) = f (t, y
˜ (t))
y
˜ (tn ) = y (p)
y
n
(p)
ove y n `e l’approssimazione di y(tn ) ottenuta con il metodo di Runge–Kutta
di ordine p. Si ha allora
(p)
(p−1)
(p)
(p−1)
p
ky n+1 − y n+1 k = ky n+1 − y˜ (tn+1 ) + y˜ (tn+1 ) − y n+1 k ≤ Cn+1 kn+1
, (19.10)
19.3. METODI DI RUNGE-KUTTA EMBEDDED
0
c2
c3
..
.
cν−1
0
c2
c3
..
.
cν−1
cν
a2,1
a3,1
..
.
a3,2
..
.
...
aν−1,1
b1
aν−1,2
b2
...
...
a2,1
a3,1
..
.
a3,2
..
.
aν−1,1
aν,1
ˆb1
aν−1,2
aν,2
ˆb2
aν−1,ν−2
bν−2
129
bν−1
...
...
...
...
aν−1,ν−2
aν,ν−2
ˆbν−2
aν,ν−1
ˆbν−1
ˆbν
Tabella 19.5: Metodi di Runge–Kutta di ordine p − 1 e p.
0
c2
c3
..
.
cν
a2,1
a3,1
..
.
a32
..
.
aν,1
b1
ˆb1
aν,2
b2
ˆb2
...
...
...
...
aν,ν−1
bν−1
ˆbν−1
ˆbν
Tabella 19.6: Metodi di Runge–Kutta embedded di ordine p − 1 e p.
per un opportuno Cn+1 > 0, ove kn+1 = tn+1 − tn `e il passo di integrazione e
p
O(kn+1
) `e l’errore locale del metodo di ordine p − 1. Se si vuole controllare
tale errore si pu`o allora richiedere, ad ogni passo, che
(p)
(p−1)
(p−1)
ky n+1 − y n+1 k ≤ tola + ky n+1 k · tolr
(p)
(19.11)
(p−1)
Se la disuguaglianza non `e soddisfatta, si rifiuta y n+1 (e y n+1 ) e si calcola un
nuovo passo di integrazione k˜n+1 minore di kn+1 . Per fare questo, si suppone
che valga
(p)
(p−1)
p
ky n+1,kn+1 − y n+1,kn+1 k = Cn+1 kn+1
(p)
ky n+1,k˜
n+1
(p−1)
− y n+1,k˜
n+1
p
p
k = C˜n+1 k˜n+1
= Cn+1 k˜n+1
p
(cio`e C˜n+1 = Cn+1 ) e si impone che l’errore C˜n+1 k˜n+1
valga proprio quanto
130
CAPITOLO 19. METODI DI RUNGE-KUTTA
la tolleranza richiesta, ricavando
(p−1)
tola + ky n+1,kn+1 k · tolr
C˜n+1
k˜n+1 =
!1/p
(p−1)
=
tola + ky n+1,kn+1 k · tolr
(p)
(p−1)
ky n+1,kn+1 − y n+1,kn+1 k
!1/p
· kn+1
Se invece la disuguaglianza (19.11) `e soddisfatta, si accetta il passo corrente
e per il successivo si suppone che valga
(p)
(p−1)
(p)
(p−1)
p
ky n+1,kn+1 − y n+1,kn+1 k = Cn+1 kn+1
p
p
ky n+2,kn+2 − y n+2,kn+2 k = Cn+2 kn+2
= Cn+1 kn+2
p
(cio`e Cn+2 = Cn+1 ) e, di nuovo, si impone che l’errore successivo Cn+2 kn+2
valga quanto la tolleranza richiesta, ricavando
!1/p
!1/p
(p−1)
(p−1)
tola + ky n+1,kn+1 k · tolr
tola + ky n+1,kn+1 k · tolr
kn+2 =
=
· kn+1
(p−1)
(p)
Cn+2
ky n+1,kn+1 − y n+1,kn+1 k
Evidentemente si `e supposto anche che, se i passi non sono molto diversi
(p−1)
(p−1)
(p−1)
tra loro, ky n+1,kn+1 k = ky n+1,k˜ k = ky n+2,kn+2 k. L’espressione trovata `e la
n+1
stessa. Per evitare che il passo di integrazione cambi troppo bruscamente, si
pu`o adottare una correzione del tipo


!1/p 
(p−1)
tola + ky n+1 k · tolr
 · kn+1
min 2, max 0.6, 0.9 ·
(p−1)
(p)
ky n+1 − y n+1 k
Vediamo un esempio facile di costruzione di metodi di Runge–Kutta embedded. Innanzitutto, osserviamo che qualunque metodo di Runge–Kutta
(in, particolare, quelli di ordine due) richiede la valutazione di f 1 = f (tn , y n )
che `e praticamente tutto ci`o che serve per il metodo di Runge–Kutta di ordine uno, cio`e il metodo di Eulero. Quindi, qualunque metodo di Runge–Kutta
di ordine due di tableau
0
c2 a2,1
ˆb1 ˆb2
pu`o essere implementato a passo variabile secondo lo schema (da tn a tn+1 )
• f 1 = f (tn , y n )
(1)
(2)
• y n+1 = y n + kn+1 f 1 (metodo di Eulero)
19.3. METODI DI RUNGE-KUTTA EMBEDDED
131
• f 2 = f (tn + c2 kn+1 , y n + a2,1 kn+1 f 1 )
(2−1)
• en+1 = kn+1 [(ˆb1 − 1)f 1 + ˆb2 f 2 ]
(2−1)
(1)
• IF ken+1 k > tola + ky n+1 ktolr
n = n − 1 (time step rifiutato)
ELSE
(2)
(1)
(2−1)
y n+1 = y n+1 + en+1
END
i1/2
h
(2−1)
(1)
· kn+1
• kn+2 = (tola + ky n+1 k · tolr )/ken+1 k
• n=n+1
0
1
4
3
8
12
13
1
1
2
1
4
3
32
1932
2197
439
216
8
− 27
9
32
− 7200
2197
−8
7296
2197
3680
513
3544
− 2565
845
− 4104
1859
4104
− 11
40
25
216
0
1408
2565
2197
4104
− 15
16
135
0
6656
12825
28561
56430
9
− 50
2
2
55
Tabella 19.7: Metodo di Runge–Kutta–Fehlberg.
Forse il pi`
u importante metodo di Runge–Kutta embedded `e il Runge–
Kutta–Fehlberg, di ordine (4)5, il cui tableau `e riportato in Tabella 19.7.
Capitolo 20
A-stabilit`
a
Purtroppo la consistenza e la stabilit`a di un metodo non sono sufficienti
per avere un buon solutore di qualunque equazione differenziale ordinaria.
Consideriamo infatti il seguente problema lineare
(
y ′ (t) = λy(t) t > t0
(20.1)
y(t0 ) = y0
La soluzione esatta y(t) = eλ(t−t0 ) y0 tende a zero per t → +∞ quando ℜ(λ) <
0. Analizziamo il comportamento del metodo di Eulero per questo problema,
supponendo di avere fissato il passo temporale k (e dunque tn = t0 + nk): si
ha
yn+1 = yn + kλyn = (1 + kλ)yn
da cui
yn = (1 + kλ)n y0
Si ha
lim yn = 0 ⇔ |1 + kλ| < 1 ⇔ 1 + k 2 ℜ(λ)2 + 2kℜ(λ) + k 2 ℑ(λ)2 < 1
n→∞
da cui
lim yn = 0 ⇔ k < −
n→∞
2ℜ(λ)
|λ|2
(20.2)
Dunque, la soluzione numerica ottenuta con il metodo di Eulero ha lo stesso
comportamento della soluzione analitica solo se il passo temporale `e sufficientemente piccolo. Altrimenti, la soluzione pu`o essere completamente diversa
(limn→∞ |yn | = |y0 | o limn→∞ yn = ∞). Nel caso di Eulero implicito, invece,
si ha
n
1
yn =
y0
1 − kλ
132
133
da cui
lim yn = 0 ⇔ |1 − kλ| > 1 ⇔ |1 − kℜ(λ) − kiℑ(λ)| > 1
n→∞
disuguaglianza sempre soddisfatta, poich´e ℜ(λ) < 0. Anche per il metodo dei
trapezi la soluzione numerica tende a 0 per n → ∞. Ma non `e vero, in generale, per qualunque metodo implicito. Analizziamo infatti il comportamento
generale del θ-metodo per questo problema: si ha
yn+1 = yn + (1 − θ)kλyn + θkλyn+1
da cui
1 + (1 − θ)kλ
yn =
1 − θkλ
Si ha
n
y0
1 + (1 − θ)kλ < 1 ⇔ |1 + (1 − θ)kλ| < |1 − θkλ| ⇔
lim yn = 0 ⇔ n→∞
1 − θkλ 0 < (θ2 − (1 − θ)2 )k 2 ℜ(λ)2 − (2θ + 2(1 − θ))kℜ(λ) + (θ2 − (1 − θ)2 )k 2 ℑ(λ)2
da cui
lim yn = 0 ⇔ 0 < (2θ − 1)k 2 |λ|2 − 2kℜ(λ)
n→∞
Se 2θ − 1 ≥ 0, certamente la disequazione `e soddisfatta. Altrimenti,
lim yn = 0 ⇔ k <
n→∞
2ℜ(λ)
,
(2θ − 1)|λ|2
(2θ − 1 < 0)
(20.3)
Definizione 5. Dato un metodo numerico y n+1 = Y n (f , k, y 0 , . . . , y n ), la
regione di assoluta stabilit`a (o linear stability domain) `e l’insieme dei numeri
z = kλ per cui la soluzione di (20.1) soddisfa limn→∞ y n = 0.
Con riferimento al θ-metodo, la regione di assoluta stabilit`a del metodo di
Eulero `e {z ∈ C : |1+z| < 1}, per Eulero implicito `e {z ∈ C : |1−z| > 1} e per
il metodo dei trapezi `e {z ∈ C : ℜ(z) < 0}. Diremo che un metodo `e A-stabile
se la sua regione di assoluta stabilit`a contiene C− = {z ∈ C : ℜ(z) < 0},
cio`e se riproduce correttamente il comportamento della soluzione analitica di
(20.1) quando ℜ(λ) < 0. Da notare che, indicato con r(kλ) il termine (che
dovrebbe essere in modulo minore di 1)
1 + (1 − θ)kλ
r(kλ) =
1 − θkλ
`
CAPITOLO 20. A-STABILITA
134
4
4
4
2
2
2
0
0
0
-2
-2
-2
-4
-4
-4
-4
-2
0
2
4
-4
-2
0
2
4
-4
-2
0
2
4
Figura 20.1: Regioni di assoluta stabilit`a (bianche) per i metodi di Eulero,
Eulero implicito e trapezi.
si ha
θ − 1
lim |r(kλ)| = kℜ(λ)→−∞
θ Tale limite vale proprio 1 per θ = 1/2. Significa che se ℜ(λ) ≪ 0 oppure k ≫
0 il metodo dei trapezi potrebbe mostrare qualche problema di instabilit`a. In
tal caso, il metodo migliore, da questo punto di vista, `e il metodo di Eulero
implicito (θ = 1). In Figura 20.2 vediamo l’applicazione dei due metodi al
problema
(
y ′ (t) = −2000(y − cos t), t ≤ 1.5
(20.4)
y(0) = 0
Se
lim
|r(kλ)| = 0
kℜ(λ)→−∞
diremo che il metodo `e L-stabile.
Per inciso, se λ `e puramente immaginario λ = δi, |yn | → +∞ per Eulero,
|yn | → 0 per Eulero implicito e |yn | = 1 = |y(tn )| per il metodo dei trapezi.
20.1
A-stabilit`
a dei metodi di Runge–Kutta
espliciti
Teorema 13. Per un metodo di Runge–Kutta esplicito a ν stadi, si ha
yn+1 = r(kλ)yn ⇒ yn = r(kλ)n y0
con r(kλ) polinomio di grado ν in z = kλ. Inoltre, se l’ordine p `e uguale al
numero di stadi ν, si ha
z2
zp
r(z) = 1 + z +
+ ... +
2!
p!
` DEI METODI DI RUNGE-KUTTA ESPLICITI 135
20.1. A-STABILITA
2
Trapezi
Eulero implicito
Lstability.m
1.5
y(t)
1
0.5
0
-0.5
0
0.5
1
t
1.5
2
Figura 20.2: Metodi dei trapezi e di Eulero implicito per la soluzione di (20.4)
con k = 1.5/40.
4
4
4
2
2
2
0
0
0
-2
-2
-2
-4
-4
-4
-2
0
2
4
-4
-4
-2
0
2
4
-4
-2
0
2
4
Figura 20.3: Regioni di assoluta stabilit`a (bianche) per i metodi di Runge–
Kutta di ordine p = 2 (ν = 2), p = 3 (ν = 3) e p = 4 (ν = 4).
Dimostrazione. Si ha che ξ1 = yn `e un polinomio di grado 0 in z. Supponiamo
che ξj sia un polinomio pj−1 (z)yn di grado j −1 in z = kλ per j = 2, 3, . . . , ν −
1: allora
ξ ν = yn + k
ν−1
X
aν,j λξj = yn + kλ
j=1
ν−1
X
aν,j ξj = pν−1 (z)yn
j=1
`e un polinomio di grado ν − 1 in z. Quindi
yn+1 = yn + kλ
ν
X
j=1
bj ξj = r(kλ)yn
`
CAPITOLO 20. A-STABILITA
136
e dunque r(kλ) `e un polinomio di grado ν in z = kλ. Poi, se l’ordine del
metodo `e p, significa che
y1 − y(t0 + k) = r(kλ)y0 − y(t0 + k) = O(k p+1 )
Ma y(t0 + k) = ekλ y0 . Quindi r(kλ) − ekλ = O(k p+1 ) e dunque, l’unica
possibilit`a per il polinomio di grado p r(kλ) `e
zp
z2
+ ... +
r(kλ) = r(z) = 1 + z +
2!
p!
Dunque, i metodi di Runge–Kutta di ordine p uguale al numero di stadi
ν hanno tutti la stessa regione di stabilit`a. In ogni caso, la dimostrazione
qui sopra mostra che per un metodo di Runge–Kutta esplicito r(z) `e un
polinomio di grado ν (e dunque di grado maggiore di 0).
Teorema 14. Nessun metodo di Runge–Kutta esplicito `e A-stabile.
Dimostrazione. Si ha
lim yn = 0 ⇔ |r(z)| < 1,
n→∞
z = kλ
ma r(z) `e un polinomio di grado maggiore di 0. Dunque, limx→−∞ r(x) = ∞,
x reale. Quindi, certamente esiste z ∈ C− ∩ R tale che |r(z)| > 1 e dunque
la regione di assoluta stabilit`a non contiene C− .
Per quanto riguarda la regione di assoluta stabilit`a dei due metodi di
Runge–Kutta implicito che conosciamo, cio`e il metodo del punto medio implicito (19.7) e il metodo singolarmente semiimplicito (19.9), osserviamo che
il primo coincide, per problemi lineari, con il metodo dei trapezi. Pertanto,
ha la stessa regione di assoluta stabilit`a. Il secondo `e anch’esso A-stabile
(vedi Appendice A.6).
20.2
A-stabilit`
a dei metodi lineari multistep
Ci limitiamo a riportare alcuni risultati.
Teorema 15. Nessun metodo esplicito multistep `e A-stabile.
Teorema 16. I metodi BDF ad un passo (Eulero implicito) e a due passi
sono A-stabili.
Teorema 17 (Seconda barriera di Dahlquist). L’ordine pi`
u alto che un
metodo multistep A-stabile pu`
o raggiungere `e due.
20.3. EQUAZIONI STIFF
20.3
137
Equazioni stiff
Se consideriamo il problema
(
y ′ (t) = −100y(t), t > 0
y(0) = 1
la condizione (20.3) per il metodo di Eulero impone k < 1/50 = 0.02. D’altra
parte, la soluzione analitica del problema per t∗ = 0.4 `e minore di 10−17 (e
dunque, trascurabile, nel senso che y(0) − y(t∗ ) = y(0), in precisione doppia).
Dunque, con poco pi`
u di 20 passi il metodo di Eulero arriva a calcolare
adeguatamente la soluzione sino a t∗ .
10300
Eulero espliito
Eulero impliito
stiff.m
10250
errore in norma innito
10200
10150
10100
1050
100
k < 2/100
10−50
500
1000
2000 2500
m
Figura 20.4: Eulero esplicito e Eulero implicito per la soluzione di (20.5) fino
al tempo t∗ = 40.
Qual `e dunque il problema? Eccolo:

−100
0
′


y(t), t > 0
 y (t) =
0 −1


 y(0) = 1
1
La soluzione analitica `e
e−100t
y(t) =
e−t
(20.5)
`
CAPITOLO 20. A-STABILITA
138
e la sua norma infinito `e minore di 10−17 per t∗ = 40. Poich´e per`o per poter
calcolare la prima componente serve un passo temporale k < 0.02, sono necessari pi`
u di 2000 passi (vedi Figura 20.4), anche se la prima componente
diventa trascurabile dopo pochi passi e la seconda non richiederebbe un cos`ı
elevato numero di passi. Dunque, anche se il metodo `e convergente e il passo,
per esempio, k = 0.1 garantisce un errore locale proporzionale a k 2 = 0.01, il
metodo di Eulero non pu`o essere usato con tale passo. Usando il metodo di
Eulero implicito sarebbe possibile invece usare un passo piccolo all’inizio e
poi, quando ormai la prima componente `e trascurabile, si potrebbe incrementare il passo, senza pericolo di esplosione della soluzione. Per questo semplice
problema, sarebbe possibile calcolare le due componenti separatamente. Nel
caso generale, per`o, il sistema non `e disaccoppiato. Per l’analisi, ci si pu`o
ricondurre, eventualmente in maniera approssimata, ad uno disaccoppiato e
ragionare per componenti. Infatti, se A `e una matrice diagonalizzabile,
y ′ (t) = Ay(t) ⇔ z ′ (t) = Dz(t) ⇔ z(t) = exp(tD)z 0
ove AV = V D, D = diag{λ1 , λ2 , . . . , λd }, e y(t) = V z(t). Poi
y ′ (t) = Ay(t) + b ⇔ z ′ (t) = Dz(t) + V −1 b ⇔
⇔ z(t) = z 0 + tϕ1 (tD)(Dz 0 + V −1 b)
ove
 λ
e − 1
ϕ1 (λ) =
λ
1
se λ 6= 0
se λ = 0
Infine (considerando un problema autonomo per semplicit`a e sviluppando in
serie di Taylor)
y ′ (t) = f (y(t)) ⇔ y ′ (t) ≈ f (y n ) + Jn (y n )(y(t) − y n )
ove Jn `e la matrice jacobiana
Jn (y n ) =
∂f
(y )
∂y n
e, se Jn `e diagonalizzabile, ci si riconduce al caso precedente. Dunque, si ha
sempre a che fare con gli autovalori di Jn (nel caso Jn non sia diagonalizzabile,
si ragiona in maniera equivalente con blocchi di Jordan) e il pi`
u piccolo di
questi `e quello che determina la restrizione massima sul passo temporale.
Definizione 6. Un sistema di ODEs (16.1) si dice stiff in un intorno di tn
se esiste almeno una coppia di autovalori λ1 , λ2 della matrice jacobiana Jn
tali che
20.3. EQUAZIONI STIFF
139
• ℜ(λ1 ) < 0, ℜ(λ2 ) < 0
• ℜ(λ1 ) ≪ ℜ(λ2 )
In pratica, pu`o essere molto difficile capire se un sistema non lineare
presenta regioni di stiffness o meno. Altrettanto difficile `e rispondere alla
domanda: per un problema stiff, conviene usare un metodo esplicito con
` chiaro che il metodo esplicito `e di
passo piccolo o un metodo implicito? E
facile implementazione e applicazione, ma richiede molti passi temporali (e
vedi 18.4). Il metodo implicito richiede la soluzione ad ognuno dei “pochi”
passi di un sistema, in generale, non lineare.
20.3.1
Risoluzione di un metodo implicito per problemi stiff
Consideriamo, per semplicit`a, il problema
y ′ (t) = Ay(t)
con A stiff e simmetrica. La restrizione sul passo per il metodo di Eulero
esplicito `e
2
k<
ρmax
ove ρmax `e il raggio spettrale di A. Applicando il metodo di Eulero implicito
e le iterazioni di punto fisso per risolvere l’equazione (per assurdo, poich´e
l’equazione da risolvere `e lineare), siccome
kAx − Ayk2 ≤ kAk2 kx − yk2 = ρmax kx − yk2
si avrebbe la restrizione (vedi (17.6))
k<
1
ρmax
dunque una restrizione ancora pi`
u severa.
Da questo esempio si deduce che i metodi impliciti per problemi stiff
vanno risolti con il metodo di Newton (eventualmente modificato).
Capitolo 21
Integratori esponenziali
I problemi di assoluta stabilit`a per semplici problemi lineari visti nel capitolo
precedente, portano alla ricerca di nuovi metodi. Consideriamo il sistema
differenziale
(
y ′ (t) = Ay(t) + b, t > 0
y(t0 ) = y 0
La soluzione analitica `e
y(t) = exp((t − t0 )A)y 0 + (t − t0 )ϕ1 ((t − t0 )A)b =
= y 0 + (t − t0 )ϕ1 ((t − t0 )A)(Ay 0 + b)
Infatti y(t0 ) = y 0 e, osservando che
d
[(t − t0 )ϕ1 ((t − t0 )A)b] = exp((t − t0 )A)b = (t − t0 )Aϕ1 ((t − t0 )A)b + b
dt
si ha
y ′ (t) = A exp((t − t0 )A)y 0 + exp((t − t0 )A)b =
= A[exp((t − t0 )A)y 0 + (t − t0 )ϕ1 ((t − t0 )A)b] + b
= Ay(t) + b
Le funzioni exp e ϕ1 di matrice possono essere approssimate come visto al
paragrafo 8. Da questa osservazione, per un problema
(
y ′ (t) = Ay(t) + b(t, y(t)), t > 0
y(t0 ) = y 0
il metodo Eulero esponenziale `e
y n+1 = exp(kA)y n + kϕ1 (kA)b(tn , y n ) = y n + kϕ1 (kA)(Ay n + b(tn , y n ))
140
141
Proposizione 6. Il metodo di Eulero esponenziale `e esatto se b(y(t)) =
b(y 0 ) ≡ b e di ordine uno altrimenti.
Dimostrazione. Si ha
y n+1 = exp(kA)y n +
Z
tn+1
exp((tn+1 − τ )A)b(tn , y n )dτ
tn
Come al solito, inseriamo la soluzione analitica nello schema al posto della soluzione numerica. Ponendo g(t) = b(t, y(t)) e usando la formula di
variazioni delle costanti (8.2)
y(tn+1 ) − exp(kA)y(tn ) −
= exp(kA)y(tn ) +
Z
tn+1
t
Z ntn+1
t
Z ntn+1
exp((tn+1 − τ )A)g(tn )dτ =
exp((tn+1 − τ )A)g(τ )dτ +
exp((tn+1 − τ )A)g(tn )dτ =
− exp(kA)y(tn ) −
tn
Z tn+1
=
exp((tn+1 − τ )A)(g(tn ) + g ′ (τn )(τ − tn ) − g(tn ))dτ =
tn
2
= k ϕ2 (kA)g ′ (τn ) = O(k 2 )
Si pu`o inoltre dimostrare che il metodo converge (cio`e `e stabile). Poich´e
risolve esattamente i problemi lineari, il metodo `e A-stabile e la sua regione
di assoluta stabilit`a `e
|r(z)| = |ez | < 1
e dunque C− .
Proposizione 7. Per un problema lineare, non autonomo
(
y ′ (t) = Ay(t) + b(t), t > 0
y(t0 ) = y 0
il metodo esponenziale—punto medio
y n+1 = exp(kA)y n + kϕ1 (kA)b(tn + k/2) = y n + kϕ1 (kA)(Ay n + b(tn + k/2))
`e esatto se b(t) ≡ b e di ordine 2 altrimenti.
142
CAPITOLO 21. INTEGRATORI ESPONENZIALI
Dimostrazione. Procedendo come sopra, si arriva a
Z tn+1
y(tn+1 ) − exp(kA)y(tn ) −
exp((tn+1 − τ )A)b(tn + k/2)dτ =
tn
Z tn+1
=
exp((tn+1 − τ )A)b′ (τn + k/2)(τ − (tn + k/2))dτ =
t
Z ntn+1
=
exp((tn+1 − τ )A)b′ (τn + k/2)(τ − tn − k/2)dτ =
tn
= (k 2 ϕ2 (kA) − k 2 /2ϕ1 (kA))b′ (τn + k/2) =
2
k2I
k3A
k I k3A
4
4
+
+ O(k ) −
−
+ O(k ) b′ (τn + k/2) =
=
2
6
2
2
= O(k 3 )
Anche in questo caso si pu`o dimostrare che il metodo converge e che `e
A-stabile. Dato un problema differenziale in forma autonoma
(
y ′ (t) = f (y(t)), t > t0
y(t0 ) = y 0
si pu`o pensare di linearizzarlo ad ogni passo
y ′ (t) = Jn y(t) + bn (y(t))
ove
∂f
(y ), bn (y(t)) = f (y(t)) − Jn y(t)
∂y n
e applicarvi il metodo di Eulero esponenziale. Si arriva cos`ı al metodo di
Eulero–Rosenbrock esponenziale
Jn =
y n+1 = exp(kJn )y n + kϕ1 (kJn )bn (y n ) = y n + kϕ1 (kJn )f (y n )
Il metodo `e di ordine 2 e convergente. Esso richiede di valutare la funzione
di matrice ϕ1 (kJn ) ad ogni passo temporale.
Gli integratori esponenziali sono particolarmente utili per la risoluzione di
problemi stiff (essendo A-stabili). Conviene usare un metodo implicito o un
metodo esponenziale? Nel primo caso, `e necessario risolvere sistemi lineari,
nel secondo calcolare funzioni di matrici. Per problemi di grosse dimensioni,
non `e per niente ovvio quale sia la strategia migliore. In generale, per matrici
sparse senza struttura `e pi`
u semplice calcolare funzioni di matrici, che non
richiedono l’uso di precondizionatori efficaci.
Capitolo 22
Esercizi
1. Si consideri il seguente problema differenziale del secondo ordine ai
limiti
 ′′

 u (x) − 3 cos(u(x)) = 0, x ∈ (0, 1)
u(0) = 0


u(1) = 1
Lo si trasformi in un sistema del primo ordine (t = x, y1 (t) = u(x),
y2 (t) = u′ (x)) da risolvere con il metodo di Eulero esplicito e si determini, con una opportuna strategia, quale dovrebbe essere il valore
iniziale y2 (0) affinch´e y1 (t) = u(x) sia soluzione del problema originale.
2. Con riferimento alla Figura 22.1, l’equazione del pendolo `e
 ′′

 lϑ (t) = −g sin ϑ(t)
ϑ(0) = ϑ0

 ϑ′ (0) = 0
p
La si risolva con il metodo dei trapezi fino al tempo t∗ = π l/g (assumendo l = 1, ϑ0 = π/4). Si confronti la traiettoria con quella del
pendolo linearizzato (sin ϑ(t) ≈ ϑ(t)). Di quest’ultimo, si trovi il numero minimo di passi temporali affinch´e il metodo di Eulero esplicito
produca una soluzione al tempo t∗ che dista da ϑ(t∗ ) meno di 10−2 .
3. Si calcoli y(1), ove y ′ (t) = Ay(t), y(0) = [1, . . . , 1]T , con A data da A
= 100*toeplitz(sparse([1,1],[1,2],[-2,1],1,10)), usando il θmetodo con θ = 0, 1/2, 1 e diversi passi temporali k = 2−3 , 2−4 , . . . , 2−8 .
Si confrontino i risultati con la soluzione di riferimento ottenuta usando
θ = 1/2 e k = 2−10 , mettendo in evidenza l’ordine del metodo usato.
Si provi anche il valore θ = 1/3, discutendo i risultati ottenuti.
143
144
CAPITOLO 22. ESERCIZI
ϑ0
l
ϑ(t)
m
g
Figura 22.1: Pendolo
4. Si risolva il sistema di ODEs
 ′

 A (t) = −2a(t)A(t)
a′ (t) = A(t)2 + Ω(t)2 − a(t)2 − 1

 Ω′ (t) = −2(a(t) + A(t))Ω(t)
con dato iniziale
(22.1)


 A(0) = 0.5
a(0) = 2

 Ω(0) = 10
con il metodo di Eulero implicito fino ad un tempo finale t∗ = 15, producendo un grafico della quantit`a E(t) = (A(t)2 + a(t)2 + Ω(t)2 +
1)/(2A(t)). Si confrontino le soluzioni ottenute usando 300 o 900
timesteps.
5. Si implementi il metodo di Eulero modificato (secondo tableau in Tabella 19.2) e lo si testi per il sistema differenziale (22.1), producendo il
grafico della quantit`a E(t).
6. Si implementino gli altri due metodi di ordine 2 in Tabella 19.2, li si
testi per il sistema differenziale (22.1), mettendone in evidenza l’ordine.
145
0
1
2
1
2
1
1
2
1
2
0
0
0
1
1
6
1
3
1
3
1
6
Tabella 22.1: Metodo di Runge–Kutta a 4 stadi.
7. Si implementi il metodo di Runge–Kutta di tableau in Tabella 22.1,
determinandone numericamente l’ordine.
8. Si implementi la function relativa ad un generico metodo di Runge–
Kutta esplicito con tableau dato da
c
A
bT
ove c, A e b sono dati.
9. Si implementi il metodo di Runge–Kutta (embedded) di tableau
0
1
2
1
1
2
−1
2
0
1
1
6
2
3
1
6
e lo si applichi al problema differenziale 22.1.
10. Si implementi il metodo di Runge–Kutta–Fehlberg il cui tableau `e riportato nella Tabella 19.7, e se ne mostri l’ordine. Lo si testi sul sistema
differenziale (22.1).
11. Si consideri il problema differenziale
( ′
y (t) = Ay(t) + y(t)2 ,
t>0
p
p
T
y(0) = [ (2)/2, 1, (2)/2]
ove

−2 1
0
A = 16  1 −2 1 
0
1 −2

146
CAPITOLO 22. ESERCIZI
e lo si risolva fino al tempo t∗ = 1 con i metodi di Eulero esplicito,
Eulero implicito ed Eulero esponenziale, con diversi passi temporali.
Parte 3
PDEs
(Equazioni alle derivate
parziali)
147
Capitolo 23
Equazioni di
trasporto-diffusione-reazione
Ci occuperemo in questo capitolo delle equazioni di trasporto-diffusionereazione (advection-diffusion-reaction, ADR).
23.1
Equazione del calore con dati iniziali e
condizioni ai bordi
Consideriamo la seguente equazione alle derivate parziali

∂ 2u
∂u


 ∂t (t, x) = ∂x2 (t, x), t > 0, x ∈ (0, L)
 u(t, 0) = u(t, L) = 0, t > 0 (condizioni ai bordi)


u(0, x) = u0 (x),
x ∈ (0, L) (condizioni iniziali)
(23.1)
Supponiamo che u0 (x) verifichi le condizioni di compatibilit`
a u0 (a) = u0 (b) =
0. Tale equazione rappresenta, per esempio, l’andamento della temperatura
u su una barra di lunghezza L, i cui estremi sono tenuti a temperatura zero,
e con una distribuzione iniziale di temperatura u0 (x).
23.1.1
Esistenza di una soluzione
Cerchiamo una soluzione a variabili separabili
u(t, x) = ψ(t)φ(x)
Inserendo tale rappresentazione in (23.1), si deduce
ψ ′ (t)φ(x) = ψ(t)φ′′ (x),
148
t > 0, x ∈ (0, L)
23.1. EQUAZIONE DEL CALORE
da cui
149
ψ ′ (t)
= −K (costante) ⇒ ψ(t) = Ae−Kt
ψ(t)
Per quanto riguarda φ(x), la soluzione generale `e
φ(x) = Be
√
−Kx
+ Ce−
√
−Kx
Imponendo le condizioni al bordo
0 = φ(0) = B + C
0 = φ(L) = Be
√
√
−KL
+ Ce−
√
−KL
√
√
√
= B e −KL − e− −KL
Se K < 0, allora e −KL − e− −KL > 0 e dunque B = 0 (e anche C). Quindi
φ(x) = 0, ma in tal caso ψ(0)φ(x) 6= u0 (x). Se invece K = 0, allora ancora
φ(x) = B + C = 0. Se invece K = λ2 > 0, λ > 0, allora
φ(x) = B eiλx − e−iλx = 2Bi sin(λx) = B sin(λx)
(avendo ridefinito B) e poich´e φ(L) = 0, l’unica possibilit`a non banale `e
λ = jπ/L, j numero naturale non nullo. Pertanto, la funzione
2 2 jπ
j π
x
uj (t, x) = exp − 2 t sin
L
L
`e soluzione dell’equazione del calore (e soddisfa le condizioni ai bordi) per
ogni j. Quindi, la seguente serie
u(t, x) =
∞
X
cj uj (t, x)
j=1
`e soluzione formale dell’equazione del calore. Per quanto riguarda la condizione iniziale, si deve imporre
∞
X
jπ
x
(23.2)
u0 (x) = u(0, x) =
cj sin
L
j=1
Poich´e u0 (x) `e nulla agli estremi, la possiamo prolungare per antisimmetria
all’intervallo [−L, L]. Sotto opportune ipotesi, la sua serie di Fourier
u¯0 (x) =
+∞
X
j=−∞
u0 j φj (x)
150
CAPITOLO 23. EQUAZIONI ADR
converge in [−L, L]. Poich´e u¯0 (x) `e dispari, con riferimento al paragrafo 14.2.1,
Z L
Z L
−i
2πj(x + L)
u¯0 (x)φm/2+1+j (x)dx = √
u0m/2+1+j =
dx =
u¯0 (x) sin
2L
2L −L
−L
√ Z
jπx
−i 2 L
u¯0 (x) sin
+ jπ dx =
= √
L
L 0
√ Z
−i 2 L
jπx
= √
+ jπ dx
u0 (x) sin
L
L 0
e
u0 m/2+1−j
Z L
−i
−2πj(x + L)
= u¯0 (x)φm/2+1−j (x)dx = √
dx =
u¯0 (x) sin
2L
2L −L
−L
√ Z
i 2 L
u¯0 (x) sin(jπx/L + jπ)dx = −u0 m/2+1+j
= √
L 0
Z
L
da cui
u¯0 (x) =
+∞
X
u0 m/2+1+j φm/2+1+j (x) =
j=−∞
=
+∞
X
u0m/2+1+j
cos(jπx/L + jπ) + i sin(jπx/L + jπ)
√
=
2L
u0m/2+1+j
cos(jπx/L + jπ) + i sin(jπx/L + jπ)
√
+
2L
j=−∞
=
−1
X
j=−∞
+
+∞
X
u0 m/2+1+j
j=1
=
+∞
X
j=1
+∞
X
cos(jπx/L + jπ) + i sin(jπx/L + jπ)
√
=
2L
−u0m/2+1+j
cos(jπx/L + jπ) − i sin(jπx/L + jπ)
√
+
2L
cos(jπx/L + jπ) + i sin(jπx/L + jπ)
√
=
2L
j=1
√
∞
X
2
=
u0 m/2+1+j √ i sin(jπx/L + jπ) =
L
j=1
Z
∞ X
2 L
jπ
jπ
=
x dx sin
x
u0 (x) sin
L 0
L
L
j=1
+
u0 m/2+1+j
23.1. EQUAZIONE DEL CALORE
151
Confrontanto quest’ultima espressione con (23.2), si deduce
2
cj =
L
Z
L
u0 (x) sin
0
jπ
x dx
L
Si potrebbe mostrare adesso che
∞
X
j 2π2
jπ
u(t, x) =
cj exp − 2 t sin
x
L
L
j=1
`e soluzione di (23.1) (bisogna poter derivare sotto il segno di serie). Dalla
presenza del termine esponenziale negativo nel tempo per ogni componente
uj (t, x), si deduce ogni componente tende a zero per t → +∞ (e dunque
anche la soluzione), ma con diverse velocit`a dipendenti da un fattore proporzionale a j 2 . L’equazione del calore rappresenta il modello dei fenomeni
di diffusione. La diffusione `e il processo mediante il quale la materia (o l’energia) `e trasportata da una parte di un sistema ad un’altra come risultato
di moti molecolari random.
23.1.2
Unicit`
a della soluzione
Introduciamo la seguente quantit`a (energia)
E(t) =
Z
L
0
1 2
u (t, x)dx
2
Si ha
dE
=
dt
Z
L
0
Z L
Z L 2
∂u
∂ u
∂ 1 2
u (t, x) dx =
u dx =
u 2 dx
∂t 2
∂t
∂x
0
0
Integrando per parti e tenendo conto delle condizioni ai bordi, si ha
dE
=−
dt
Z
L
0
∂u
∂x
2
dx ≤ 0
Per dimostrare l’unicit`a, consideriamo come al solito il problema omogeneo
(corrispondente a (23.1) con u0 ≡ 0. Per tale problema E0 (0) = 0 e quindi
0 ≤ E0 (t) ≤ E0 (0) da cui E0 (t) = 0 per ogni t. Quindi u(t, x) ≡ 0 `e l’unica
soluzione del problema omogeneo. Dunque, se u1 (t, x) e u2 (t, x) fossero due
soluzioni del problema (23.1), allora u1 (t, x) − u2 (t, x) sarebbe soluzione del
problema omogeneo e quindi u1 (t, x) ≡ u2 (t, x).
152
CAPITOLO 23. EQUAZIONI ADR
Se u0 (x) ≥ 0, si pu`o dimostrare (principio del massimo debole) che la
soluzione rimane non negativa per ogni t (dall’interpretazione fisica, `e ovvio).
Infatti, dato ε > 0, si ponga v(t, x) = u(t, x)−εx2 . Allora ∂t v−∂xx v = 2ε > 0.
Se il minimo di v(t, x) stesse in (t¯, x¯), 0 < t¯, 0 < x¯ < L, allora ∂t v(t¯, x¯) = 0
(punto critico) e ∂xx v(t¯, x¯) ≥ 0 (punto di minimo). Dunque
∂t v(t¯, x¯) − ∂xx v(t¯, x¯) ≤ 0
assurdo. Quindi, il punto di minimo per v(t, x) sta in Γ = {0} × [0, L] ∪
[0, +∞) × {0, L}. Dunque
min u − εL2 ≤ min v = min v ≤ min u
Γ
Γ
e facendo tendere ε → 0, si ottiene
min u ≤ min u
Γ
Poich´e ovviamente vale anche la disuguaglianza opposta,
min u = min u = min{min u0 , 0} = 0
Γ
23.2
Metodo di Fourier
Per quanto visto, il metodo spettrale basato su approssimazione in serie di
Fourier (vedi paragrafo 14.2.1) dovrebbe essere particolarmente adatto alla
risoluzione. Detta
m
X
uˆ(t, x) =
uˆj (t)φj (x)
j=1
la soluzione approssimata, si ha
m
X
uˆ′j (t)φj (x)
j=1
=
m
X
uˆj (t)λ2j φj (x)
j=1
da cui, per l’ortonormalit`a della famiglia {φj }j ,
(
uˆ′k (t) = λ2k uˆk (t), 1 ≤ k ≤ m
uˆk (0) = uˆ0 k
ove λk = i(k − 1 − m/2)2π/(2L) (si deve lavorare infatti del dominio [−L, L],
dove si `e prolungata per antisimmetria la funzione
u0 (x)) e uˆ0k sono i coeffi√ √
cienti di Fourier discreti di u0 prolungata (si ha i 2 Luˆ0m/2+1+k = (−1)k ck ).
Si trova, dunque,
uˆk (t) = e−(k−1−m/2)
2 π 2 t/L2
uˆ0 k ,
1≤k≤m
23.3. METODO DELLE LINEE
153
da cui poi si ricostruisce uˆ(t, x). Avevamo visto che la decomposizione di Fourier si usa in caso di condizioni al bordo periodiche, mentre per l’equazione
del calore sono di Dirichlet nulle. Poich´e per`o il dato iniziale `e la funzione dispari u¯0 (x), allora la soluzione u¯(t, x) dell’equazione del calore nell’intervallo
[−L, L] `e pure dispari. Infatti, posto v¯(t, x) = −¯
u(t, −x), si ha

∂¯
v
∂ u¯

 (t, x) = − (t, −x)
∂t
∂t
2

∂
v
¯
∂ 2 u¯

(t,
x)
=
(−
·
−)
·
−
(t, −x)
∂x2
∂x2
inoltre, v¯(t, −L) = v¯(t, L) = 0 e v¯(0, x) = −¯
u(0, −x) = u¯0 (x). Dunque, pure
v¯(t, x) soddisfa l’equazione del calore. Ma questa `e unica, quindi v¯(t, x) =
−¯
u(t, −x) = u¯(t, x), cio`e u¯(t, x) `e dispari. Quindi, ∂x u¯(t, −x) = ∂x u¯(t, x) e,
in particolare, ∂x u¯(t, −L) = ∂x u¯(t, L). Per quanto visto, la serie di Fourier di
u¯(t, x) converge (i coefficienti uj (t) decadono a zero almeno come j 2 ) e, poich´e
ogni troncata della serie `e dispari e periodica, essa vale zero ai bordi x = −L
ed x = L (e, di conseguenza, anche in x = 0: questo fatto non `e vero per
l’equazione originaria nel dominio [0, L], poich´e l`ı la soluzione non `e dispari).
Dunque, si pu`o usare il metodo di Fourier. Se per`o u¯0 (x) non `e periodica
(nel senso che non lo sono le derivate di ordine superiore al primo), allora
tale sar`a la soluzione analitica e il metodo di Fourier non sar`a spettralmente
convergente.
23.3
Metodo delle linee
Il metodo delle linee per la risoluzione di problemi del tipo

∂u
∂ 2u


(t,
x)
=
(t, x) + g(u(t, x)) + s(t, x), t > 0, x ∈ (a, b)
 ∂t
∂x2
+ condizioni ai bordi



+ condizione iniziale
(23.3)
ove il termine g(u(t, x)) si chiama reazione e il termine s(t, x) sorgente, prevede di discretizzare gli operatori differenziali spaziali con uno dei metodi
visti per i problemi con valori ai bordi e poi risolvere il sistema di ODEs che
ne risulta con un metodo per problemi ai valori iniziali visti. Assumeremo
sempre che la condizione iniziale soddisfi le condizioni ai bordi. Vediamo
qualche esempio.
154
CAPITOLO 23. EQUAZIONI ADR
23.3.1
Differenze finite
Trascurando per il momento le condizioni ai bordi e usando differenze finite
centrate del secondo ordine a passo costante h

y1′ (t)
y2′ (t)


−2


 1



1 



..

= 2 0
.

 h 
′
 .
ym−1
(t)
 ..
′
ym (t)
0
1
0
...
−2
..
.
1
..
...
..
.
..
.
...
.
1
0
−2
1

 

0 
y1 (t)
b1 (t, y1 (t))
.. 

 

.
  y2 (t)   b2 (t, y2 (t)) 

 

..
.
..

+

0
.

 

 ym−1 (t) bm−1 (t, ym−1 (t))

1
ym (t)
bm (t, ym (t))
−2
ove yj (t) ≈ u(t, xj ) o, in maniera compatta,
y ′ (t) = Ay(t) + b(t, y(t)) = f (t, y(t))
(23.4)
(con l’ovvia definizione dei simboli). A questo punto, si sceglie il metodo
di integrazione temporale (θ-metodo, multistep, Runge–Kutta, esponenziale). Si tenga presente che il problema (23.4), che si dice semidiscretizzato, `e
solitamente un problema stiff. Infatti, la matrice


−2
1
0
...
0
.. 

 1 −2
.
1
...


... ...
...
 ∈ Rm×m
 0
0



 .
.
.
.
 .
. 1
−2
1
0
... 0
1 −2
ha autovalori reali negativi
λj = −4 sin
2
j π
2m+1
,
1≤j≤m
che vengono poi amplificati dal coefficiente 1/h2 . Dunque, con riferimento
alla condizione (20.2) per il metodo di Eulero, volendo usare questo metodo
per l’integrazione temporale occorrerebbe un passo temporale k minore di
(circa) h2 /2. Siccome il metodo di Eulero `e del primo ordine, volendo che
l’integrazione temporale non sia meno accurata dell’approssimazione spaziale,
`e giusto che il passo temporale sia proporzionale a h2 (cos`ı che l’errore globale
sia O(k) + O(h2 ) = O(h2 )). Per ridurre il numero di time steps, si pu`o
usare un metodo di ordine pi`
u alto, per esempio un metodo di Runge–Kutta
esplicito di ordine 2. La restrizione sul time step `e per`o la stessa (vedi la
regione di assoluta stabilit`a del metodo in Figura 20.3) del metodo di Eulero.
Dunque, ancora k dovrebbe essere proporzionale a h2 /2 (quindi il numero
di time steps non diminuisce) e l’errore globale `e ancora O(k 2 ) + O(h2 ) =
O(h4 ) + O(h2 ) = O(h2 ).
23.3. METODO DELLE LINEE
23.3.2
155
Condizioni al bordo di Dirichlet
Vediamo come imporre una condizione di Dirichlet in x1 = a (eventualmente
dipendente dal tempo u(t, a) = y1 (t) = ua (t)) per il problema
y ′ (t) = Ay(t) + b(t, y(t)) = f (t, y(t))
Costanti nel tempo
Si deve modificare la prima riga di f (t, y(t)) e porla uguale a zero. In tal
modo, la prima riga del sistema differenziale risulta essere
y1′ (t) = 0 ⇒ y1 (t) = costante = y1 (t0 ) = ua
Poich´e il dato iniziale soddisfa sempre le condizioni di compatibilit`a, la prima
componente della soluzione assumer`a sempre il valore ua .
Variabili nel tempo
• metodi espliciti: basta calcolare y n+s e poi modificarne la prima componente, ponendola uguale a ua (tn+s ). Poich´e per`o il problema `e stiff,
difficilmente i metodi espliciti sono efficaci, a causa della restrizione sul
passo temporale.
• metodi impliciti: si deve trovare x = y n+s tale che
Fn+s−1 (x) = 0
Pertanto, si deve modificare la prima riga di questo sistema in modo
che esprima l’uguaglianza x1 −ua (tn+s ) = 0. Per esempio, avendo scelto
il metodo di Eulero implicito, si ha
Fn (y n+1 ) = (I − kA)y n+1 − kb(tn+1 , y n+1 ) − y n = 0
e l’imposizione della condizione al bordo avviene, per esempio, ponendo
a zero la prima riga di A e la prima componente di b (ci`o pu`o essere fatto
una volta per tutte, assieme alle necessarie modifiche allo Jacobiano) e
ponendo uguale a ua (tn+1 ) la prima componente di y n .
• metodi esponenziali: per i metodi esponenziali visti si ha
y n+1 = exp(kA)y n + kϕ1 (kA)bn
Se la prima riga di A viene messa a zero, la prima riga di exp(kA) e
ϕ1 (kA) `e il primo vettore della base canonica e dunque basta porre il
primo elemento di bn uguale a (ua (tn+1 ) − ua (tn ))/k.
156
CAPITOLO 23. EQUAZIONI ADR
23.3.3
Condizioni al bordo di Neumann (costanti)
Per quanto riguarda una condizione di Neumann omogenea, per esempio in
x = b, si pu`o pensare di introdurre la variabile fittizia ym+1 (t) ≈ u(t, xm+1 ),
xm+1 = b + h e imporre che ym+1 (t) = ym−1 (t). L’approssimazione da usare
2
per ∂∂xu2 (t, b) diventa dunque
∂ 2u
u(t, xm+1 ) − 2u(t, xm ) + u(t, xm−1 )
(t, b) ≈
=
2
∂x
h2
ym+1 (t) − 2ym (t) + ym−1 (t)
2ym−1 (t) − 2ym (t)
=
=
2
h
h2
In maniera analoga si possono trattare condizioni di Neumann non omogenee
(vedi paragrafo 11.4.1).
23.4
Equazione di trasporto-diffusione
Consideriamo l’equazione del trasporto (in un dominio non limitato)

 ∂u (t, x) + c ∂u (t, x) = 0, t > 0, x ∈ R
∂t
∂x

u(0, x) = u0 (x)
(23.5)
` facile verificare che la soluzione analitica `e u(t, x) = u0 (x − ct), da cui il
E
` ovviamente pi`
nome dell’equazione. E
u fisico considerare un dominio limitato
x ∈ (a, b). Nel caso in cui c > 0, ha senso (ed `e necessario) prescrivere
un’unica condizione al bordo in x = a. Tale punto si chiama punto di inflow
mentre il punto x = b `e detto di outflow. L’equazione di trasporto su un
dominio limitato si scrive allora

∂u
∂u

 (t, x) + c (t, x) = 0, t > 0, x ∈ (a, b), c > 0

∂t
∂x
u(t,
a)
=
0,
t>0



u(0, x) = u0 (x),
x ∈ (a, b)
con u0 (a) = 0. La soluzione analitica `e u(t, x) = u˜0 (x − ct), ove
u˜0 (x) =
(
u0 (x) x ∈ [a, b]
0
x<a
(23.6)
23.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE
157
Nel caso in cui c < 0, il punto di inflow `e x = b. Se consideriamo, pi`
u in
generale, l’equazione di trasporto-diffusione

∂u
∂u
∂ 2u


(t,
x)
+
c
(t,
x)
=
d
t > 0, x ∈ (a, b)
 ∂t
∂x
∂x2
(23.7)
+ condizioni ai bordi



+ condizione iniziale
ove d > 0, `e lecito aspettarsi che entrambi i fenomeni di diffusione e trasporto
si manifestino. Ancora, se u0 (x) ≥ 0, tale rimane la soluzione per ogni t. Ma
ci`o `e vero dopo aver discretizzato con il metodo delle linee? Abbiamo i due
risultati seguenti.
Teorema 18. Dato
(
y ′ (t) = f (t, y(t)),
y(0) = y 0
t>0
sono equivalenti le seguenti propriet`
a:
• se y 0 ≥ 0, allora y(t) ≥ 0 per ogni t (il sistema si dice positivo)
• dato x, con xi = 0, xj ≥ 0, j 6= i, allora fi (t, x) ≥ 0
Da questo teorema segue, come corollario, il seguente, che pu`o per`o essere
dimostrato in maniera diretta.
Teorema 19. Un sistema lineare y ′ (t) = Ay(t) `e positivo se e solo se
aij ≥ 0 per ogni j 6= i
ove A = (aij ).
Dimostrazione. Supponiamo che il sistema sia positivo. Allora, se y 0 ≥ 0, si
ha y(τ ) ≥ 0. Ma
y(τ ) = exp(τ A)y 0 = (I + τ A)y 0 + O(τ 2 )
se τ `e sufficientemente piccolo. Se, per assurdo, a¯i¯j < 0, ¯j =
6 ¯i, allora, preso
y 0 = e¯j ,


∗
 .. 
 . 


 ∗ 


(I + τ A)e¯j = τ a¯i¯j  ← riga ¯i


 ∗ 
 . 
 .. 
∗
158
CAPITOLO 23. EQUAZIONI ADR
e dunque la componente ¯i-esima di exp(τ A)e¯j sarebbe negativa, assurdo.
Se invece aij ≥ 0, j 6= i, allora
n
t
exp(tA) = lim I + A ≥ 0
n→∞
n
da cui la positivit`a.
Tornando all’equazione (23.7), la discretizzazione mediante differenze finite centrate del secondo ordine porge, nei nodi interni,
yi′ (t) + c
yi+1 (t) − 2yi (t) + yi−1 (t)
yi+1 (t) − yi−1 (t)
=d
2h
h2
I termini extradiagonali della matrice che ne deriva sono
c
d
c
d
+ 2 e −
+ 2
2h h
2h h
che, per avere la positivit`a, devono essere entrambi non negativi, da cui
|c|h
≤1
2d
La quantit`a Pe = |c|h/(2d) si chiama numero di P´eclet di griglia. La perdita
di positivit`a `e solo uno degli effetti del numero di P´eclet di griglia troppo elevato: si possono avere anche oscillazioni spurie, pertanto si chieder`a sempre
che il numero di P´eclet di griglia sia minore o uguale a 1.
Da notare che la positivit`a del sistema y ′ (t) = Ay(t) non garantisce che
qualunque metodo numerico per ODEs la preservi (di certo lo garantisce il
metodo esponenziale poich´e esatto e, per il problema di diffusione e trasporto,
anche Eulero implicito, vedi A.2). Pertanto, la condizione sul numero di
P´eclet di griglia `e solo necessaria per avere una soluzione numerica positiva.
23.4.1
Stabilizzazione mediante diffusione artificiale
La restrizione sul passo di discretizzazione data dal numero di P´eclet di
griglia potrebbe essere irrealizzabile. Vediamo di stabilizzare lo schema delle
differenze finite.
Consideriamo, per esempio, l’equazione di trasporto-diffusione

∂u
∂ 2u
∂u


(t,
x)
+
c
(t,
x)
=
d
t > 0, x ∈ (0, 1)



∂x
∂x2
 ∂t
u(0, x) = x2
(23.8)


u(t, 0) = 0




u(t, 1) = 1
23.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE
1.5
1.5
FD upwind
159
FD upwind
shema SG
soluzione di riferimento
FD entrate
shema SG
soluzione di riferimento
FD entrate
1
0.5
0.5
u
u
peclet.m
1
0
0
-0.5
0.9
0.91
0.92
0.93
0.94
0.95
0.96
0.97
0.98
0.99
1
-0.5
0.9
0.91
0.92
0.93
0.94
0.95
x
0.96
0.97
0.98
0.99
1
x
Figura 23.1: Soluzione di (23.8) con diversi schemi di differenze finite, h =
1/125 (sinistra), h = 1/250 (destra) e Eulero esponenziale al tempo t∗ = 0.05.
La soluzione di riferimento `e stata ottenuta con differenze finite centrate e
h = 1/1000.
con c = 10 e d = 0.02. Il numero di P´eclet di griglia, con h = 1/125, vale 2.
La risoluzione mediante differenze finite centrate e Eulero esponenziale (esatto nel tempo) produce il grafico blu a sinistra in Figura 23.1. Se consideriamo
invece la discretizzazione del primo ordine della derivata prima
∂u
ui − ui−1
(t, xi ) ≈
∂x
h
(in tale contesto si chiama discretizzazione upwind ), otteniamo il grafico rosso, piuttosto lontano dalla soluzione esatta, ma privo di oscillazioni. Si pu`o
infatti vedere che i termini extradiagonali della matrice di discretizzazione sono non negativi. Per tentare di generalizzare (e migliorare l’ordine di
accuratezza) questo approccio, scriviamo
ui+1 − ui−1 h ui−1 − 2ui + ui+1
ui − ui−1
=
−
h
2h
2
h2
e quindi approssimare al primo ordine
−c
∂ 2u
ui − ui−1
ui−1 − 2ui + ui+1
∂u
(t, xi ) + d 2 (t, xi ) ≈ −c
+d
=
2
∂x
∂x
h
h ui+1 − ui−1
ch ui−1 − 2ui + ui+1
= −c
+d 1+
2h
2d
h2
significa approssimare al secondo ordine (dunque, meglio)
ch ∂ 2 u
∂u
(t, xi )
−c (t, xi ) + d 1 +
∂x
2d ∂x2
160
CAPITOLO 23. EQUAZIONI ADR
cio`e un’equazione con una diffusione artificiale (aggiuntiva) di coefficiente
ch/2. Per questa equazione il numero di P´eclet vale
ch
2d 1 +
ch
2d
=
ch
Pe
=
< 1,
2d(1 + Pe)
1 + Pe
∀h
e ci`o spiega l’assenza di oscillazioni. Vorremmo trovare una diffusione artificiale che stabilizzi lo schema e preservi l’ordine due delle differenze finite centrate. Cercheremo dunque una funzione φ del numero di P´eclet e
sostituiremo d con d(1 + φ(Pe)) in modo che il nuovo numero di P´eclet valga
ch
2d(1 + φ(Pe))
La funzione φ(Pe) dovr`a soddisfare:
• φ(Pe) ' Pe − 1 (cos`ı il nuovo numero di P´eclet sar`a minore o uguale
a 1), ma non troppo grande (altrimenti si introduce troppa diffusione
artificiale)
• φ(ch/(2d)) = O(h2 ), h → 0 (cos`ı la discretizzazione a differenze finite
centrate sar`a di ordine 2)
Una scelta possibile `e
φ(z) = z − 1 + e−z ,
φ(z) =
z2
+ O(z 3 ),
2
z→0
Una scelta migliore `e
φ(z) = z − 1 +
2z
,
2z
e −1
φ(z) =
z2
+ O(z 4 ),
3
z→0
(da notare che lo schema upwind corrisponde a φ(z) = z). Il risultato corrisponde al grafico magenta in Figura 23.1 e lo schema si chiama di Scharfetter
e Gummel.
L’esempio usato aveva il coefficiente c positivo: la funzione φ da usare deve
essere funzione del numero di P´eclet Pe = |c|h/(2d), in modo da aggiungere
diffusione artificiale e non togliere. Per esempio, nel caso upwind con c < 0,
φ(Pe) = Pe = −ch/(2d) e pertando la discretizzazione al primo ordine che
ne risulta `e
−c
∂u
∂ 2u
ui+1 − ui
ui−1 − 2ui + ui+1
(t, xi ) + d 2 (t, xi ) ≈ −c
+d
=
2
∂x
∂x
h
h ui+1 − ui−1
ch ui−1 − 2ui + ui+1
= −c
+d 1−
2h
2d
h2
23.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE
23.4.2
161
Elementi finiti
Nel caso di discretizzazione spaziale con elementi finiti lineari, la discretizzazione del problema (23.3) porta al sistema di ODEs
P y ′ (t) = Ay(t) + g(y(t)) + s(t)
(23.9)
ove A `e (l’opposta de) la stiffness matrix e P la mass matrix, definita da,
Z xj+1
hj−1 + hj
φj (x)φj (x)dx =
pjj =
3
xj−1
Z xj+1
(23.10a)
hj
φj (x)φj+1 (x)dx =
pj j+1 = pj+1 j =
6
xj
mentre, per j = 1 e j = m,
Z x2
h1
φ1 (x)φ1 (x)dx =
p11 =
3
Zx1x2
h1
φ1 (x)φ2 (x)dx =
p12 =
6
x1
Z xm
hm−1
pm−1 m = pm m−1 =
φm (x)φm−1 (x)dx =
6
xm−1
Z xm
hm−1
pmm =
φm (x)φm (x)dx =
3
xm−1
(23.10b)
Poi, per 1 < i < m,
gi =
=
Z
Z
xi+1
g
xi−1
m
X
uj φj (x) φi (x)dx =
j=1
xi
g
xi−1
m
X
!
!
uj φj (x) φi (x)dx +
j=1
Z
xi+1
g
xi
m
X
j=1
!
uj φj (x) φi (x)dx ≈
g(yi−1 ) + g(yi ) hi−1 g(yi ) + g(yi+1 ) hi
+
2
2
2
2
Z xi+1
s(t, xi−1 ) + s(t, xi ) hi−1 s(t, xi ) + s(t, xi+1 ) hi
+
si =
s(t, x)φi (x)dx ≈
2
2
2
2
xi−1
mentre per i = 1 e i = m
g(ym−1 ) + g(ym ) hm−1
g(y1 ) + g(y2 ) h1
,
gm =
2
2
2
2
s(t, xm−1 ) + s(t, xm ) hm−1
s(t, x1 ) + s(t, x2 ) h1
s1 =
, sm =
2
2
2
2
g1 =
162
CAPITOLO 23. EQUAZIONI ADR
Usando un metodo esplicito per la risoluzione del sistema differenziale (23.9), `e necessaria l’inversione della matrice di massa. Per tale motivo, si
pu`o ricorrere alla tecnica del mass lumping che consiste nel rendere diagonale
la matrice P sostituendo ogni sua riga con una riga di zeri e la somma degli
elementi originali in diagonale. Tale modifica `e equivalente all’approssimazione degli integrali in (23.10) mediante la formula dei trapezi e dunque non
(−1)
riduce l’accuratezza del metodo. Infatti, la matrice PL A (PL la matrice di
massa con lumping) risulta uguale alla matrice che si ottiene discretizzando
con differenze finite centrate del secondo ordine.
Usando invece un metodo implicito per la risoluzione del sistema differenziale (23.9), non `e necessaria la tecnica del mass lumping: semplicemente,
si devono risolvere sistemi lineari in cui la matrice identit`a `e sostituita dalla
matrice di massa.
23.4.3
Errori spaziali e temporali
Con il metodo delle linee, `e facile capire cosa contribuisce all’errore spaziale
e cosa all’errore temporale. Per esempio, se si usano differenze finite centrate
1
di ordine due, si commette un errore Ch2 , h ∝ m−1
. Questo significa che,
qualunque metodo si usi per l’integrazione temporale e con qualunque passo
temporale, non `e possibile scendere sotto tale errore. Ci`o `e esemplificato
10−3
m = 200
m = 250
m = 300
erroretemporale.m
10−4
errore
10−5
10−6
10−7
10−8
101
102
passi temporali
103
Figura 23.2: Errore temporale per un numero m di passi spaziali.
in Figura 23.2, ove si `e risolto il problema dell’Esercizio 1 con un numero
23.5. ESERCIZI
163
m diverso di passi spaziali e si `e misurato l’errore rispetto alla soluzione
analitica. Vale ovviamente anche l’inverso: il metodo scelto per l’integrazione
temporale e il numero di passi temporali pone un limite inferiore all’errore
rispetto alla soluzione analitica.
23.5
Esercizi
1. Si calcoli la soluzione analitica dell’equazione del calore con sorgente

∂ 2u
∂u



(t, x) =
(t, x) + 2et sin(x), t > 0, x ∈ (0, π/2)

2

∂t
∂x


 u(t, 0) = 0,
t>0

∂u


(t, π/2) = 0,
t>0


∂x


 u(0, x) = sin(x),
x ∈ (0, π/2)
usando differenze finite del secondo ordine nello spazio e il metodo dei
trapezi nel tempo. Si mostrino gli ordini spaziali e temporali della
convergenza alla soluzione analitica al tempo t∗ = 1.
2. Per l’esercizio sopra, discretizzato nello spazio tramite differenze finite
centrate del secondo ordine con m = 100 nodi, si determini il numero
minimo di passi temporali per avere un errore al tempo t∗ = 1 rispetto
alla soluzione analitica inferiore a 10−3 , avendo usato nel tempo
• il metodo di Eulero
• il metodo di Eulero implicito
• il metodo dei trapezi
• il metodo di Heun
• il metodo Runge–Kutta di tableau in Tabella 22.1
3. Si ripeta l’esercizio 1. usando Eulero esponenziale e esponenziale—
punto medio nel tempo.
164
CAPITOLO 23. EQUAZIONI ADR
4. Si studi l’andamento della soluzione del problema di trasporto-diffusione-reazione

∂u
∂ 2u
∂u



+c
= d 2 (t, x) + ρu(u − 1/2)(1 − u), t > 0, x ∈ (0, 1)


∂t
∂x
∂x


 u(t, 0) = 0,
t>0

∂u


(t, 1) = 0,
t>0


∂x


 u(0, x) = 5x(1 − x)2 ,
x ∈ (0, 1)
al variare dei coefficienti c, d e ρ (partendo da c = 0.8, d = 0.01,
ρ = 50). Si usi un metodo implicito nel tempo. Si testi anche il caso
di condizioni di Dirichlet omogenee per entrambi i bordi.
Parte 4
Appendici
165
Appendice A
Alcune dimostrazioni
A.1
M -matrici
Per dimostrare che la matrice A in (11.4) `e una M -matrice, si procede cos`ı.
Dato σ = 1/ max2≤i≤m−1 {2/h2 + qi }, definiamo
V = I − σA
Innanzitutto V ≥ 0. Ogni autovalore λ di A `e reale positivo e dunque ogni
autovalore 1−σλ di V `e minore di 1. Essendo V una matrice non negativa, per
il teorema di Perron–Frobenius il raggio spettrale ρ(V ) (che `e non negativo)
di V `e un autovalore di V . Pertanto, anch’esso `e minore di 1 (in pratica
significa che tutti gli autovalori sono in modulo minori di 1). Allora V `e una
matrice convergente (cio`e limm→∞ V m = 0 (vedi Proposizione 1)) e vale
∞
X
1 −1
−1
−1
A = (σA) = (I − V ) =
Vm
σ
m=0
Pertanto, A−1 `e la somma di una serie di matrici non negative.
A.2
Positivit`
a di Eulero implicito per equazioni di trasporto-diffusione
Dato il problema di trasporto-diffusione (23.7) con condizioni al bordo di
Dirichlet omogenee, si pu`o considerare una discretizzazione spaziale a nodi
interni tale che il problema semidiscretizzato sia




y2 (t)
y2′ (t)
 . 
 .. 
 .  = A  .. 
′
ym−1 (t)
ym−1
(t)
166
` DI EULERO IMPLICITO PER TRASPORTO-DIFFUSIONE167
A.2. POSITIVITA
con

0
1
0 ...
−1 0
1 ...
c 

... ... ...
A=− 
2h 
 0 . . . −1 0
0 . . . 0 −1


−2
0
1
0

d 


+ 2 
 h 
0
1
0
0

1
0 ... 0
−2 1 . . . 0 


... ... ...


. . . 1 −2 1 
... 0
1 −2
Mediante il teorema dei dischi di Gershgorin possiamo dire che gli autovalori
di A stanno nel disco di centro −2d/h2 e passante per l’origine. Infatti, il
raggio dei dischi vale
c
c
d
d
+ + − + 2h h2 2h h2 Siccome, se il numero di P´eclet di griglia `e minore o uguale a 1, |c|/(2h) ≤
d/h2 , allora tale raggio vale 2d/h2 . La matrice “da invertire” per il metodo
di Eulero implicito `e I − kA, ove k `e il passo temporale. Gli autovalori di
tale matrice stanno nel disco di centro 1 + k2d/h2 e raggio k2d/h2 e sono
pertanto diversi da zero. Dunque, per qualunque k la matrice `e invertibile.
Prendiamo adesso σ = 1/(1 + k2d/h2 ) e definiamo
V = I − σ(I − kA)
Si osserva facilmente che V ≥ 0. Poi, La matrice −σ(I − kA) ha autovalori
nel disco di centro −1 e raggio σk2d/h2 < 1. Pertanto V ha autovalori nel
disco di centro 0 e ρ(V ) < 1. E si conclude come sopra. Dunque la matrice
(I − kA)−1 ha elementi non negativi. Lo stesso per la matrice del metodo dei
trapezi (I − kA/2)−1 . Ma mentre per Eulero implicito la matrice (I − kA)−1
`e applicata a y n (che si suppone avere elementi non negativi), per il metodo
dei trapezi la matrice (I − k/2A)−1 si applica a (I + kA/2)y n . Se il numero
di P´eclet `e minore o uguale a 1, i termini extradiagonali di (I + kA/2) sono
non negativi, mentre i termini diagonali lo sono solo per 1 − kd/h2 ≥ 0, cio`e
k ≤ h2 /d.
Per esempio, per il problema di diffusione

ut = uxx
t > 0, x ∈ (0, 1)





1) = 0
t>0

 u(t, 0) = u(t,


0 x ∈ [0, 1/2)



u(0, x) = 1 x ∈ [1/2, 1)






0 x=1
discretizzato con nodi interni e h = 1/50, si hanno i risultati in Figura A.1.
168
APPENDICE A. ALCUNE DIMOSTRAZIONI
k = h2 , t = 0.2
k = h, t = 0.2
sispos.m
0.5
0.5
trapezi
Eulero implicito
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
0
-0.1
-0.1
-0.2
trapezi
Eulero implicito
-0.2
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
Figura A.1: Soluzione al tempo t = 0.2 con i metodi dei trapezi e di Eulero
implicito, con k = h (sinistra) e k = h2 (destra).
Per le matrici di trasporto-diffusione `e possibile dare un’altra stima per
lo spettro. Se decomponiamo A nelle sue parti simmetrica AS (diffusione)
e antisimmetrica AAS (trasporto) abbiamo che W (A) ⊆ W (AS ) + W (AAS ).
Ma le parti simmetrica e antisimmetrica sono normali e dunque il campo dei
valori `e l’involucro convesso dello spettro. Per la parte simmetrica, usando i dischi di Gershgorin e il fatto che gli autovalori sono reali, abbiamo
che W (AS ) ⊆ [−4d/h2 , 0] (in realt`a 0 si pu`o escludere perch´e la matrice
non `e singolare). Per la parte antisimmetrica, usando i dischi di Gershgorin e il fatto che gli autovalori sono puramente immaginari, abbiamo che
W (AAS ) ⊆ i[−|c|/(2h), −|c|/(2h)]. Pertanto il campo dei valori W (A) `e contenuto nel rettangolo [−4d/h2 , 0]+i[−|c|/(2h), −|c|/(2h)] e a maggior ragione
lo spettro. Se il numero di P´eclet di griglia vale 1, allora tale rettangolo `e
il quadrato circoscritto al disco di centro −2d/h2 e passante per l’origine
(dunque non si guadagna informazione rispetto ai dischi di Gershgorin della
matrice). Altrimenti, tale rettangolo ha intersezione non banale con il disco.
A.3. EQUAZIONE DEL FILO ELASTICO
A.3
169
Equazione del filo elastico
y
P~ (x1 )
~g (x)
u(x)
α(x)
P~ (x2 )
x1
x2
x
Figura A.2: Filo elastico sottoposto a carico ~g .
L’equazione del filo elastico (14.1) si ricava nel seguente modo. Con riferimento alla Figura A.2, se il filo si trova a riposo significa che la risultante
delle forze `e nulla nell’intervallo [x1 , x2 ] e pertanto (trascurando il peso del
filo)
Z x2
~
~
P (x1 ) + P (x2 ) +
~g (x)dx = 0
x1
In un generico punto x nell’intervallo [x1 , x2 ] si ha
tan α(x) = u′ (x)
da cui
u′ (x)
sin α(x) = p
≈ u′ (x)
1 + (u′ (x))2
se α(x) `e piccolo e dunque (u′ (x))2 ≪ 1. Proiettando sull’asse y (tenendo
conto che α(x) < 0) otteniamo
Z x2
−P (x1 ) sin α(x1 ) + P (x2 ) sin α(x2 ) +
g(x)dx = 0
x1
da cui
Z
x2
x1
d
(P (x)u′ (x)) dx = −
dx
Z
x2
g(x)dx
x1
170
APPENDICE A. ALCUNE DIMOSTRAZIONI
Proiettando sull’asse x, si ottiene invece
−P (x1 ) cos α(x1 ) + P (x2 ) cos α(x2 ) = 0
Ancora, se α(x) `e piccolo, allora cos α(x) ≈ 1 e dunque
P (x1 ) = P (x2 ) ≡ P
Pertanto
−u′′ (x) =
A.4
g(x)
P
Equazione della trave
L’equazione della trave (11.2) sottoposta a carico e trazione, si ricava nel
seguente modo. Con riferimento alla Figura A.3, nell’intervallo [x1 , x2 ] l’e-
y
P~
P~ (x1 )
T~ (x1 )
~g (x)
x1
P~
u(x)
α(x)
T~ (x2 )
P~ (x2 )
x2
x
Figura A.3: Trave elastica sottoposta a carico ~g e trazione P~ .
quilibrio delle forze si scrive
Z x2
~
T (x1 ) +
~g (x)dx + T~ (x2 ) + P~ (x1 ) + P~ (x2 ) = 0
x1
Le forze T~ (x) si chiamano sforzi di taglio e rappresenta la componente verticale delle forze di contatto a cui `e soggetto un corpo. Lo sforzo di taglio T~ (x2 )
A.4. EQUAZIONE DELLA TRAVE
171
ha orientamento opposto a T~ (x1 ) in quanto inteso come reazione dell’azione
di −T~ (x2 ) in x > x2 . Proiettando sull’asse y, si ottiene
Z x2
T (x1 ) −
g(x)dx − T (x2 ) − P (x1 ) sin α(x1 ) + P (x2 ) sin α(x2 ) = 0
x1
Come nel caso del filo elastico, si suppone sin α(x) ≈ u′ (x) e dunque
Z x2
Z x2
Z x2
d
d
−
g(x)dx +
T (x)dx −
(P (x)u′ (x)) dx
x1 dx
x1 dx
x1
Proiettando sull’asse x, otteniamo, come nel caso del filo elastico,
P (x1 ) = P (x2 ) ≡ P
e pertanto
−T ′ (x) − g(x) + P u′′ (x) = 0
Il momento flettente µ(x) `e il momento risultante da tutte le forze verticali,
e pertanto nell’intervallo [x1 , x], x ≤ x2
Z x
Z
x − x1 x
µ(x) − µ(x1 ) =
T (t)dt −
g(t)dt
2
x1
x1
ove si `e pensato il carico come una forza concentrata nel baricentro del
segmento [x1 , x]. Dividento per (x − x1 ) e facendo tendere x1 a x si ha
µ′ (x) = T (x)
Per finire, usando il modello di elasticit`
a lineare che stabilisce
u′′ (x) =
µ(x)
E · I(x)
si arriva a
ove
−µ′′ (x) + c(x)µ(x) = g(x)
c(x) =
P
E · I(x)
Se P = 0, l’equazione `e uguale a quella del filo elastico, ma il significato `e
diverso. Per esempio, una trave appoggiata ai bordi (per esempio x = 0 e
x = 1) e sotto un carico costante di densit`a 2, soddisfa l’equazione
(
−µ′′ (x) = 2,
x ∈ (0, 1)
µ(0) = µ(1) = 0
172
APPENDICE A. ALCUNE DIMOSTRAZIONI
Infatti, per quanto visto, un carico diretto verso il basso ha intensit`a positiva
(al contrario del caso del filo elastico) e l’appoggio ai bordi significa che l`ı
non c’`e momento flettente. La soluzione `e
µ(x) = x(1 − x)
e dunque
u′′ (x) = 10x(1 − x)
(supponendo E · I(x) ≡ 1/10). La trave soddisfa condizioni di Dirichlet, per
esempio u(0) = u(1) = 0. Quindi
x4 x3
x
u(x) = 10 − +
−
12
6
12
Un filo elastico sottoposto ad un carico uniforme diretto verso il basso di
intensit`a 2 (e tensione unitaria) soddisfa invece
(
−u′′ (x) = −2,
x ∈ (0, 1)
u(0) = u(1) = 0
e dunque
u(x) = x(x − 1)
A.4.1
Appoggi ottimali per una trave
T~ (x)
~q
−L
−l
x
−~qL
l
L
−~qL
Figura A.4: Appoggi ottimali per una trave.
A.4. EQUAZIONE DELLA TRAVE
173
Si vuole determinare dove posizionare gli appoggi a sostegno di una trave
omogenea, non in trazione, sottoposta a carico uniforme in modo da minimizzarne la deformazione. Con riferimento alla Figura A.4 e limitandosi a
x ≥ 0 per simmetria, lo sforzo di taglio T (x) `e
(
− qx,
0≤x<l
T (x) =
qL − qx, l ≤ x ≤ L
da cui il momento flettente

1
1

 − qx2 + qLl − qL2 , 0 ≤ x < l
2
2
µ(x) =
1
1

 qLx − qx2 − qL2 ,
l≤x≤L
2
2
in cui le costanti di integrazione sono state scelte per avere un momento
continuo e µ(L) = 0. Ora u′′ (x) = µ(x) (assumendo E · I = 1) e si deve
imporre la continuit`a di u′ (x) (due condizioni) e il passaggio di u(x) da (l, 0)
(due condizioni). Sfruttando ancora la simmetria del problema, si trova

q

 − x4 +
24
u(x) =

 − q x4 +
24
q
q
q
q
q
Llx2 − L2 x2 + l4 − Ll3 + qL2 l2 ,
0≤x<l
2
4
24
2
4
q 3 q 2 2 q 2
q
2q
q
Lx − L x + Ll x + l4 − Ll3 + L2 l2 , l ≤ x ≤ L
6
4
2
24
3
4
I punti critici di questa funzione sono

x1 = 0



√

 x = √6Ll − 3L2
se l ≥ L/2 e x2 < l, cio`e L/2 ≤ l < (3 − 6)L
2
√
√
√
 x3 = L − 3 L3 − 3Ll2 se l ≤ x3 ≤ L, cio`e (3 − 6)L ≤ l ≤ 3L/3




x4 = L
estremo
(per ricavare x3 si aggiunge e toglie qL3 /6 alla derivata del secondo pezzo
di u(x)). Valutando u(x) nei punti critici si ottengono quattro funzioni dipendenti da l: occorre stabilire per quale valore di l il massimo del valore
assoluto di tali funzioni `e minimo. Aiutandosi con un grafico, si scopre che
tale l si ottiene dall’intersezione delle due funzioni corrispondenti a x1 = 0 e
x4 = L, per cui l ottimale `e soluzione di
q 4 q 3 q 22
l − Ll + L l =
24
2
4
q
q
q
q
q
2q
q
− L4 + L4 − L4 + L2 l2 + l4 − Ll3 + L2 l2
24
6
4
2
24
3
4
174
APPENDICE A. ALCUNE DIMOSTRAZIONI
√
√
√
Si ottiene l = ( 3 sin(arctan( 39/5)/3) − cos(arctan( 39/5)/3) + 1)L ≈
0.5537 · L.
Si osservi che la banale derivazione u(4) (x) = µ′′ (x) = −q avrebbe portato
al problema

(4)

x ∈ (−L, L)
 −u (x) = q,
u(−l) = u(l) = 0


u′′ (−L) = u′′ (L) = 0
la cui soluzione forte (cio`e C 4 ), del tutto diversa, `e
u(x) = −
A.5
q
q
q 4 q 2 2
x + L x + l 4 − L2 l 2
24
4
24
4
Lunghezza della catenaria
L’equazione della catenaria si riferisce alla curva assunta da una corda flessibile e inestensibile appesa agli estremi. Il parametro a presente nell’equazione (11.9) dipende allora solo dalla lunghezza l della corda, data da
Z
1
−1
p
1 + (u′ (x))2 dx =
2 sinh a
=l
a
Per risolvere l’equazione in a f (a) = 2 sinh a − al = 0, si pu`o usare il metodo
di Newton a partire dal punto a0 soluzione di
a30
2 a0 +
− a0 l = 0
6
Infatti, f (a) `e convessa e sinh(a) = a + a3 /6 + a5 /5! + O(a7 ) e quindi a < a0 .
A.6
A-stabilit`
a di un metodo di Runge–Kutta
semiimplicito
Verifichiamo che il metodo di Runge–Kutta semiimplicito (19.9) `e A-stabile.
Applicato al solito problema d`a


 ξ1 = yn + ka1,1 λξ1
ξ2 = yn + ka2,1 λξ1 + ka2,2 λξ2

y
n+1 = yn + kb1 λξ1 + kb2 λξ2
` DI UN METODO DI RUNGE–KUTTA SEMIIMPLICITO175
A.6. A-STABILITA
10
5
0
-5
-10
-10
-5
0
5
10
Figura A.5: Regione di assoluta stabilit`a (bianca) per il metodo di Runge–
Kutta semiimplicito (19.9).
e dunque
a2,1 z
1 + 1−a1,1 z
1
r(kλ) = r(z) = 1 + b1 z
+ b2 z
1 − a1,1 z
1 − a2,2 z
Quindi, chiedere |r(z)| < 1 `e come chiedere (tenendo conto che a1,1 = a2,2 e
che b1 + b2 = 1)
|(1 − a1,1 z)2 + z(1 − a1,1 z) + b2 a2,1 z 2 |2 < |(1 − a1,1 z)2 |
da cui dividendo per a1,1 e sostituendone il valore
2 2
√
3 + √3
√
√
√
3
2
2
−
z
+
(1
−
z
−
2z
+
3
−
3)z
+
3
−
3
3
−
<0
6
3
Scrivendo ora z come x + iy, si trova
√ 4
√
√
√
√
3y + 2 3x2 y 2 − 24xy 2 + 3x4 − 24x3 + 24 3x2 + (72 3 − 144)x > 0
da cui segue subito che la disuguaglianza `e soddisfatta se x = ℜ(z) < 0.
Appendice B
Estrapolazione di Richardson
Procedendo con gli sviluppi in serie di Taylor per le differenze finite, si trova
u′ (xi ) = ∆u(xi ) −
h2 (3)
u (xi ) + O(h4 )
6
u′′ (xi ) = ∆2 u(xi ) −
h2 (4)
u (xi ) + O(h4 )
12
e, analogamente,
Data dunque l’approssimazione uhi di un problema ai limiti mediante differenze finite centrate con passo h che soddisfa
u(xi ) = uhi + ci h2 + O(h4 )
2
h
h/2
+ O(h4 )
u(xi ) = ui + ci
2
si ha
h/2
4ui
− uhi
= u(xi ) + O(h4 )
3
176
Appendice C
Temi d’esame
29-06-2010
1. Si implementi il metodo di Runge–Kutta definito dal tableau
0
1
2
1
2
1
2
1
2
1
0
0
0
1
3
4
5
32
7
32
13
32
1
− 32
− 12
7
3
7
3
13
6
− 16
3
e se ne determini numericamente l’ordine.
2. Si usi il metodo di Runge–Kutta implementato sopra per determinare
numericamente il periodo del pendolo
 ′′
θ (t) = −g sin(θ(t)),



π
θ(0) =
3


 ′
θ (0) = 0
t>0
e si dica se `e minore, maggiore o uguale al periodo del pendolo linearizzato
 ′′
θ (t) = −gθl (t), t > 0


 l
π
θl (0) =
3


 ′
θl (0) = 0
177
178
APPENDICE C. TEMI D’ESAME
3. Usando differenze finite del secondo ordine per lo spazio e il metodo
di Eulero implicito per il tempo si discretizzi il problema di diffusionereazione

∂u
1 ∂2u
1



 ∂t (t, x) = 100 ∂x2 (t, x) + 5u(t, x) u(t, x) − 2 (1 − u(t, x)), t > 0, x ∈ (0, 1)

u(0, x) = 4x(1 − x),
x ∈ (0, 1)



u(t, 0) = u(t, 1) = 0,
t>0
4. Si mostri che il metodo usato per risolvere i sistemi non lineari e il
metodo di Eulero implicito hanno il corretto ordine di convergenza.
20-07-2010
5. Si consideri il metodo implicito ad un passo
h 1
y n+1 = y n + hf tn + , (y n + y n+1 ) ,
2 2
n≥0
per la soluzione di un problema ai valori iniziali
(
y ′ (t) = f (t, y(t)), t > t0
y(t0 ) = y 0
Lo si implementi e lo si applichi al problema autonomo
 ′
 y (t) = y(t)(1 − y(t)), t > 0
 y(0) = 1
2
per determinare numericamente l’ordine con cui viene approssimata la
soluzione y(t∗ ) al tempo t∗ = 1.
6. Si calcoli la soluzione analitica del problema di diffusione non omogeneo

∂u
∂ 2u


(t, x) =
(t, x) − (sin t)(−x2 + 2x) + 2 cos t, t ≥ 0, x ∈ (0, 1)

2

∂t
∂x


 u(0, x) = −x2 + 2x,
x ∈ (0, 1)

u(t, 0) = 0,





 ∂u (t, 1) = 0,
∂x
t≥0
t≥0
e si mostri l’ordine di convergenza temporale del metodo Eulero esponenziale per approssimare la soluzione u(t∗ , x) al tempo t∗ = 1.
179
7. Per lo stesso problema, si mostri l’ordine di convergenza temporale del
metodo esponenziale—punto medio.
15-09-2010
8. Si consideri il metodo di Runge–Kutta semi-implicito

!
i
X



f i = f tn + ci k, y n + k
ai,j f j , i = 1, 2



j=1





 y n+1 = y n + k
2
X
bj f j
j=1
di tableau
c1 a1,1 a1,2
c2 a2,1 a2,2 =
b1
b2
√
3+ 3
6√
3− 3
6
√
3+ 3
6√
− 33
0
√
3+ 3
6
1
2
1
2
per la soluzione di un problema ai valori iniziali
(
y ′ (t) = f (t, y(t)), t ≥ t0
y(t0 ) = y 0
Lo si implementi per il problema autonomo
 ′
 y (t) = y(t)(1 − y(t)), t ≥ 0
 y(0) = 1
2
e si determini numericamente l’ordine con cui viene approssimata la
soluzione y(t∗ ) al tempo t∗ = 1.
9. Si applichi il metodo delle linee al problema di diffusione non omogeneo

∂ 2u
∂u


(t,
x)
=
(t, x) + (2x − x2 ) cos t + 2 sin t, t ≥ 0, x ∈ (0, 1)


2

∂t
∂x

u(0, x) = 0,
x ∈ (0, 1)


u(t, 0) = 0,
t≥0




u(t, 1) = sin t,
t≥0
e si mostri l’ordine di convergenza temporale del metodo Eulero implicito con cui viene approssimata la soluzione u(t∗ , x) al tempo t∗ =
1.
180
APPENDICE C. TEMI D’ESAME
30-09-2010
10. Si risolva mediante il metodo delle differenze finite il problema ai limiti
non lineare

1

′′

u
(x)
=
(32 + 2x3 − u(x)u′ (x)), x ∈ (1, 3)


8

u(1) = 17



43

 u(3) =
3
e si confronti il numero di iterazioni necessarie alla convergenza usando il metodo di Newton esatto e un metodo di Newton inesatto (la
soluzione analitica `e u(x) = x2 + 16/x).
11. Si applichi il metodo delle linee al problema di diffusione non omogeneo

∂ 2u
∂u


(t, x) =
(t, x) + 2et sin x, t > 0, x ∈ (0, π/2)

2

∂t
∂x


 u(0, x) = sin x,
x ∈ (0, π/2)

u(t, 0) = 0,





 ∂u (t, π/2) = 0,
∂x
t≥0
t≥0
e si mostri l’ordine di convergenza temporale del metodo Eulero esponenziale con cui viene approssimata la soluzione analitica u(t∗ , x) al
tempo t∗ = 1.
01-02-2011
12. Si risolva il sistema di ODEs
 ′

 u (t) = −2v(t)u(t)
v ′ (t) = u(t)2 + z(t)2 − v(t)2 − 1

 z ′ (t) = −2(v(t) + u(t))z(t)
con dato iniziale


 u(0) = 1
v(0) = 2

 z(0) = 15
con il metodo di Crank–Nicolson fino ad un tempo finale t∗ = 1. Presa
come soluzione di riferimento quella ottenuta con 1000 passi temporali,
si mostri l’ordine del metodo e la corretta convergenza del metodo di
Newton.
181
13. Si applichi il metodo delle linee al problema di convezione-diffusionereazione nel dominio (t, x) ∈ [0, 1] × [0, 1]

∂u
∂ 2u
∂u


(t,
x)
=
ε
(t,
x)
+
(t, x) + ρu(t, x)(u(t, x) − 1/2)(1 − u(t, x))


 ∂t
∂x2
∂x
u(0, x) = 10x2 (1 − x)2 + 1/2


 ∂u

 (t, 0) = ∂u (t, 1) = 0
∂x
∂x
(ove ε = 1/100 e ρ = 10) e si mostri l’ordine di convergenza del metodo
Eulero esponenziale, avendo preso come soluzione di riferimento quella
ottenuta con un passo spaziale e un passo temporale entrambi pari a
1/100.
24-02-2011
14. Si risolva mediante un metodo di shooting il problema ai limiti

1


u′′ (x) = (32 + 2x3 − u(x)u′ (x)), x ∈ (1, 3)


8

u(1) = 17



43

 u(3) =
3
Sapendo che la soluzione analitica `e u(x) = x2 + 16/x, si determini
sperimentalmente il numero minimo di passi temporali per avere un
errore in norma infinito minore di 10−2 .
15. Si applichi il metodo delle linee al problema di diffusione non omogeneo

∂ 2u
5 t
x
∂u


(t,
x)
=
(t,
x)
+
e
sin
,

2

∂t
∂x
4
2



 u(0, x) = sin x ,
2


u(t,
0)
=
0,





 ∂u (t, π) = 0,
∂x
t > 0, x ∈ (0, π)
x ∈ (0, π)
t≥0
t≥0
e si mostri l’ordine di convergenza temporale del metodo esponenziale
punto medio con cui viene approssimata la soluzione analitica u(t∗ , x)
al tempo t∗ = 1.
21-06-2011
182
APPENDICE C. TEMI D’ESAME
16. Si risolva il seguente problema differenziale
 ′′

 u (x) + u(x) = 2 cos(x), x ∈ (0, 1]
u(0) = 0

 u′ (0) = 0
usando un metodo almeno del secondo ordine rispetto al passo di discretizzazione.
17. Si applichi il metodo delle linee al problema di diffusione-reazione

∂u
1 ∂ 2u


(t,
x)
=
(t, x) + sin(u(t, x)), t > 0, x ∈ (0, 1)

2

∂t
100
∂x


 u(0, x) = 10x(1 − x)2 ,
x ∈ [0, 1]

u(t, 0) = 0,
t≥0





 ∂u (t, 1) = 0,
t≥0
∂x
usando differenze finite centrate nello spazio e il metodo dei trapezi
nel tempo. Si mostri il corretto ordine di convergenza del metodo dei
trapezi per l’approssimazione della soluzione al tempo t∗ = 1.
18. Per il problema sopra, si proponga un metodo di Newton modificato per la risoluzione dei sistemi non lineari. Si confrontino i tempi
computazionali (con i comandi tic, toc) rispetto al caso di metodo di
Newton esatto quando si usino un passo spaziale ed un passo temporale
1
entrambi uguali a 100
.
11-07-2011
19. Si risolva il seguente problema ai limiti

2
′′
u(x)

+ 2 − ex , x ∈ (0, 1)
 u (x) = e
u′ (0) = 0


u(1) = 1
` possibile
usando il metodo delle differenze finite di ordine due. E
verificare l’ordine di convergenza? Perch´e?
183
20. Si applichi il metodo delle linee al problema di

∂u
1 ∂ 2u



(t,
x)
=
(t, x) + cos(u(t, x)),


∂t
50 ∂x2


 u(0, x) = 10x2 (1 − x) + 1,
 ∂u


(t, 0) = 0,


∂x


 u(t, 1) = 1,
diffusione-reazione
t > 0, x ∈ (0, 1)
x ∈ [0, 1]
t≥0
t≥0
usando differenze finite centrate nello spazio e il metodo Eulero implicito nel tempo. Si mostri il corretto ordine di convergenza del metodo di
Eulero implicito per l’approssimazione della soluzione al tempo t∗ = 1.
15-09-2011
21. La legge oraria (lineare) del moto di un proiettile sottoposto ad attrito
viscoso in regime laminare `e
 ′′
 ′′
′
′

 x (t) = −Bx (t) 
 y (t) = −By (t) − g
x(0) = 0
y(0) = 0

 x′ (0) = v cos(α) 
 y ′ (0) = v sin(α)
0
0
ove B = b/m, m = 0.5 la massa del proiettile e b = 0.01 il coefficiente
d’attrito, g = 9.81 l’accelerazione di gravit`a, v0 = 200 il modulo della
velocit`a iniziale e α = π/3 l’angolo di gittata. Determinare, mediante
una opportuna strategia, il punto di atterraggio x(T ) del proiettile.
22. Si applichi il metodo delle linee al problema di diffusione-reazione

1 ∂ 2u
∂u


=
+ u(1 − u)(u − 1/2), t > 0, x ∈ (0, 1)



∂t
100 ∂x2



x ∈ [0, 1]
 u(0, x) = 10x2 (1 − x)2 ,
∂u

(t, 0) = 0,
t≥0



∂x




 ∂u (t, 1) = 0,
t≥0
∂x
usando differenze finite centrate nello spazio e il metodo dei trapezi
nel tempo. Si mostri il corretto ordine di convergenza del metodo dei
trapezi per l’approssimazione della soluzione al tempo t∗ = 1.
29-09-2011
184
APPENDICE C. TEMI D’ESAME
23. Si risolva il seguente problema differenziale
 ′′
3
3

 y (x) = 2y(x) − 6y(x) − 2x ,

y(1) = 2


 y(2) = 5
2
x ∈ (1, 2)
mostrando il corretto ordine di convergenza del metodo scelto.
24. Si applichi il metodo delle linee al problema di diffusione non omogeneo

∂ 2u
x
5 t
∂u


(t, x) =
e
cos
, t > 0, x ∈ (π, 2π)
(t,
x)
+


∂t
∂x2
4
2



 u(0, x) = cos x ,
x ∈ (π, 2π)
2


u(t, π) = 0,
t≥0





 ∂u (t, 2π) = 0,
t≥0
∂x
e si mostri il corretto ordine di convergenza temporale del metodo esponenziale punto medio con cui viene approssimata la soluzione analitica
u(t∗ , x) al tempo t∗ = 1.
03-02-2012
25. Si risolva il seguente problema differenziale

y ′ (x)
′′


 y (x) + x = cos(y(x)) x ∈ (0, 1]
y(0) = 1


 ′
y (0) = 0
Si descriva esattamente quale metodo `e stato usato e se ne mostri il
corretto ordine di convergenza.
Si discuta inoltre il caso in cui y(0) = π/2.
26. Si applichi il metodo delle linee al problema di diffusione non omogeneo

∂u
∂ 2u
3


(t,
x)
=
(t, x) + et/2 sin x, t > 0, x ∈ (−π, π/2)
 ∂t
2

∂x
2


 u(0, x) = sin x,
x ∈ (−π, π/2)

u(t, −π) = 0,





 ∂u (t, π/2) = 0,
∂x
t≥0
t≥0
185
usando differenze finite nello spazio e l’integratore esponenziale punto
medio nel tempo. Si mostri il corretto ordine di convergenza spaziale
con cui viene approssimata la soluzione u(t∗ , x) al tempo t∗ = 1.
24-02-2012
27. Si risolva il seguente problema differenziale ai valori iniziali
 ′
y1 (t) = −2y1 (t)y2 (t)



 y ′ (t) = y (t)2 − y (t)2 + y (t)2 − 1
1
2
3
2
′

y3 (t) = −2(y1 (t) + y2 (t))y3 (t)



y1 (0) = y2 (0) = y3 (0) = 1
fino al tempo t∗ = 1 usando il metodo Runge–Kutta semiimplicito di
tableau
0
1
0
1
2
1
2
1
2
1
2
e se ne calcoli numericamente l’ordine.
28. Si applichi il metodo delle linee al problema di diffusione lineare

∂u
x − x2 ∂ 2 u


(t,
x)
=
· 2 (t, x), t > 0, x ∈ (0, 1)



2
∂x
 ∂t
u(0, x) = x2 − x,
x ∈ (0, 1)


u(t, 0) = 0,
t≥0




u(t, 1) = 0,
t≥0
usando differenze finite nello spazio e il metodo di Eulero implicito nel
tempo. Si mostri il corretto ordine di convergenza temporale con cui
viene approssimata la soluzione al tempo t∗ = 1. Qual `e l’ordine di
convergenza spaziale?
21-06-2012
29. Dei seguenti due metodi multistep
18
9
2
6
y n+2 + y n+1 − y n = k f (tn+3 , y n+3 )
11
11
11
11
9
3
6
18
y n+3 − y n+2 + y n+1 − y n = k f (tn+3 , y n+3 )
11
11
11
11
si dica quale `e consistente e perch´e e se ne determini numericamente
l’ordine.
y n+3 −
186
APPENDICE C. TEMI D’ESAME
30. Si risolva il problema differenziale di diffusione-trasporto-reazione

∂u
∂u
∂ 2u



+
c
=
d
+ ρu(u − 1/2)(1 − u), t > 0, x ∈ (0, 1)

2

∂t
∂x
∂x


 u(t, 0) = 1,
t>0

∂u


(t, 1) = 0,
t>0


∂x


 u(0, x) = (x − 1)2 ,
x ∈ (0, 1)
con d = 0.01, c = 8, ρ = 50, usando differenze finite nello spazio
(con passo 1/100) ed un opportuno metodo implicito nel tempo fino al
tempo finale t∗ = 0.1, usando il metodo di Newton per la risoluzione dei
sistemi non lineari. A cosa sono dovute le oscillazioni vicino al bordo
x = 1 al tempo finale? Come si possono eliminare?
05-07-2012
31. Si risolva il seguente problema ai limiti
 ′′
′
2
2x

 u (x) − u (x) + u (x) = e ,
u′ (0) = 1

 u(1) = e
x ∈ (0, 1)
con il metodo delle differenze finite. Si verichi il corretto ordine di
approssimazione di u′ (0).
32. Si applichi il metodo delle linee al problema di diffusione non omogeneo

∂u
∂ 2u
x
2t


(t,
x)
=
4
(t,
x)
+
3e
,
cos

2

∂t
∂x
2



 u(0, x) = cos x ,
2


∂u


(t, 0) = 0,



 ∂x
u(t, π) = 0,
t > 0, x ∈ (0, π)
x ∈ (0, π)
t≥0
t≥0
e si mostri il corretto ordine di convergenza temporale del metodo esponenziale punto medio con cui viene approssimata la soluzione analitica
u(t∗ , x) al tempo t∗ = 1.
10-09-2012
187
33. Dato il sistema differenziale del primo ordine
 ′

y1 (t) = y2 (t)y3 (t) sin t − y1 (t)y2 (t)y3 (t)



 ′
1
y2 (t) = −y1 (t)y3 (t) sin t + y1 (t)y3 (t)
20



1

 y3′ (t) = y12 (t)y2 (t) − y1 (t)y2 (t)
20
p
si dimostri che m(t) = y1 (t)2 + y2 (t)2 + y3 (t)2 rimane costante nel
tempo. Si applichi il metodo
con dato iniziale
√ di Eulero implicito,
∗
y1 (0) = y2 (0) = y3 (0) = 3/3 fino al tempo t = 1 e si determini
sperimentalmente il numero di passi temporali necessari perch´e |m(0)−
˜
m(1)|
˜
≤ 2 · 10−5 , ove m(t)
˜
`e l’approssimazione di m(t) calcolata sulla
soluzione numerica.
34. Si risolva il seguente problema di convezione-diffusione

∂u
∂ 2u
∂u



(t,
x)
=
4
(t, x) − 2 (t, x), t ≥ 0, x ∈ (0, 1)

2

∂t
∂x
∂x


 u(0, x) = x2 ,
x ∈ (0, 1)

∂u


(t, 0) = 0,
t≥0


∂x


 u(t, 1) = 1,
t≥0
usando differenze finite del secondo ordine con passo h = 1/50 nello spazio e il metodo di Eulero esplicito nel tempo fino a t∗ = 1. Perch´e serve
un passo temporale minore di circa 1/20000 per avere convergenza? Si
mostri infine il corretto ordine di convergenza temporale.
24-09-2012
35. Si trovi sperimentalmente l’ordine del seguente metodo di Runge–Kutta
semiimplicito
1
2
1
2
1
e si dimostri che equivale al metodo punto medio implicito
k y n + y n+1
y n+1 = y n + kf tn + ,
2
2
Sugg.: per quest’ultimo si calcoli (y n + y n+1 )/2. . .
188
APPENDICE C. TEMI D’ESAME
36. Si risolva il seguente problema di convezione-diffusione-reazione

∂u
∂ 2u
∂u



+c
= d 2 (t, x) + ρu2 (1 − u), t ≥ 0, x ∈ (0, 1)


∂t
∂x
∂x


 u(0, x) = −x2 + 1,
x ∈ (0, 1)

∂u


(t, 0) = 0,
t≥0


∂x


 u(t, 1) = 0,
t≥0
con d = 0.1, c = 4, ρ = 50, usando differenze finite nello spazio (con
passo 1/100) ed un metodo del secondo ordine implicito nel tempo fino
al tempo finale t∗ = 0.1, usando il metodo di Newton per la risoluzione
dei sistemi non lineari. Si mostri il corretto ordine di convergenza
temporale al tempo finale.
06-02-2013
37. Si risolva il seguente problema differenziale
s


 y ′ (x) = 2 − y(x) , x > 0
y(x)


y(0) = 0
usando un opportuno metodo implicito. Si mostri il corretto ordine di
convergenza con cui viene approssimata la soluzione y(x∗ ) per x∗ = π/2.
(Sugg.: y ′ (x) > 0 pertanto y(x) `e crescente e dunque y(x) > 0 per
x > 0.)
38. Si risolva il seguente problema di diffusione-trasporto

1 ∂ 2u
∂u
∂u


(t, x) =
(t, x) −
(t, x) + e−t/2 cos(x) t > 0, x ∈ (0, π/2)

2

∂t
2
∂x
∂x


 u(0, x) = sin(x)
x ∈ (0, π/2)

u(t, 0) = 0





 ∂u u(t, π/2) = 0
∂x
t>0
t>0
usando le differenze finite nello spazio e il metodo esponenziale—punto
medio nel tempo. Si mostri il corretto ordine di convergenza temporale
con cui viene approssimata la soluzione u(t∗ , x) al tempo finale t∗ = 1.
20-02-2013
189
39. Si risolva il problema differenziale
 ′′
′

 u (x) = −3u (x) + u(x) − 2 sin x + 3 cos x, x ∈ (0, 2π)
u′ (0) = 1

 u(2π) = 0
mostrando il corretto ordine di convergenza del metodo scelto.
40. Si applichi il metodo delle linee al problema di diffusione-reazione

∂u
1 ∂ 2u


(t, x) =
(t, x) + sin(u(t, x)), t > 0, x ∈ (0, 1)


∂t
50 ∂x2


 u(0, x) = 10x(1 − x)2 ,
x ∈ [0, 1]

u(t, 0) = 0,
t≥0





 ∂u (t, 1) = 0,
t≥0
∂x
usando differenze finite centrate nello spazio con passo h = 1/49. Si
mostrino i corretti ordini di convergenza dei metodi Eulero esponenziale e Eulero–Rosenbrock esponenziale con cui viene approssimata una
soluzione di riferimento al tempo t∗ = 1.
27-06-2013
41. Si determini analiticamente l’ordine del seguente metodo multistep
y n+3 −
18
9
2
6
y n+2 + y n+1 − y n = k f (tn+3 , y n+3 )
11
11
11
11
Lo si applichi poi al problema

 y ′ (t) = − 1 y(t) 1 − y(t) ,
2
3

y(0) = 1
t>0
e si determini l’errore rispetto alla soluzione analitica
1
y(t) =
3e− 2 t
1
2 + e− 2 t
al tempo t∗ = 10, usando 10 passi temporali.
(Per i valori iniziali y1 e y2 si usi pure la soluzione analitica.)
190
APPENDICE C. TEMI D’ESAME
42. Si applichi il metodo delle linee al problema di diffusione-trasporto

1 ∂ 2u
∂u
∂u



(t,
x)
=
(t, x) + 6 (t, x) t > 0, x ∈ (0, 1)

2

∂t
100
∂x

∂x 


 u(0, x) = 5x2 x − 4 ,
x ∈ [0, 1]
5


 ∂u


(t, 0) = 0,
t≥0


∂x


 u(t, 1) = 1,
t≥0
usando differenze finite centrate nello spazio con un opportuno passo
di discretizzazione spaziale. Si mostri il corretto ordine di convergenza
del metodo BDF di ordine 2 al tempo t∗ = 0.1.
18-07-2013
43. Si consideri il seguente problema differenziale
 ′′
u (x)
′


 10 + 900u (x) + 500(sin(u(x)) + u(x)) = 0,
x ∈ (0, 10]
u(0) = π


 ′
u (0) = 0
Lo si risolva con un opportuno metodo esplicito, giustificando la scelta
del passo di discretizzazione.
44. Si applichi il metodo delle linee al problema di

∂u
1 ∂ 2u



(t,
x)
=
(t, x) + sin(u(t, x))


∂t
100 ∂x2


 u(0, x) = 5x2 (x − 1),

∂u


(t, 0) = 0,


∂x


 u(t, 1) = 0,
diffusione-reazione
t > 0, x ∈ (0, 1)
x ∈ [0, 1]
t≥0
t≥0
usando differenze finite centrate nello spazio e il metodo punto medio
implicito
k y n + y n+1
y n+1 = y n + kf tn + ,
2
2
nel tempo. Si mostri il corretto ordine di convergenza temporale per la
soluzione al tempo t∗ = 1.
05-09-2013
191
45. Si risolva il seguente problema differenziale

1


y ′′′ (x) + y(x)y ′′ (x) = 0, x ∈ (0, 1)


2


y(0) = 0


y ′ (0) = 0



 y ′′ (0) = 10
con un opportuno metodo del secondo ordine implicito. Che valore
dovrebbe y ′′ (0) affinch´e risultasse y ′ (1) = 11?
46. Si applichi il metodo delle linee al problema di

∂u
1 ∂ 2u



(t,
x)
=
(t, x) + cos(u(t, x)),


∂t
20 ∂x2


 u(0, x) = 10x2 (1 − x),

∂u


(t, 0) = 0,


∂x


 u(t, 1) = 0,
diffusione-reazione
t > 0, x ∈ (0, 1)
x ∈ [0, 1]
t≥0
t≥0
usando differenze finite centrate nello spazio con passo h = 1/49. Si
mostrino i corretti ordini di convergenza dei metodi Eulero esponenziale e Eulero–Rosenbrock esponenziale con cui viene approssimata una
soluzione di riferimento al tempo t∗ = 1.
19-09-2013
47. Data la funzione u(x) che soddisfa il seguente problema differenziale
(log ≡ loge ≡ ln)

2
2 ′
′′


 u (x) = x u (x) − x2 u(x) + sin(log x), x ∈ (1, 2)
u(1) = 1



u(2) = 2
si calcoli quanto vale u′ (2) con almeno 4 cifre significative corrette.
48. Si applichi il metodo delle linee al problema di diffusione-reazione

π π 1 ∂ 2u
∂u

2
−2t
2


(t, x) =
(t, x) + u (t, x) − e sin (2x), t > 0, x ∈
,


∂t
4 ∂x2
4 2

h
i


π π

 u(0, x) = sin(2x),
x∈
,
4 2

∂u π 

t,
= 0,
t≥0


∂x
4



 u t, π = 0,

t≥0
2
192
APPENDICE C. TEMI D’ESAME
usando differenze finite centrate nello spazio e il metodo di Eulero implicito nel tempo. Si mostri il corretto ordine di convergenza temporale
con cui viene approssimata la soluzione analitica u(t, x) al tempo t∗ = 1.
11-02-2014
49. Si risolva il seguente problema differenziale
 ′
y1 (t) = −2y1 (t)y2 (t)



 y ′ (t) = y1 (t)2 − y2 (t)2 + y3 (t) − 1
2
y
 3′ (t) = −4(y1 (t) + y2 (t))y3 (t)


√

y1 (0) = 1/2, y2 (0) = 2, y3 (0) = 10
fino al tempo t∗ = 1 usando il metodo Eulero–Rosenbrock esponenziale
e se ne mostri l’ordine di convergenza per l’approssimazione di y(t∗ ).
50. Si consideri il seguente problema di diffusione-trasporto

π ∂u
∂u
∂ 2u
π −t



(t, x) + c (t, x) = d 2 (t, x) + c e cos
x t > 0, x ∈ (0, 1)


∂t
∂x
∂x
2
2



 u(t, 0) = 0
t>0
∂u


(t, 1) = 0
t>0


∂x



π

 u(0, x) = sin
x
x ∈ (0, 1)
2
ove c = 150 e d = 4/π 2 e se ne calcoli la soluzione analitica. Usando il
metodo dei trapezi nel tempo con passo k = 1/200, si mostri il corretto
ordine di convergenza spaziale con cui viene approssimata la soluzione
analitica al tempo t∗ = 1 usando la diffusione articiale φU (Pe) corrispondente allo schema upwind e φSG (Pe) corrispondente allo schema
Scharfetter–Gummel, ove Pe `e il numero di P´eclet di griglia ch/(2d).
25-02-2014
51. Si risolva il seguente problema differenziale
 ′′
′
−x
x

 u (x) + u (x) + e u(x) = e , x ∈ (0, 1)
u(0) + u′ (0) = 0

 u(1) = 1
con un metodo del secondo ordine. Si verifichi che la condizione al
bordo x = 0 `e soddisfatta dalla soluzione numerica.
193
52. Si applichi il metodo delle linee al problema di diffusione-reazione

∂u
1 ∂ 2u


(t,
x)
=
(t, x) + cos(u(t, x)) t > 0, x ∈ (0, 1)

2

∂t
50
∂x



u(0, x) = x(x − 1)2 ,
x ∈ [0, 1]

u(t, 0) = 0,
t≥0





 ∂u (t, 1) = 0,
t≥0
∂x
usando differenze finite centrate nello spazio e il metodo Runge–Kutta
di tableau
1
a
2
b
(a e b da determinare). Si mostri il corretto ordine di convergenza
temporale con cui viene approssimata la soluzione al tempo t∗ = 1.
01-07-2014
53. Si consideri il problema differenziale
(
y ′ (t) = λ(y(t) − cos(t)), t > 0
y(0) = 0
con λ = −20.
(a) Se ne determini la soluzione analitica. (Sugg.: variazione delle
costanti).
(b) Si mostri il corretto ordine di convergenza del metodo Runge–
Kutta semiimplicito di tableau
√
3+ 3
6
√
3− 3
6
√
3+ 3
6
√
− 33
1
2
√
3+ 3
6
1
2
nell’approssimazione di y(t∗ ), con t∗ = 1.
54. Si consideri il seguente problema di diffusione-reazione

∂u
1 ∂ 2u


(t,
x)
=
(t, x) + u2 (t, x) t > 0, x ∈ (0, 1)

2

∂t
20
∂x


 ∂u
(t, 0) = 0
t>0
∂x




u(t, 1) = 1
t>0



2
u(0, x) = x
194
APPENDICE C. TEMI D’ESAME
Usando il metodo delle linee, si mostri il corretto ordine di convergenza
del metodo Eulero–Rosenbrock esponenziale per l’approssimazione di
u(t∗ , x), con t∗ = 1.
29-09-2014
55. Si risolva il problema differenziale

d2
d


−
u(x) +
(1 − u(x))2 = 0


2
 dx
dx
u(1) = 0




 u(2) = 1
2
e si mostri il corretto ordine di convergenza rispetto alla soluzione
analitica u(x) = 1 − 1/x.
56. Si risolva il problema differenziale

∂2
∂


u(t, x) =
u(t, x) − 3u(t, x) + x sin(t),


∂t
∂x2



 u(0, x) = sin x ,
2


u(t, 0) = 0,





 ∂u (t, π) = 0,
∂x
t > 0, x ∈ (0, π)
x ∈ (0, π)
t≥0
t≥0
con il metodo esponenziale punto medio e se ne mostri il corretto ordine
di convergenza al tempo finale t∗ = 1.
Parte 5
Bibliografia
195
Bibliografia
[1] J.
P.
Boyd,
Chebyshev
and
Fourier
Spectral
Methods,
DOVER
Publications,
Inc.,
2000.
http://www-personal.umich.edu/~jpboyd/BOOK_Spectral2000.html
[2] C. Canuto, M. Y. Hussaini, A. Quarteroni, and T. A. Zang, Spectral
Methods in Fluid Dynamics, Springer-Verlag, 1986.
[3] V. Comincioli, Analisi numerica: metodi, modelli, applicazioni, McGraw–
Hill, 1995.
[4] E. Hairer and G. Wanner, Solving Ordinary Differential Equations II, Stiff
and Differential-Algebraic Problems, Springer, Second Revised Edition,
2002.
[5] E. Hairer, S. P. Nørsett, and G. Wanner, Solving Ordinary Differential
Equations I, Nonstiff Problems, Springer, Second Revised Edition, 2000.
[6] W. Hundsdorfer, Numerical Solution of Advection-Diffusion-Reaction Equations, Lecture notes, Thomas Stieltjes Institute, 2000.
http://homepages.cwi.nl/~willem/Coll_AdvDiffReac/notes.pdf
[7] A. Iserles, A First Course in the Numerical Analysis of Differential
Equations, Cambridge Texts in Applied Mathematics, second ed., 2009.
[8] R. J. Leveque, Numerical Methods for Conservation Laws, Lectures in
Mathematics, Birkh¨auser, 1992.
[9] A. Quarteroni, Modellistica numerica per problemi differenziali, Springer,
terza edizione, 2006.
196