Sei sulla pagina 1di 167

Dispense di

Metodi Numerici
per le Equazioni Differenziali
Dott. Marco Caliari
a.a. 2012/13
La versione pi`
u aggiornata (al 9 agosto 2013) si trova
allindirizzo
http://profs.sci.univr.it/caliari/aa1213/equazioni differenziali/dispense.pdf

Questi appunti non hanno nessuna pretesa di completezza. Sono solo


alcune note ed esercizi che affiancano linsegnamento di Metodi Numerici per
le Equazioni Differenziali. Sono inoltre da considerarsi in perenne under
revision e pertanto possono contenere discrepanze, inesattezze o errori.

Indice
0

Preliminari

1 Interpolazione polinomiale a tratti


1.1 Interpolazione lineare a tratti . . . . . . . . . . . . . . . . . .
1.1.1 Errore di interpolazione . . . . . . . . . . . . . . . . .

8
8
9

2 Formule di quadratura gaussiana


10
2.1 Quadratura gaussiana di Chebyshev(-Lobatto) . . . . . . . . . 11
3 Metodi iterativi per sistemi lineari
3.1 Metodi di Richardson . . . . . . . . . . . . . . . . . . .
3.1.1 Metodo del gradiente precondizionato . . . . . .
3.1.2 Metodo del gradiente coniugato precondizionato
3.1.3 Test darresto . . . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

13
13
14
15
16

4 Memorizzazione di matrici sparse


17
4.1 Alcuni comandi per matrici sparse . . . . . . . . . . . . . . . . 18
5 Sistemi tridiagonali
6 Metodo di Newton
6.1 Metodo di Newton inesatto

19
21
. . . . . . . . . . . . . . . . . . . 22

7 Esponenziale di matrice
7.1 Formula delle variazioni delle costanti . . .
7.2 Calcolo di exp(A) . . . . . . . . . . . . . . .
7.2.1 Matrici piene, di modeste dimensioni
7.2.2 Matrici sparse, di grandi dimensioni .
8 Esercizi

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

23
23
24
24
26
28

INDICE

BVPs

30

9 Introduzione

31

10 Differenze finite
10.1 Differenze finite centrate del secondo ordine . . . . . . .
10.2 Convergenza per un problema modello . . . . . . . . . .
10.2.1 Unicit`a . . . . . . . . . . . . . . . . . . . . . . . .
10.2.2 Esistenza . . . . . . . . . . . . . . . . . . . . . .
10.2.3 Regolarit`a . . . . . . . . . . . . . . . . . . . . . .
10.2.4 Esistenza ed unicit`a per il problema discretizzato
10.2.5 Consistenza . . . . . . . . . . . . . . . . . . . . .
10.2.6 Propriet`a di A . . . . . . . . . . . . . . . . . . . .
10.2.7 Stabilit`a . . . . . . . . . . . . . . . . . . . . . . .
10.2.8 Convergenza . . . . . . . . . . . . . . . . . . . . .
10.3 Altre differenze finite . . . . . . . . . . . . . . . . . . . .
10.3.1 Su nodi non equispaziati . . . . . . . . . . . . . .
10.3.2 Non centrate . . . . . . . . . . . . . . . . . . . .
10.3.3 Di ordine pi`
u elevato . . . . . . . . . . . . . . . .
10.4 Condizioni al bordo . . . . . . . . . . . . . . . . . . . . .
10.4.1 Condizioni di Dirichlet . . . . . . . . . . . . . . .
10.4.2 Condizioni di Neumann . . . . . . . . . . . . . .
10.4.3 Importanza delle condizioni al bordo . . . . . . .
10.5 Un esempio: lequazione della catenaria . . . . . . . . . .
10.5.1 Iterazioni di punto fisso . . . . . . . . . . . . . . .
10.5.2 Metodo di Newton . . . . . . . . . . . . . . . . .
10.6 Norme ed errori . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

32
32
35
35
36
36
37
38
38
38
39
40
40
41
41
41
41
42
43
44
45
45
46

11 Metodo di shooting
48
11.1 Metodo di bisezione . . . . . . . . . . . . . . . . . . . . . . . . 48
11.2 Metodo di Newton . . . . . . . . . . . . . . . . . . . . . . . . 49
11.3 Problema ai limiti con frontiera libera . . . . . . . . . . . . . . 50
12 Equazione di Poisson
52
12.1 Equazione di Poisson bidimensionale . . . . . . . . . . . . . . 52
12.1.1 Condizioni al bordo di Dirichlet . . . . . . . . . . . . . 52
12.1.2 Condizioni al bordo miste . . . . . . . . . . . . . . . . 54
13 Metodi variazionali
56
13.1 Un problema modello . . . . . . . . . . . . . . . . . . . . . . . 56
13.1.1 Metodo di approssimazione variazionale . . . . . . . . . 58

INDICE
13.1.2 Estensione al caso bidimensionale
13.2 Metodi spettrali . . . . . . . . . . . . . .
13.2.1 Trasformata di Fourier . . . . . .
13.2.2 Trasformata di Fourier discreta .
13.3 Metodi di collocazione . . . . . . . . . .
13.3.1 Condizioni al bordo . . . . . . . .

5
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

66
66
68
69
76
77

14 Esercizi

81

83

ODEs

15 Introduzione
84
15.1 Riduzione in forma autonoma . . . . . . . . . . . . . . . . . . 85
15.2 Equazioni di ordine superiore al primo . . . . . . . . . . . . . 85
16 Metodi ad un passo
16.1 Metodo di Eulero . . . . . . . . . . . . . .
16.2 Metodo dei trapezi . . . . . . . . . . . . .
16.3 theta-metodo . . . . . . . . . . . . . . . .
16.3.1 Risoluzione di un metodo implicito
16.3.2 Newton inesatto e passo variabile .
16.3.3 Caso lineare . . . . . . . . . . . . .
16.4 Verifica dellimplementazione . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

86
86
88
90
92
94
95
95

17 Metodi multistep
17.1 Metodi di Adams-Bashforth . . . . . . .
17.2 Metodi lineari multistep . . . . . . . . .
17.2.1 Metodi BDF . . . . . . . . . . . .
17.3 Consistenza e stabilit`a . . . . . . . . . .
17.4 Influenza degli errori di arrotondamento

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

97
97
99
101
103
108

.
.
.
.
.

18 Metodi di Runge-Kutta
18.1 Metodi di RungeKutta espliciti . . . . . . . . . . . . . . . .
18.2 Un esempio di metodo di RungeKutta implicito . . . . . . .
18.3 Metodi di Runge-Kutta embedded . . . . . . . . . . . . . . .

110
. 110
. 115
. 118

19 A-stabilit`
a
19.1 A-stabilit`a dei metodi di Runge-Kutta espliciti . . . . .
19.2 A-stabilit`a dei metodi lineari multistep . . . . . . . . .
19.3 Equazioni stiff . . . . . . . . . . . . . . . . . . . . . . .
19.3.1 Risoluzione di un metodo implicito per problemi

122
. 124
. 126
. 127
. 129

. . .
. . .
. . .
stiff

INDICE

20 Integratori esponenziali

130

21 Esercizi

133

PDEs

22 Equazioni ADR
22.1 Equazione del calore . . . . . . . . . . . . . . . . .
22.1.1 Esistenza di una soluzione . . . . . . . . . .
22.1.2 Unicit`a della soluzione . . . . . . . . . . . .
22.2 Metodo di Fourier . . . . . . . . . . . . . . . . . . .
22.3 Metodo delle linee . . . . . . . . . . . . . . . . . . .
22.3.1 Differenze finite . . . . . . . . . . . . . . . .
22.3.2 Condizioni al bordo di Dirichlet . . . . . . .
22.3.3 Condizioni al bordo di Neumann (costanti) .
22.4 Equazione di trasporto-diffusione . . . . . . . . . .
22.4.1 Stabilizzazione mediante diffusione artificiale
22.4.2 Elementi finiti . . . . . . . . . . . . . . . . .
22.4.3 Errori spaziali e temporali . . . . . . . . . .
22.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . .

136
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

137
. 137
. 137
. 140
. 141
. 142
. 143
. 144
. 145
. 145
. 147
. 150
. 151
. 152

Temi desame

154

Bibliografia

166

Bibliografia

167

Parte 0
Preliminari

Capitolo 1
Interpolazione polinomiale a
tratti
Data una funzione f : [a, b] R e uninsieme {xi }m
i=1 [a, b] di nodi ordinati
(xi1 < xi ), consideriamo linterpolante polinomiale a tratti pck1 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 )k1 + ai,2 (x xi )k2 + . . . + ai,k1 (x xi ) + ai,k .

(1.1)

Dunque, linterpolante polinomiale a tratti `e completamente nota una volta


noti i nodi e i coefficienti di ogni polinomio.
In GNU Octave, linterpolante polinomiale a tratti `e definita mediante
una struttura solitamente chiamata pp (piecewise polynomial) che si costruisce con il comando mkpp(x,P), ove x `e il vettore di nodi e P `e la matrice, con
riferimento a (1.1),
Pij = ai,j .
Nota una struttura pp, `e possibile valutare il valore dellinterpolante in un
generico target x con il comando ppval(pp,xbar).

1.1

Interpolazione lineare a tratti

Dati i vettori [x1 , . . . , xm ]T e [f1 , . . . , fm ]T , nellintervallo [xi , xi+1 ] linterpolante lineare a tratti coincide con il polinomio di grado uno
fi+1 fi
(x xi ) + fi
hi
Pertanto, si costruisce la corrispondente struttura pp con il comando
> pp = mkpp(x,[(f(2:m)-f(1:m-1))./h,f(1:m-1)])
8

1.1. INTERPOLAZIONE LINEARE A TRATTI

1.1.1

Errore di interpolazione

Il risultato fondamentale sullerrore di interpolazione `e


f (x) pn1 f (x) =

f (n) ()
(x x1 ) (x x2 ) . . . (x xn )
n!

ove pn1 f `e il polinomio di grado n 1 interpolatore di f sui nodi {xi }ni=1 e


un opportuno punto nellinvolucro convesso di x {xi }ni=1 . Per linterpolante
lineare a tratti pc1 f , si ha dunque per x [xi , xi+1 ]
f (x) pc1 f (x) =

f ()
(x xi )(x xi+1 )
2

(1.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
h2
kf pc1 f k kf k
8
Derivando rispetto a x lequazione (1.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 2
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) =

f (x)g(x)w(x)dx

con lipotesi
Z

|x|k w(x)dx < ,

k0

Allora, esiste ununica famiglia {pj (x)}j , pj (x) polinomio di grado j, ortonormale rispetto al prodotto scalare
Z

pj (x)pi (x)w(x)dx = ij

Gli zeri {xn }m


n=1 del polinomio pm (x) sono interni allintervallo (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 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

pj (x)w(x)dx =

m
X

pj (xn )wn ,

n=1

10

0 j 2m 1

2.1. QUADRATURA GAUSSIANA DI CHEBYSHEV(-LOBATTO)

11

In particolare
ij =

pj (x)pi (x)w(x)dx =

m
X

pj (xn )pi (xn )wn ,

n=1

0 i, j m 1

Nel caso in cui (a, b) sia limitato, esiste ununica formula di quadratura esatta
fino al grado polinomiale 2m 3 che usa come nodi x1 = a, xm = b e gli zeri
m1
{
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 =

pj (x)pi (x)w(x)dx =

m
X

pj (
xn )pi (
xn )wn ,

n=1

0im3
0j m1

p
La famiglia {j (x)}m
e ovviamente ortonormale
j=1 , ove j (x) = pj1 (x) w(x) `
rispetto al prodotto scalare
(f, g) =

f (x)g(x)dx

e per essa valgono le osservazioni fatte sopra riguardo al calcolo degli integrali.

2.1

Quadratura gaussiana di Chebyshev e di


ChebyshevLobatto

Per integrali del tipo

f (x)

dx
1 x2

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) Tj1 (x),

j1

Gli zeri del polinomio di grado m soddisfano


m arccos(x) =

+ (n 1),
2

1nm

12

CAPITOLO 2. 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

1nm

(la seconda formula produce nodi anche numericamente simmetrici) e i corrispondenti pesi di quadratura sono costanti e valgono
wn =

,
m

1nm

I nodi di (Gauss)ChebyshevLobatto sono invece

(n 1)
(n 1)

= sin
,
xn = cos
m1
2
m1

1nm

e i corrispondenti pesi

per n = 1 o n = m
2(m 1)
wn =

per 2 n m 1
m1

Capitolo 3
Metodi iterativi per sistemi di
equazioni lineari
I metodi iterativi per la soluzione del sistema lineare
Ax = b

(3.1)

si basano sullidea 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,

l1

(3.2)

Posto e(l) = x x(l) , si ha


e(l) = Bel1 ,

B = P 1 M = I P 1 A ,

ove B `e chiamata matrice di iterazione.


Lemma 1. Si ha liml e(l) = 0 per ogni e(1) se e solo se liml B l = 0,
cio`e se e solo se (B) < 1.

3.1

Metodi di Richardson

Indicato con r(l) il residuo


r(l) = b Ax(l) = Ax Ax(l) = A(x x(l) ) = Ae(l) ,
13

14

CAPITOLO 3. METODI ITERATIVI PER SISTEMI LINEARI

il metodo (3.2) pu`o essere riscritto come


P (x(l+1) x(l) ) = r(l) .

(3.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
(3.3) sia facile.
Una generalizzazione dello schema (3.3) `e il metodo di Richardson: dato
x(1) , 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) = bAx(1) ,
lalgoritmo per calcolare x(l+1) `e
P z (l) = r(l)
x(l+1) = x(l) + z (l)

(3.4)

r(l+1) = r(l) Az (l)


Il costo di uniterazione `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 lordine 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.

3.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
sia minima. Si ha

kx x(l+1) k2A = (x x(l) l z (l) )T A(x x(l) l z (l) ) =


T

= l2 z (l) Az (l) 2l z (l) A(x x(l) ) + (x x(l) )T A(x x(l) )

3.1. METODI DI RICHARDSON

15

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) , lalgoritmo per calcolare x(l+1) `e
P z (l) = r(l)
T

z (l) r(l)

l =

z (l) Az (l)
(l+1)
x
= x(l) + l z (l)

(3.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).

3.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 lintroduzione di un ulteriore


parametro l . Dati x(1) , r(1) , P z (1) = r(1) e p(1) = z (1) , lalgoritmo 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)
(l+1)
=z
+ l+1 p(l)

(3.6)

16

CAPITOLO 3. METODI ITERATIVI PER SISTEMI LINEARI

Teorema 1. 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 dellerrore
Vale la seguente stima dellerrore:
!l1
p
1 A) 1
cond
(P
2
ke(l) kA 2 p
ke(1) kA
1
cond2 (P A) + 1
dalle quale si osserva che

la stima derrore decresce in ogni caso, poiche 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.

3.1.3

Test darresto

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

(3.7)

che coincide con il precedente nel caso in cui come x(1) venga scelto il vettore
di zeri.

Capitolo 4
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 lelemento (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 dallindice
0, gli array ridx e cidx hanno elementi decrementati di uno.
In GNU Octave, il formato CCS e limplementazione del prodotto matrice-vettore sono automaticamente usati dalla function sparse e dalloperatore *, rispettivamente.
17

18

CAPITOLO 4. MEMORIZZAZIONE DI MATRICI SPARSE

4.1

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

... ...

vN 1 1 vN 2

Capitolo 5
Sistemi tridiagonali
La risoluzione di sistemi tridiagonali
Ax = b
con

a1
b1

0
A=
...

0
0

c1 0 . . .
...
0
a2 c 2
0
...
0

..
... ... ...
...
.
..
... ... ...
...
.

... ...
bn2 an1 cn1
... ... 0
bn1 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 . . . . . . n1 cn1
0 . . . 0 n1 1
0 ... ...
0
n
con

1 = a1
k1 = bk1 /k1 ,

k = ak k1 ck1 , 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 k1 yk1 , k = 2, 3, . . . n
19

20
e

CAPITOLO 5. SISTEMI TRIDIAGONALI


(

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 6
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)

(6.1)

ove J (r) `e la matrice Jacobiana, definita da


(r)

Jij =

fi (x(r) )
(r)

xj

Il criterio darresto solitamente usato `e


kx(r) k tol
In Matlab/Octave limplementazione potrebbe essere:
21

(6.2)

22

CAPITOLO 6. METODO DI NEWTON

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

6.1

Metodo di Newton inesatto

Il metodo di Newton (6.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 7
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)

7.1

Formula delle variazioni delle costanti

Data lequazione differenziale


(
y (t) = ay(t) + b(t, y(t)),
y(t0 ) = y0

t>0

(7.1)

y(t) R, la soluzione pu`o essere scritta analiticamente mediante la formula


delle variazioni delle costanti
Z t
(tt0 )a
e(t )a b(, y( ))d
(7.2)
y(t) = e
y0 +
t0

Infatti, si ha

(tt0 )a

y (t) = ae

y0 +a

e(t )a b(, y( ))d +e(tt)a b(t, y(t)) = ay(t)+b(t, y(t))

t0

23

24

CAPITOLO 7. ESPONENZIALE DI MATRICE

Si osservi che
Z t

(t )a

t0

ove

t
1 (t )a
ae
d = e
=
a
t0
t0
(tt
)a
0

1
e
1
= 1 e(tt0 )a = (t t0 )
=
a
(t t0 )a
= (t t0 )1 ((t t0 )a) ,

1
d =
a

(t )a

ez 1 X z j
1 (z) =
=
z
(j + 1)!
j=0

e, analogamente,
Z

(7.3)

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

(7.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

7.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.

7.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.

7.2. CALCOLO DI EXP(A)

25

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 unapprossimazione
razionale della funzione esponenziale
a1 z p1 + a2 z p2 + . . . + ap
e
,
b1 z q1 + b2 z q2 + . . . + bq
z

(7.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
Lapprossimazione di Pade 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.
Lapprossimazione di Pade `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

26

CAPITOLO 7. ESPONENZIALE DI MATRICE

Se |z| > 1/2, allora |z|/2j < 1/2 per j > log2 (|z|) + 1. Si calcola dunque
j
lapprossimazione di Pade 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 lapprossimazione di Pade matriciale ha costo O(N 3 ). In GNU Octave
si usa una variante di questa tecnica nel comando expm.

7.2.2

Matrici sparse, di grandi dimensioni

I metodi visti nel paragrafo precedente ignorano leventuale 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 lanaloga differenza tra calcolare A1 e A1 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 Rnm ,
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 lapprossimazione di Pade. 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 nellinvolucro convesso dello spettro di A. E
` conveniente usare
stimare a priori il grado di interpolazione m necessario. E
la formula di interpolazione di Newton
pm1 (z) = d1 + d2 (z 1 ) + d3 (z 1 )(z 2 ) + . . . +dm (z 1 ) (z m1 )
ove {di }i sono le differenze divise. Tale formula si pu`o scrivere, nel caso
matriciale,
!
m1
Y
(A i I) v = (A m1 )wm1
pm1 (A)v = pm2 v + dm wm , wm =
i=1

7.2. CALCOLO DI EXP(A)

27

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 linterpolazione,
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
m1
Y
i=1

|m i | = max

[a,b]

m1
Y
i=1

| i | ,

ove lintervallo [a, b] `e in relazione con lo spettro di A, per esempio [a, b] =


(A) {y = 0}. Il primo nodo coincide, solitamente, con lestremo dellin` chiaro che linsieme dei primi m nodi
tervallo [a, b] di modulo massimo. E
di Leja coincide con lunione di {m } con linsieme dei primi m 1 nodi di
Leja.

Capitolo 8
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 106 , 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, lerrore
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 (6.1). Si usi una tolleranza pari a 106 , 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.
4. Si implementi una function [a,b] = padeexp(p) che restituisce i coef28

29
ficienti dellapprossimazione razionale di Pade (7.5) (con p = q) per la
funzione esponenziale.

Parte 1
BVPs
(Problemi ai limiti)

30

Capitolo 9
Introduzione
Consideriamo il seguente problema ai limiti (boundary value problem)

u (x) = f (x, u(x), u (x)), x (a, b)


u(a) = ua
(9.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 ununica 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)

Quando i valori prescritti ai bordi sono nulli, si parla di condizioni omogenee.

31

Capitolo 10
Differenze finite
10.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(xi1 ) = u(xi ) hu (xi ) + u (xi ) u(3) (
2
6
u(xi+1 ) = u(xi ) + hu (xi ) +

da cui

u(xi+1 ) u(xi1 )
(1)
i
2h
2
(1)
xi ) `e lerrore locale (u(3) (
xi ) + u(3) (
xi ) = 2u(3) (
xi ), per
ove i = h6 u(3) (
un opportuno xi , 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(xi1 ) = 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(xi1 )


(2)
i
h2

(10.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
32

10.1. DIFFERENZE FINITE CENTRATE DEL SECONDO ORDINE 33


della funzione u(x) in uno stesso numero di punti a sinistra e a destra di xi
per ricavare unapprossimazione delle derivate. Il termine secondo ordine
si riferisce al fatto che lerrore 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.

10

diff12.m

errore derivata se onda


stima errore derivata se onda
errore derivata prima
stima errore derivata prima

errore in norma innito

0.1

0.01

10

20

50

100

Figura 10.1: Errori nellapprossimazione delle derivate prima e seconda per


la funzione u(x) = sin(3x).
In Figura 10.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 10.2 si vede invece che per la funzione u(x) = |x|7/2 ,
lapprossimazione 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
(9.1) si risolve il problema discretizzato
2

ui = f (xi , ui , ui ),
u 1 = ua

u = u
m
b

2im1

34

CAPITOLO 10. DIFFERENZE FINITE


1

diff12ns.m

errore derivata se onda


errore derivata prima
h2

errore in norma innito

0.1

0.01

0.001

10

20

50

100

Figura 10.2: Errori nellapprossimazione delle derivate prima e seconda per


la funzione u(x) = |x|7/2 .
nellincognita u = [u1 , u2 , . . . , um1 , um ]T , ove
ui+1 ui1
ui =
2h
u
i+1 2ui + ui1
2 u i =
h2
Si tratta dunque di risolvere un sistema di m equazioni (in generale) non
lineari nelle incognite ui , 1 i m.
In forma matriciale,
2
3

u1
61
6
6 u2 7
7
6
6
6 u3 7
1 6
7
6 0
6
7=
6
6
.
.
7
6
2h 6 ..
.
7
6 .
6
6
5
4u
m1
4 0
um

...

1
..
.
...

0
..
.
0

1
..

0
..

.
1

.
0

07
7
.7
.. 7
7
7,
7
07
7
15

2
3

2 u 1
61
6 2 u 2 7
6
7
6
6
6 2 u 3 7
1 6
7
6
60
7= 2 6
6
..
7
6
h 6 ..
.
7
6
6.
6
5
42 u
m1
40
2 u m

...

1
..
.
...

2
..
.
0

1
..
.
1

0
..

.
2

07
7
.7
.. 7
7
7
7
07
7
15

ove la prima e lultima 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.

10.2. CONVERGENZA PER UN PROBLEMA MODELLO

10.2

35

Convergenza per un problema modello

Consideriamo il seguente problema modello (elasticit`a della trave)

u (x) + q(x)u(x) = g(x),


u(a) = ua

u(b) = u
b

x (a, b)

(10.2)

con q, g C 0 ([a, b]), q(x) 0 per x [a, b]. La funzione q(x) dipende dal
materiale di cui `e fatta la trave e g(x) `e la densit`a di carico trasversale. La soluzione u(x) rappresenta il momento flettente. Vogliamo studiare lesistenza,
lunicit`a e la regolarit`a della soluzione analitica.

10.2.1

Unicit`
a

Se u1 (x) e u2 (x) sono due soluzioni di (10.2), allora z(x) = u1 (x) u2 (x)
soddisfa il problema omogeneo

z (x) + q(x)z(x) = 0,
z(a) = 0

z(b) = 0

x (a, b)

(10.3)

Proposizione 1. Se z(x) `e soluzione di (10.3), allora z(x) 0.


Dimostrazione (metodo dellenergia). Moltiplicando lequazione per z(x) ed
integrando si ha
Z

z (x)z(x)dx +
q(x)z(x)2 dx =
a
a
Z b
Z b

b
q(x)z(x)2 dx =
z (x) dx +
= [z (x)z(x)]a +
a
a
Z b
Z b
=
z (x)2 dx +
q(x)z(x)2 dx

0=

Poiche le funzioni integrande sono non negative, si ha che deve essere necessariamente z(x) 0.
Dunque, u1 (x) u2 (x).

36

10.2.2

CAPITOLO 10. DIFFERENZE FINITE

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 dellequazione
lineare omogenea ha proprio dimensione due). La soluzione di (10.3) (che
corrisponde a c1 = c2 = 0) si ottiene imponendo
(
c1 z1 (a) + c2 z2 (a) = 0
c1 z1 (b) + c2 z2 (b) = 0
Poiche sappiamo che z(x) 0 `e lunica soluzione, si ha che la matrice

z1 (a) z2 (a)
z1 (b) z2 (b)
`e non singolare.
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 (10.2) si ottiene imponendo
(
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.

10.2.3

Regolarit`
a

Proposizione 2. Se q, g C k ([a, b]), allora u C k+2 ([a, b]).


Dimostrazione. Se q, g C 0 ([a, b]), poiche 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
lenunciato per k e siano q, g C k+1 ([a, b]): poiche 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 perche 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

10.2. CONVERGENZA PER UN PROBLEMA MODELLO

37

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 + ui1

+ q i u i = gi , 2 i m 1

h2
u1 = u a

um = u b
ove qi = q(xi ) e gi = g(xi ).

10.2.4

Esistenza ed unicit`
a per il problema discretizzato

Il sistema lineare da risolvere per trovare u = [u1 , u2 , . . . , um1 , um ]T `e

1
0
...
1 2 + q2 h2
1

1 0
1
2 + q3 h2

...
...
h2 ...

0
...
0
0
...
...

...
0

...
...

1
...

0
...

1
0

2 + qm1 h2
0

0
u1
ua /h2
u2 g2
0

..
u3 g3
.

.. = ..

0 . .

1 um1 gm1
um
ub /h2
1

e pu`o essere semplificato in


2

6
6
6
6
6
1 6
6
h2 6
6
6
6
6
4

2 + q 2 h2

2 + q 3 h2
..
.
..
.

0
0
..
.
0

...
...

...

...

0
..

..

...
..
.
..
.

0
...

1
0

1
..
..

2 + qm2 h2
1

0
.
..
0
0
1
2 + qm1 h2

2
3 2
3
u2
g2 + ua /h2
7
76 u 7 6
7
g
3
76 3 7 6
7
76 . 7 6
7
.
76 . 7 6
7
.
76 . 7 6
.
7
76
=6
7
76 . 7
.
7
6
7
76 . 7 6
.
7
76 . 7 6
.
7
74
5
7 um2 5 4
gm2
5
2
um1
gm1 + ub /h

cio`e
Au = g

(10.4)

ove adesso u = [u2 , . . . , um1 ]T .


Proposizione 3. Il sistema lineare (10.4) `e non singolare e dunque ammette
ununica soluzione.

38

CAPITOLO 10. DIFFERENZE FINITE

Dimostrazione (metodo dellenergia discreto). Dato z = [z2 , z3 , . . . , zm1 ]T ,


consideriamo il prodotto z T Az. Si ha
1
[(2 + q2 h2 )z22 z2 z3 z3 z2 + (2 + q3 h2 )z32 z3 z4 + . . . +
h2
2
+ . . . zm1 zm2 + (2 + qm1 h2 )zm1
]=
1
2
]+
= 2 [z22 + (z2 z3 )2 + (z3 z4 )2 + . . . + (zm2 zm1 )2 + zm1
h
m1
X
+
qi zi2 0

z T Az =

i=2

Poiche si ha una somma di elementi non negativi, luguaglianza 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.

10.2.5

Consistenza

Se si sostituisce ui con la soluzione analitica u(xi ), da (10.1) si ottiene

u(xi+1 ) 2u(xi ) + u(xi1 )


(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.

10.2.6

Propriet`
a di A

` possibile usare
A `e una matrice simmetrica e diagonalmente dominante. E
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.

10.2.7

Stabilit`
a

Consideriamo due soluzioni relative a dati perturbati g e g . Si ha


A
u = g
A
u = g
da cui
) = A1 (
(
uu
g g )

10.2. CONVERGENZA PER UN PROBLEMA MODELLO

39

Si potrebbe pensare che se il dato g non `e perturbato, allora non ha senso


considerare eventuali dati perturbati. Non `e cos`: si deve comunque risolvere
il sistema lineare Au = g e si commette un errore (anche usando un metodo
diretto e a maggior ragione un metodo iterativo). Quindi, in pratica, si trova
piuttosto che u. La soluzione approssimata di Au = g pu`o essere allora
u
pensata come soluzione esatta di A
u = g , ove g `e definito proprio da g = A
u.
Ecco allora che abbiamo a che fare con dati perturbati.
Se si vuole che le perturbazioni sui dati non si ripercuotano in maniera
distruttiva sulle soluzioni, occorre che la matrice A1 sia limitata in norma
indipendentemente da h, in particolare per h 0. Consideriamo la matrice
Aq=0 corrispondente alla stessa discretizzazione nel caso q(x) 0. Si ha
A Aq=0 = diag(q2 , . . . , qm1 ) 0. Allora
1
1
A1
= A1
0
q=0 A
q=0 (A Aq=0 )A
1
perche Aq=0 e A sono M -matrici. Allora A1 A1
q=0 e quindi kA k
1
1
1
T
kAq=0 k . Osserviamo poi che kAq=0 k = kAq=0 [1, . . . , 1] k e che v =
T
A1
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) = (xa)(bx)/2. Poiche v (4) (x) 0 lerrore


(2)
locale i , per questo problema, `e nullo e la soluzione discreta coincide, nei
nodi, con la soluzione analitica. Dunque
1
T
kA1
q=0 k = kAq=0 [1, . . . , 1] k = max vi =
2im1

= max v(xi ) max v(x)


2im1

x[a,b]

(b a)2
8

e poiche kA1 k kA1


q=0 k , si ha la maggiorazione richiesta.

10.2.8

Convergenza

Definiamo eh = [e2,h , . . . , em1,h ]T = [u2 u(x2 ), . . . , um1 u(xm1 )]T , h =


(b a)/(m 1). Poiche
A[u2 , . . . , um1 ]T = g
(2)

A[u(x2 ), . . . , u(xm1 )]T = g h

40

CAPITOLO 10. DIFFERENZE FINITE


(2)

(2)

(2)

ove h = [2,h , . . . , m1,h ]T , si deduce eh = A1 h . Combinando i risultati di consistenza e stabilit`a, si ottiene, per il problema (10.2) discretizzato
mediante differenze finite centrate del secondo ordine,
keh k

(b a)2 h2 (4)
ku k
8
12

e dunque lerrore `e proporzionale a h2 , posto che u C 4 ([a, b]).

10.3

Altre differenze finite

10.3.1

Su nodi non equispaziati

Dati tre nodi xi1 , xi , xi+1 , con hi1 = xi xi1 e hi = xi+1 xi , si ha


h3
h2i
u (xi ) + i u(3) (xi ) + O(h4i )
2
6
2
h
h3
u(xi1 ) = u(xi ) hi1 u (xi ) + i1 u (xi ) i1 u(3) (xi ) + O(h4i1 )
2
6
u(xi+1 ) = u(xi ) + hi u (xi ) +

da cui
u(xi+1 ) u(xi1 ) 1 h2i h2i1
1 h3i1 + h3i (3)
u (xi ) =

u (xi )
u (xi )+
hi1 + hi
2 hi1 + hi
6 hi1 + hi
+ O(max{h4i1 , h4i })

Se hi1 e hi non differiscono troppo (precisamente, se la loro differenza


`e O(max{h2i1 , h2i })), allora lapprossimazione con il rapporto incrementale centrato `e di ordine O(max{h2i1 , h2i }). Analogamente, si pu`o costruire
unapprossimazione della derivata seconda

u (xi )

u(xi+1 )u(xi )
i1 )
u(xi )u(x
hi
hi1
hi1 +hi
2

La matrice corrispondente allapprossimazione 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
..
.
0

1
h2 +h3

h11
+h2

u (xm1 )

u (xm )

..

.
...

0
..

1
h2 +h3

1
h1 +h2

..

1
hm2 +hm1

...
..
.
..
.
0

0
..
.

u(x1 )
u(x2 )
u(x3 )
..
.

1
u(xm1 )
hm2 +hm1
u(xm )

10.4. CONDIZIONI AL BORDO

41

Dati i nodi x (vettore colonna di lunghezza m), `e possibile costruire il vettore


[h1 , h2 , . . . , hm1 ]T con il comando h=diff(x). Allora la matrice, a meno
della prima e dellultima 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.

10.3.2

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,
3u(x1 ) + 4u(x2 ) u(x3 )
u(x2 ) u(x1 )
+ 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 lapprossimazione ai bordi.

10.3.3

Di ordine pi`
u elevato

Si possono per esempio costruire differenze finite di ordine quattro centrate


u(xi2 ) 8u(xi1 ) + 8u(xi+1 ) u(xi+2 )
+ O(h4 )
12h
u(xi2 ) + 16u(xi1 ) 30u(xi ) + 16u(xi+1 ) u(xi+2 )
u (xi ) =
+ O(h4 )
2
12h
u (xi ) =

10.4

Condizioni al bordo

10.4.1

Condizioni di Dirichlet

Se vengono prescritti i valori u(a) = ua o u(b) = ub , 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

42

CAPITOLO 10. DIFFERENZE FINITE

senza tener conto delle condizioni al

2 1
0 0
1 2 1 0

... ... ...


1
0

h2 ... . . . . . . . . .

0 0 1
0

bordo diventa

0
1
u1

0 u2 1

. . . .. .. ..
. . .
. = .
...
. .
0
. .
2 1 um1 1
1

um

Poi, si correggono le equazioni relative

1 0
0 0
1 2 1 0

.
.
.
.
1
0 . . . . . . . .

h2 ... . . . . . . . . . . . .

0 0 1 2
0

ai nodi al bordo

0
u1
ua /h2
u2 1
0

..
.. ..
. . .
. = .
. .
0
. .
1 um1 1
0 1
um
ub /h2

In questo modo, per`o, la simmetria della matrice 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
dellultima riga inserendo un numero molto grande

M 1
0 0 0
u1
M ua
1 2 1 0 0 u2 1

. . . . . . . . . . . . .. .. ..
1
. . .
0

h2 ... . . . . . . . . . . . . 0 ... ...

0 0 1 2 1 um1 1
0 0 0
1 M
um
M ub
Per poter usare lalgoritmo di Choleski, `e inoltre necessario che la matrice
sia definita positiva. Conviene allora considerare il problema u (x) = 1.

10.4.2

Condizioni di Neumann

Un modo per imporre le condizioni di Neumann, per esempio u (a) = ua , e


conservare lordine di accuratezza due (e che si pu`o usare anche con i problemi
parabolici, vedi paragrafo 22.3.3) `e quella di introdurre una variabile fittizia
u0 u(a h), approssimare la derivata u (a) con
u (a)

u2 u 0
2h

10.4. CONDIZIONI AL BORDO

43
u(x)
u3
u2

u1

u0

y = ua (x x2 ) + u2
h
x0

h
a = x1

x2

x3

Figura 10.3: Imposizione di una condizione di Neumann sullestremo sinistro.


e porla uguale a ua . In tal modo, risulta
u0 = u2 2hua
Tale espressione per u0 va usata poi in qualunque stencil di discretizzatione.
Per esempio, la discretizzazione dellequazione
u (x) u (x) = 1
in x = a sar`a
u0 2u1 + u2 u2 u0
u2 2hua 2u1 + u2 u2 (u2 2hua )

=
h2
2h
h2
2h
2u2 2u1 2hua
ua = 1
=
h2
da cui

10.4.3

2u2 2u1
2ua
=
1
+
+ ua
h2
h

Importanza delle condizioni al bordo

Spesso si trascura limportanza di una corretta imposizione delle condizioni al


bordo e si pensa che linfluenza delle condizioni riguardi solamente un intorno
del bordo. Ovviamente non `e cos`: basti pensare allequazione differenziale
u (x) = 1,

x (1, 1)

munita delle condizioni al bordo


u(1) = u(1) = 0

44

CAPITOLO 10. DIFFERENZE FINITE

(la cui soluzione `e u(x) = x2 /2 1/2) oppure


(
u(1) = 0
u (1) = 0
(la cui soluzione `e u(x) = x2 /2 x 3/2) oppure
u (1) = u (1) = 0

(nessuna soluzione) oppure


(

u (1) = 1
u (1) = 1

(infinite soluzioni u(x) = x2 /2 + k).

10.5

Un esempio: lequazione della catenaria

Consideriamo lequazione della catenaria

u
(x)
=

1 + u (x)2 ,

u(1) = 1

u(1) = 1

x (1, 1)

La discretizzazione mediante differenze finite centrate del secondo ordine `e

u1
1
q
u1 2
u2

1 + u32h
.

.
..
A .
=b
..

um um2 2
um1

1+
2h
1
um

Si tratta dunque di risolvere il sistema non lineare


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 .

0
1

1
0
B=

2h ...

0
0

0
0
...
...

0
1
...
...

0
0

0
0
... ...
... ...
1 0
0
0

0
0
..

1
0

10.5. UN ESEMPIO: LEQUAZIONE DELLA CATENARIA

10.5.1

45

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
Au(r+1) = 1 + (Bu(r) )2 + b

Lapplicazione 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 lesempio
della catenaria, comunque, il metodo delle iterazioni di punto fisso converge
adeguatamente.

10.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

(r)

p (Bu )i
, i=j
dij (u(r) ) =
1 + (Bu(r) )2i

0,
i=
6 j

D = (dij (u(r) )),

A questo punto, literazione del metodo di Newton consiste nella risoluzione


1e-3

errore
h2

0.9

errore in norma innito

u(x)

0.8

0.7

1e-4

0.6

0.5

0.4
-1

-0.5

0.5

1e-5

20

30

40

50

60

Figura 10.4: Soluzione dellequazione della catenaria (sinistra, m = 60) e


ordine di convergenza (destra).
del sistema lineare

JF (u(r) ) u(r+1) u(r) = F (u(r) )

catenaria.m

46

CAPITOLO 10. DIFFERENZE FINITE

In generale, lo jacobiano di un funzionale F (u) calcolato in u(r) e applicato a v `e


JF (u(r) )v =

dF (r)
F (u(r) + v) F (u(r) )
(u )v = lim
0
du

Come soluzione iniziale si prende solitamente una funzione semplice che


soddisfi le condizioni al bordo.

10.6

Norme ed errori

Data una funzione u(x) e due diverse discretizzazioni su nodi equispaziati


[
u1 , . . . , um ] [u(
x1 ), . . . , u(
xm )] e [
u1 , . . . , ul ] [u(
x1 ), . . . , u(
xl )], {
xi }i
[a, b], {
xi }i [a, b], non ha molto senso confrontare gli errori k[u(
x1 )
u1 , u(
x2 ) u2 , . . . , u(
xm ) um ]k2 e k[u(
x1 ) u1 , y(
x2 ) u2 ,q
. . . , u(
xl ) ul ]k2 .

, che risulta
Si preferisce usare la norma infinito, oppure la norma kuk2 ba
m
essere una approssimazione mediante quadratura con formula dei rettangoli
della norma in L2 di u(x).
102

fsc.m

h2

errore rispetto alla soluzione esatta


errore rispetto alla soluzione di riferimento

errore in norma innito

103

104

105

106
10

102
m

103

Figura 10.5: Convergenza e falsa superconvergenza per la risoluzione di


u (x) = sin(x), u(0) = u() = 0.
Se si devono invece confrontare tra loro le due discretizzazioni, occorre che
i nodi siano intercalati e bisogna fare attenzione alla falsa superconvergenza

10.6. NORME ED ERRORI

47

(vedi Figura 10.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


da cui

kum uk kum um k kum uk +

se ku um k = < kum uk . Ci`o significa che si pu`o stimare lerrore 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 limpressione 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 lordine di un metodo si basa
sulla seguente osservazione. Siano em e em gli errori corrispondenti a due
discretizzazioni con m
em
punti. Supponiamo che
C
(m
1)p
C
=
(m
1)p

kem k =
kem k
Si ricava

logkem k logkem k = p(log(m


1) log(m
1))
Dunque, in un grafico logaritmico-logaritmico, lerrore kem k si dispone su
una retta di pendenza p (cio`e parallelo alla retta (m 1)p ) rispetto a
m 1.

Capitolo 11
Metodo di shooting
` possibile trasformare il problema (9.1) in un sistema differenziale del primo
E
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
(11.1)

y (a) = s
2

Dato s, il sistema sopra pu`o essere risolto con un opportuno metodo per
problemi ai valori iniziali. Poiche 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 lequazione (in generale non lineare) F (s) = 0.

11.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). Poiche la soluzione di (11.1) `e
48

11.2. METODO DI NEWTON

49

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.

11.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 lordine 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)

50

CAPITOLO 11. 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). Poiche 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.

11.3

Problema ai limiti con frontiera libera

Un caso particolarmente interessante per lapplicazione 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)
(11.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, lapplicazione 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
h0
s
h

11.3. PROBLEMA AI LIMITI CON FRONTIERA LIBERA

51

`e analogo al caso precedente. Lunica diversit`a `e data dalle condizioni iniziali


(in s). Si ha
u(s | s + h) u(s | s)
v(s) = lim
h0
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)
h0
h

v (s) = lim

ove il valore u (s) si ricava dal problema (11.2) e vale f (s, , ).

Capitolo 12
Equazione di Poisson
Di particolare interesse `e lequazione di Poisson
2 u(x) = f (x),

x Rd

ove 2 `e loperatore laplaciano definito da


d
X
2
=
x2k
k=1
2

Lequazione `e solitamente accompagnata da condizioni al bordo di Dirichlet


o di Neumann.

12.1

Equazione di Poisson bidimensionale

Analizziamo numericamente in dettaglio il caso d = 2 (x = (x, y)) e =


[a, b] [c, d].

12.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)
52

12.1. EQUAZIONE DI POISSON BIDIMENSIONALE

53

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 12.1. La matrice di discretizzazio-

u13

u14

u15

u16

u9

u10

u11

u12

u5

u6

u7

u8

u1

u2

u3

u4

Figura 12.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
6
6
6
61
6
6
6
1 6 0
6
Ax =
6
2
hx 6
6
6 0
6
6 .
6 .
4 .
0
2

2
..
.

..

...
...

...

...

...

..

..

..

..

0
...

..

1
0

..

2
1

3
0
.7
.7
.7
7
7
7
7
07
7,
7
7
7
07
7
7
7
15
2

2
6
6
6
61
6
6
6
1 6 0
6
Ay =
6
2
hy 6
6
6 0
6
6 .
6 .
4 .
0
2

2
..
.

..

...
...

...

...

...

..

..

..

0
...

..

1
0

..
.

..

2
1

3
0
.7
.7
.7
7
7
7
7
07
7
7
7
7
07
7
7
7
15
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

54

CAPITOLO 12. 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

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.

12.1.2

Condizioni al bordo miste

Lequazione 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, 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

12.1. EQUAZIONE DI POISSON BIDIMENSIONALE

55

ove
2
6
6
61
6
6
6
6
1 6 0
6
Ax =
6
h2
x 6
6
6 0
6
6 .
6 .
4 .
0
2

...

...

...

..

..

..

..

..

..

..

0
...

1
0

..

...
...

2
1

.
.

3
0
.7
.7
.7
7
7
7
7
07
7,
7
7
7
07
7
7
7
15
2

2
6
6
61
6
6
6
6
1 6 0
6
Ay =
6
h2
y 6
6
6 0
6
6 .
6 .
4 .
0
2

2
..
..

...

...

...

..

..

..

..

0
...

1
0

...
...

..

..

2
2

3
0
.7
.7
.7
7
7
7
7
07
7
7
7
7
07
7
7
7
15
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 unapprossimazione 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 =

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 13
Metodi variazionali
13.1

Formulazione variazionale di un problema modello

Un filo elastico sottoposto ad un carico soddisfa, sotto opportune ipotesi di


regolarit`a, lequazione
(

u (x) = g(x),
x (0, 1)
u(0) = u(1) = 0

(13.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

(13.2)

ove

0
1
g (x) = 2

0 x < 21
1
x 21 +
2
1
+<x1
2

La funzione discontinua g rappresenta la densit`a di carico e il carico totale


vale
Z 1
g (x)dx = 1
0

56

13.1. UN PROBLEMA MODELLO

57

La soluzione di (13.2) `e

1
1

0x
x

2
2

2

1
1 1
1
1
u (x) =
x
+
x +

4
2
4
2
2

1 (1 x)
+x1
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 (13.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) =

v(x)w(x)dx

Teorema 2 (Formulazione variazionale). Se u(x) `e la soluzione del problema (13.1), allora u V e


(u , v ) = (g, v),

v V

(13.3)

Dimostrazione. Sia u soluzione di (13.1). Allora, per ogni v V ,


Z 1
Z 1

u (x)v(x)dx =
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

u (x)v (x)dx = (u , v )

poiche v(0) = v(1) = 0.

Per quanto visto per il problema modello (10.2), se g C 0 (0, 1), la soluzione di (13.1) esiste ed `e unica. Per quanto appena dimostrato, essa `e
soluzione anche di (13.3). Ritornando al problema modello (13.1), ove per`o
non facciamo ipotesi su g, la soluzione classica, quella di classe (almeno) C 2 ,
si chiama soluzione forte del problema (13.1), mentre la soluzione di (13.3)

58

CAPITOLO 13. METODI VARIAZIONALI

si chiama soluzione debole del problema (13.1). Con il teorema e lesempio


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 (13.2), per cui la soluzione debole `e
u V , visto che
Z 1
Z 1
Z 1 +
Z 1
2
2

u (x)v (x)dx =
u (x)v (x)dx +
u (x)v (x)dx +
u (x)v (x)dx =
0

=
=

1
+
2
1

u (x)v(x)dx

1
v(x)dx =
2

2
1
+
2

1
+
2

1
+
2

u (x)v(x)dx

g (x)v(x)dx =

1
+
2

u (x)v(x)dx =

g (x)v(x)dx

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 (13.3) e u C 2 ([0, 1])
(da notare che C 2 ([0, 1]) V ) e g `e continua allora 0 = (u , v ) (g, v) =
(u , v) (g, v) = (u + g, v) per ogni v V . Poiche u + g `e continua, si
deduce u (x) = g(x) per 0 < x < 1.
Per quanto visto, la formulazione variazionale (13.3) del problema (13.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 (13.3), allora
(u1 u2 , v ) = 0, v V
e in particolare per v = u1 u2 . Dunque
Z 1
(u1 (x) u2 (x))2 dx = 0
0

u1 (x)

e quindi

= (u1 (x) u2 (x)) = 0. Pertanto u1 u2 `e costante e


siccome u1 (0) u2 (0) = 0, allora u1 (x) u2 (x) = 0.

13.1.1

u2 (x)

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
(13.4)
(metodo di Galerkin).

13.1. UN PROBLEMA MODELLO

59

Teorema 3. Il problema (13.4) ha ununica soluzione.


Dimostrazione. Sia {j }m
(x) Vm
j=1 una base di Vm . Allora, se esiste u
soluzione `e
m
X
u(x) =
uj j (x)
j=1

e il problema (13.4) si riscrive, per i = 1, 2, . . . , m,


Z

u (x)i (x)dx =

m
X

uj j

j=1

, i

m
X

(j , i )
uj = Au = (g, i )

j=1

ove A = (aij ) = (j , i ) e u = [
u1 , . . . , um ]T . Calcoliamo ora wT Aw per
w = [w1 , . . . , wm ]T . Si ha
!
m
m
X
X
T

w Aw =
(i , j )wj
wi
i=1

j=1

da cui, per la linearit`a del prodotto scalare,


wT Aw =

m
X
i=1

! m
! ! Z
X
wi i (x) ,
wj j (x)
=

j=1

m
X

!2

wj j (x)

j=1

dx 0

P
e lunica possibilit`a per avere 0 `e che
wj j (x) sia costante e dunque nullo
(poiche 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 4. Se u `e soluzione di (13.3) e u di (13.4), allora
ku uk inf ku vk
vVm

ove kvk =

(v , v ).

Dimostrazione. Dalle uguaglianze


(u , v ) = (g, v) v V e, dunque, v Vm
(
u , v ) = (g, v) v Vm

(13.5)

60

CAPITOLO 13. METODI VARIAZIONALI

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 ukku vk
(per la disuguaglianza di CauchySchwartz) da cui
ku uk 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 ).
La scelta di Vm caratterizza il metodo. Da un lato bisogna considerare
la regolarit`a della soluzione richiesta. Dallaltro la difficolt`a di assemblare la
matrice di rigidezza e di risolvere il sistema lineare.
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 (13.4), allora
Z 1

Z 1

p
p

2
2 (
u
,
u

)
(
u , u )
2x
u
(x)
u
(x)dx
u

(x)
u
(x)dx

per la monotonia degli integrali (x 1 in [0, 1]) e la disuguaglianza di


CauchySchwartz e
Z

da cui
cio`e

2x
u(x)
u (x)dx =

1 Z

x
u (x) dx = u (x)x
2

u2 (x)dx

p
p
p
p
(
u, u) 2 (
u, u) (
u , u ) = 2 (
u, u) (
u , u )
p
(
u, u) 2k
uk

Poiche u soddisfa, in particolare,

(
u , u ) = (g, u)

13.1. UN PROBLEMA MODELLO

61

si ricava, suppondendo g a quadrato sommabile,


p
p
p
k
uk2 (g, g) (
u, u) 2 (g, g)k
uk
da cui

p
k
uk 2 (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

v Vm

p
k
u uk 2 (
g g, g g)

e cio`e che piccole variazioni sui dati producono piccole variazioni sulle soluzioni.
Metodo degli elementi finiti (FEM)
1

j1

h1
x1

hj1
x2

xj2

xj1

xj

j+1

hj

hm1
xj+1

xm

Figura 13.1: Hat functions


Introduciamo una discretizzazione dellintervallo [0, 1] a passo variabile,
m1
come in Figura 13.1. Lo spazio Vm `e generato dalle funzioni di base {j }j=2
,
le quali sono definite da
xx
j1

, xj1 x xj

hj1
j (x) = xj+1 x , x x x
j
j+1

hj

0,
altrimenti
e

, xj1 < x < xj

hj1
1
j (x) =

, xj < x < xj+1

0,
altrimenti

62

CAPITOLO 13. METODI VARIAZIONALI

Tuttavia, per permettere la trattazione di problemi con differenti condizioni


al bordo, consideriamo anche

x2 x , x1 x x2
h1
1 (x) =

0,
altrimenti

1, x <x<x
1
2

h1
1 (x) =

0,
altrimenti

x xm1 , xm1 x xm
hm1
m (x) =

0,
altrimenti

m (x) =

hm1

0,

, xm1 < x < xm


altrimenti

Dunque, nellapprossimazione

u(x) =

m
X

uj j (x)

j=1

i coefficienti uj sono i valori di u nei nodi xj . Il problema (13.4) si riscrive


Z

(x)i (x)dx

=
=

m
X

j=1
m
X

uj

j (x)i (x)dx

m
X

uj

j=1

uj aij =

xi +hi

xi +hi

xi hi1

j (x)i (x)dx =

g(x)i (x)dx

xi hi1

j=1

Siccome il supporto di j (x) `e [xj1 , xj+1 ], gli unici elementi non nulli aij
sono aii , ai i1 e ai+1 i = ai i+1 . Per 1 < i < m,
Z

xi

2
1
1
1

dx +
dx =
+
aii =
=
hi1
hi
hi1 hi
xi
xi hi1
Z xi
1
1
1

ai i1 = (i1 , i ) =

dx =
= ai1 i
hi1 hi1
hi1
xi hi1
(i , i )

xi +hi

13.1. UN PROBLEMA MODELLO

63

Per i = 1 e i = m, si ha invece

2
1
1

a11 =
dx =
h1
h1
Zx1x2
1 1
1
dx = = a12
a21 =
h1 h1
h1
x2 h1
Z xm
1
1
1
am m1 =

dx =
= am1 m
hm1 hm1
hm1
xm hm1

2
Z xm
1
1

amm =
dx =
hm1
hm1
xm hm1
Z

x1 +h1

Per quanto riguarda il calcolo di (g, i ) si pu`o ricorrere alla formula del punto
medio: per 1 < i < m `e
Z xi
Z xi+1
x xi1
xi+1 x
g(x)
g(x)
gi = (g, i ) =
dx +
dx
hi1
hi
xi1
xi

xi + xi+1 hi
xi1 + xi hi1
+g
g
2
2
2
2
Per i = 1 e i = m si ha invece

Z x2
x2 x
x1 + x2 h1
g(x)
dx g
g1 = (g, 1 ) =
h1
2
2
x1

Z xm
xm1 + xm hm1
x xm1
dx g
gm = (g, m ) =
g(x)
hm1
2
2
xm1
Lapprossimazione di
Z xi

xi1

g(x)i (x)dx =

xi

xi1

g(x)

x xi1
dx
hi1

mediante la formula del punto medio produce un errore


3

hi1

x
2g
(
)
i1
i1
i1

= O(h2i1 ), i1 (xi1 , xi )
g
(
)
+
i1
24

hi1
hi1

(occorre infatti valutare la derivata seconda di g(x)i (x) in un opportuno


punto i1 ). Siccome

g(xi1 ) + g(xi )
xi1 + xi
+ O(h2i1 ) = gi1 + O(h2i1 )
=
g
2
2

64

CAPITOLO 13. METODI VARIAZIONALI

e, essendo la formula del punto medio esatta sulle funzioni lineari,

Z xi
xi1 + xi
hi1
i (x)dx = i
hi1 =
2
2
xi1
la formula del punto medio viene di solito sostituita dalla formula equivalente
(nel senso dellordine di approssimazione)
Z xi +hi
Z xi
hi
hi1
+ gi
i (x)dx = gi1
i (x)dx + gi
gi = (g, i ) gi1
2
2
xi
xi hi1
per 1 < i < m e da
g1 = (g, 1 ) = g1

x1 +h1

x1

gm = (g, m ) = gm1

1 (x)dx = g1
Z

h1
2

xm

m (x)dx = gm1

xm hm1

hm1
2

La riga i-esima del sistema lineare risulta dunque essere


.
..

..

.
u
i i1

+
gi hi
1
1
1
1
+
0
.
.
.
0

0 . . . 0 hi1
ui = gi1 hi1

hi1
hi
hi
2

.
ui+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. Pertanto, `e naturale aspettarsi, sotto opportune ipotesi di regolarit`a, che lerrore,
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). Facilmente, usando la disuguaglianza (13.5) e
i risultati della Sezione 1.1.1, si pu`o dimostrare
s
Z 1
c
[u (x) (pc1 u) (x)]2 dx hku k
ku uk ku p1 uk =
0

E quindi, ancora, ci si aspetta che se lerrore sulle derivate va a 0 come h,


` importante sottolineare che
allora lerrore sulla funzione vada a 0 come h2 . E
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.

13.1. UN PROBLEMA MODELLO

65

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) = u0 ), la forma
debole del problema `e
Z 1
1 Z 1

u (x)i (x)dx =
g(x)i (x)dx, 1 i m

u (x)i (x) +
0

Per i = 1, che `e il caso di interesse, si ha


Z 1
Z

u (0) +
u (x)1 (x)dx =
0

g(x)1 (x)dx

Dunque, la prima riga del sistema lineare da risolvere `e


Z 1
Z 1

g(x)1 (x)dx
u (x)1 (x)dx = u0 +
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 allimplementazione 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
x1 x2

j1
xj1

j
xj

l
xj+1

xm

Figura 13.2: Nodi (numerati in basso) ed elementi (numerati in alto).


riferimento alla Figura 13.2, ove m = l + 1, si ha
j,1 = j, j,2 = j + 1,

1jl

che significa che lelemento j ha associati i nodi xj e xj+1 . Ogni elemento


contribuisce allassemblaggio 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 (x)j,k (x)dx = , k = 1, 2
j,k j,k =
hj

Zj
1
j,k j,3k =
j,k (x)j,3k (x)dx = , k = 1, 2
hj
j

66

CAPITOLO 13. METODI VARIAZIONALI


Per quanto riguarda il termine noto, ad ogni elemento j si associa
gj = gj =

g(xj,1 ) + g(xj,2 )
2

Pertanto si ha
aij = 0, 1 i, j m, gi = 0, 1 i m
for j = 1, . . . , l
for k = 1, 2
aj,k j,k = aj,k j,k + j,k j,k , gj,k = gj,k + gj
aj,k j,3k = aj,k j,3k + j,k j,3k

hj
2

end
end

13.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 .

13.2

Metodi spettrali

Sia
u(x) =

uj j (x)

Lindice algebrico di convergenza `e il pi`


u grande k tale che
lim |uj |j k < +

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

13.2. METODI SPETTRALI

67

ogni potenza negativa di j. Parleremo di metodi spettrali quando useremo


unapprossimazione di una serie convergente spettralmente
u(x) =

m
X

uj j (x)

j=1

al posto di u(x). Quindi, useremo i metodi spettrali quando ci aspettiamo


soluzioni molto regolari.
Consideriamo un sistema {j }j ortonormale rispetto al prodotto scalare
Z

j (x)i (x)w(x)dx = ji

La formulazione di Galerkin di un problema ai limiti Lu = g, L operatore


differenziale lineare, diventa
m
X

uj

j=1

Lj (x)i (x)w(x)dx =

g(x)i (x)w(x)dx,

1im

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
X
j=1

uj

m
X
n=1

Lj (xn )i (xn )wn

m
X

g(xn )i (xn )wn = gi ,

n=1

1im

(13.6)
In tal caso si parla di metodi pseudospettrali. I coefficienti uj 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 uj , si calcola la soluzione fisica


quadratura mediante


w1 u(x1 )
u1
w2 u(x2 )
u2

= F T ..
..

.
.

um
wn u(xn )

uj j (x) sui nodi di

68

CAPITOLO 13. METODI VARIAZIONALI

Da notare che F T = F 1 . Per quanto riguarda invece i coefficienti gi , essi


sono dati da



g(x1 ) w1
g1
g(x2 )w2
g2

.. = F

..

gn
g(xn ) wn

Solitamente le funzioni {j (x)}j sono polinomi ortonormali rispetto alla funzione peso w(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 utile allora la decomposizione
u(x)

m
X
j=1

m
X
p
uj j (x) w(x) =
uj j (x)
j=1

La formulazione di Galerkin di Lu = g diventa allora


Z b
Z b
m
X
p
p
p
uj L(j (x) w(x))i (x) w(x)dx = g(x)i (x) w(x)dx, 1 i m
j=1

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
lanalisi numerica in generale). Molte propriet`a risultano comuni anche agli
altri metodi pseudospettrali.

13.2.1

Trasformata di Fourier

Sia [a, b] un intervallo di R, m > 0 pari e fissato. Consideriamo, per ogni


j Z,
ei(j1m/2)2(xa)/(ba)

j (x) =
ba
Allora,

j (x)k (x)dx = jk

Infatti, se j = k allora j (x)k (x) = 1/(b a), altrimenti


j (x)k (x) =

ei2(jk)(xa)/(ba)
ba

(13.7)

13.2. METODI SPETTRALI


e quindi

69

j (x)k (x)dx =

ei2(jk)y
(b a)dy = 0 ,
ba

poiche lintegrale delle funzioni sin e cos in un intervallo multiplo del loro periodo `e nullo. La famiglia di funzioni {j }j si dice ortonormale nellintervallo
[a, b] rispetto al prodotto scalare
(j , k ) =

j (x)k (x)dx

Un risultato utile `e il seguente


m
X

ei(n1)2(jk)/m = mjk ,

n=1

1 j, k m

(13.8)

` ovvio per j = k; altrimenti


E
m
X

ei(n1)2(jk)/m =

n=1

m1
X
n=0

ei2(jk)/m

1 cos(2(j k))
1 ei2(jk)
=
=0
i2(jk)/m
1e
1 ei2(jk)/m

poiche m + 1 j k m 1.

13.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

(13.9)

Fissato k Z, moltiplicando entrambi i membri per k (x) e integrando


nellintervallo [a, b], usando (13.7) si ottiene
!
Z b X
Z b
+
uj j (x)k (x) dx =
u(x)k (x)dx =
a

j=

j=

uj

(13.10)

j (x)k (x)dx = uk

70

CAPITOLO 13. METODI VARIAZIONALI

Dunque, abbiamo unespressione esplicita per uj . Analogamente si vede che


Z

|u(x)|2 dx =

+
X

|uj |2

(identit`a di Parseval)

j=

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

uj j (x) dx =
uj j (x) dx =
u(x)

a
a
j=1
jJ
!
!
Z b X
X
uk k (x) dx =
uj j (x)
=
a

X
jJ

jJ

kJ

|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
Z

Z
1 b
1
u(x)j (x)dx =
uj =
(u(b) u(a)) +
u (x)j (x)dx =
j a
j b a
a
Z b
1
1
1

u (x)j (x)dx
(u(b) u(a)) 2
(u (b) u (a)) + 2
=
j a
j b a
j b 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 ul periodica per
l = 1, 2, . . . , k 2, allora

uj = O (j 1 m/2)k
Si ha dunque
X

|uj |2 = |um+1 |2 + |u0 |2 + |um+2 |2 + |u1 |2 + |um+3 |2 + . . . =


jJ

= O (m/2)k + O (1 + m/2)k + O (2 + m/2)k + . . .

Se poi u `e infinitamente derivabile e periodica (cio`e tutte le derivate sono


periodiche), allora uj decade pi`
u velocemente di ogni potenza negativa di j.

13.2. METODI SPETTRALI

71

La seconda approssimazione da fare `e utilizzare una formula di quadratura per il calcolo di uj . Riportiamo per comodit`a la formula di quadratura
trapezoidale a m+1 nodi equispaziati xn = (ba)yn +a, ove yn = (n1)/m,
n = 1, . . . , m + 1 per funzioni periodiche:

!
Z b
m
m
X
ba
baX
g(x)dx
g(x1 ) + 2
g(xn ) + g(xm+1 ) =
g(xn )
2m
m n=1
a
n=2
Usando la (13.8), abbiamo
mjk =

m
X

i(n1)2(jk)/m

n=1

m
X

i(jk)2yn

n=1

m
X

ei(jk)2(xn a)/(ba) =

n=1

m
X
ei(j1m/2)2(xn a)/(ba) ei(k1m/2)2(xn a)/(ba)

=
= (b a)
ba
ba
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 }j , 1 j m, `e ortonormale anche rispetto al prodotto


scalare discreto
m
baX
(j , k )d =
j (xn )k (xn )
m n=1
Questo significa che la formula di quadratura trapezoidale a m punti `e esatm+m/2
ta per le funzioni {j }j=2m/2 . Applicando la formula di quadratura ai
coefficienti (13.10) si ottiene
Z b
ei(j1m/2)2(xa)/(ba)

u(x)
uj =
dx =
ba
a
Z 1

u((b a)y + a)ei(j1)2y eimy dy


= ba

b a X
u(xn )eimyn ei(j1)2yn = uj
m
n=1

ove x = (b a)y + a.
La funzione (serie troncata di Fourier)
u(x) =

m
X

m/21

uj j (x) =

j=1

k=m/2

uk+1+m/2 k+1+m/2 (x) =

k=m/2

m/21

uk+1+m/2

eik2(xa)/(ba)

ba

72

CAPITOLO 13. METODI VARIAZIONALI

`e un polinomio trigonometrico che approssima u(x) ed `e interpolante nei nodi


xn . Infatti, usando (13.8),
u
(xn ) =

m
X

u
j j (xn ) =

j=1

!
m

ba X
ei(j1m/2)2(xn a)/(ba)

=
u(xk )eimyk ei(j1)2yk
=
m
ba
j=1
m
X

k=1

m
m
X
1 X
u(xk )eim(k1)/m eim(n1)/m
ei(j1)2(k1)/m ei(j1)2(n1)/m =
=
m
j=1

1
m

k=1
m
X

u(xk )ei(kn)

m
X

ei(j1)2(nk)/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

|uj |2
uj j (x) dx 2
u(x)

a
j=1

jJ

La trasformazione

[u(x1 ), u(x2 ), . . . , u(xm )]T [


u1 , u2 , . . . , um ]T

si chiama trasformata di Fourier discreta


di u e u1 , . . . , um coefficienti di FouT
rier di u. Il vettore m [
u
,
u

,
.
.
.
,
u

]
/
b a pu`o essere scritto come prom
1 2
imy1
dotto matrice-vettore F m[u(x1 )e
, u(x2 )eimy2 , . . . , u(xm )eimym ]T , ove

r
ei(j1)2yk
xk a
ba

F = (fjk ), fjk =
.
= j+m/2
ba
m
m

Alternativamente, si pu`o usare la Fast Fourier Transform (FFT). Il comando


imy2
1
fft applicato al vettore [u(x1 )eimy
, . . . , u(xm )eimym ]T produ , u(x2 )e
T
ce il vettore m [
u1 , u2 , . . . , um ] / b a, cos` come il comando fftshift
applicato al risultato del comando fft applicato a [u(x1 ), u(x2 ), . . . , u(xm )].
Dati dei coefficienti vj , j = 1, . . . , m, si pu`o considerare la funzione
(periodica)
m
X
vj j (x)
j=1

La valutazione nei nodi xn , 1 n m, porge


m
m
X
X
ei(j1m/2)2(xn a)/(ba)

=
vn =
vj j (xn ) =
vj
ba
j=1
j=1
!
m
m
1 X i(j1)2yn
=
eimyn .
vj e
b a m j=1

13.2. METODI SPETTRALI

73

La trasformazione
[
v1 , v2 , . . . , vm ]T [v1 , v2 , . . . , vm ]T
si chiama anti-trasformata di Fourier discreta. Se i vj sono i coefficienti di
Fourier di una funzione v(x), la propriet`a di interpolazione comporta vn =
v(xn ). Ma, in generale, non `e vero che
v(x) =

m
X

vj j (x)

j=1

m T
] /m pu`o essere scritto
Il vettore b a [v1 eimy1 , v2 eimy2 , . . . , vm eimy

T
come prodotto matrice-vettore F [
v1 , v2 , . . . , vm ] / m, ove F denota, come in GNU Octave, la trasposta coniugata di F . Alternativamente,
il comando ifft applicato al vettore [
v1 , v2 , . . . , vm ] produce il vettore b a
[v1 eimy1 , v2 eimy2 , . . . , vm eimym ]/m, mentre, se applicato al risultato del comando
ifftshift applicato al vettore [
v1 , v2 , . . . , vm ], produce il vettore

b a [v1 , v2 , . . . , vm ]/m.
Da notare che F = F 1 .
Applicazione ad un problema modello
102

fourier.m

ordine 1
ordine 2
ordine 4
ordine 8
errore

104

106

errore in norma-2

108

1010

1012

1014

1016

1018
1

10

100

Figura 13.3: Convergenza spettrale di Fourier per il problema (13.11) rispetto


ad una soluzione di riferimento ottenuta con m = 64.

74

CAPITOLO 13. METODI VARIAZIONALI


Consideriamo la soluzione del problema

1
u (x) + u(x) =
, x (, )
sin x + 2

u() = u()

(13.11)

mediante decomposizione in funzioni di Fourier. Posto a = , b = ,


g(x) = 1/(sin x + 2), si ha
j (x) =

ei(j1m/2)2(xa)/(ba)

ba

ove m `e pari e fissato e, per 1 k m,


Z

m
X

uj j (x)

j=1

k (x)dx +

m
X

uj j (x) k (x)dx =

j=1

g(x)k (x)dx

da cui

m
X

uj

j=1

j (x)k (x)dx

m
X

uj

j=1

Poiche
j (x)

j (x)k (x)dx =

g(x)k (x)dx

i(j 1 m/2)2
ba

j (x) = 2j j (x)

usando lortonormalit`a delle funzioni di Fourier e calcolando i coefficienti di


Fourier di g(x), si ha
2k uk + uk = gk ,
da cui
uk =

gk
,
1 2k

1km
1km

e quindi
u(x)

m
X

uj j (x)

j=1

In Figura 13.3 si vede la convergenza spettrale del metodo.

13.2. METODI SPETTRALI

75

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 laccuratezza, in generale la FFT `e pi`
u precisa del
prodotto matrice vettore. Poiche la trasformata di Fourier discreta comporta
luso di aritmetica complessa (anche se la funzione da trasformare `e reale),
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 uj per opportuni termini
j che decadono in j, per esempio
j =

m
2

+ 1 | m2 + 1 j|
,
m
+1
2

1jm

Il risultato `e che il coefficiente um/2+1 `e pesato da m/2+1 = 1, i coefficienti


um/2 e um/2+2 sono pesati da m/(m + 2) e cos` via fino al coefficiente u1
pesato da 2/(m + 2). Questa scelta corrisponde alle medie di Cesaro. Infatti,
si sostituisce la serie troncata di Fourier
m
X
uj j (x)
j=1

1
2

http://math-atlas.sourceforge.net/
http://xianyi.github.com/OpenBLAS/

76

CAPITOLO 13. METODI VARIAZIONALI

con la media delle troncate


m

max{ 2 +1+k,m}
2
X
X
k=0

uj j (x)

+1k
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 uj , j = 1, . . . , m e di voler valutare la
funzione
m
X
u(x) =
uj 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 Uk
Uk = 0

1k

nm
2

nm
nm
+1k m
2
2
nm
m
+1k n
2

Uk = uk nm
2

Uk = 0
Si avr`a
u(xk ) =

m
X

uj j (xk ) =

j=1

n
X

e
Uj

i(j1n/2)2(xk a)/(ba)

j=1

n
1
=
ba n

n
X

Uj ei(j1)2yk

j=1

ba

einyk

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.

13.3

Metodi di collocazione

Si assume comunque
u(x) =

m
X
j=1

uj j (x)

13.3. METODI DI COLLOCAZIONE

77

ove {j } `e un sistema ortonormale rispetto ad un prodotto scalare, ma si


impone poi che lequazione differenziale Lu = g sia soddisfatta in certi nodi
xn . Si ha il seguente risultato interessante:
Teorema 5. La soluzione del sistema lineare
m
X

uj Lj (xn ) = g(xn ),

1nm

j=1

(13.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

uj

Lj (x)i (x)w(x)dx =

g(x)i (x)w(x)dx

quando si approssimino gli integrali con le formule gaussiane.


Dimostrazione. Per ogni i, 1 i m, da (13.12), si ha
m
X

uj Lj (xn )i (xn )wn = g(xn )i (xn )wn ,

j=1

1nm

ove i {wn }n sono i pesi di quadratura gaussiana, da cui, sommando su n,


m
m
X
X
n=1

uj Lj (xn )i (xn )wn

j=1

=
=

m
X

j=1
m
X

uj

m
X

Lj (xn )i (xn )wn

n=1

g(xn )i (xn )wn ,

n=1

1im

che `e precisamente la formulazione di Galerkin pseudospettrale (13.6).

13.3.1

Condizioni al bordo

Consideriamo il problema

Lu(x) = g(x)
u(a) = ua

u (b) = u
b

78

CAPITOLO 13. METODI VARIAZIONALI

Con il metodo di collocazione, si ha


m
X

uj Lj (xn ) = g(xn ),

j=1

m
X
uj j (a) = ua

j=1

uj j (b) = ub

1nm2

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
! m2
m2
m
X
X
X

L
(x
)
(x
)w
=
u

g(xn )i (xn )wn , 1 i m 2


j
n
i n
n
j

j=1

n=1
n=1

m
X
uj j (a) = ua

j=1

uj j (b) = ub

j=1

Alternativamente, si possono usare, come nodi di collocazione, quelli delle


formule di quadratura di GaussLobatto (che contengono i nodi al bordo).

Collocazione GaussLobattoChebyshev
I polinomi di Chebyshev sono definiti da
Tj (x) = cos(j arccos(x)),
e soddisfano
Z

Tj (x)Ti (x)

dx =
2

1 x2

1 x 1
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
r
r
1
2
1 (x) =
T0 (x), j (x) =
Tj1 (x), 2 j m

13.3. METODI DI COLLOCAZIONE

79

Ricordando la formula di ricorrenza tra polinomi di Chebyshev, possiamo


scrivere
r
r

1
2
, 2 (x) =
x, 3 (x) = 2x2 (x) 21 (x),
1 (x) =

j+1 (x) = 2xj (x) j1 (x), 3 j m 1


Da qui, possiamo calcolare anche la derivata prima e seconda delle funzioni:
r

2
, 3 (x) = 22 (x) + 2x2 (x),

j+1 (x) = 2j (x) + 2xj (x) j1 (x), 3 j m 1

1 (x)

= 0,

2 (x)

1 (x) = 0, 2 (x) = 0, 3 (x) = 42 (x),


j+1 (x) = 4j (x) + 2xj (x) j1 (x), 3 j m 1
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 )

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


ChebyshevLobatto (per il momento senza tener conto delle condizioni al

80

CAPITOLO 13. METODI VARIAZIONALI

bordo) `e

T
T2 +

q(x1 )
q(x2 )

...


g(x1 )
u1
u2 g(x2 )

T
T0 .. = ..
. .

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,
lultima riga della matrice con lultima riga di TT
1 e lultimo elemento del
termine noto con ub . Una volta noti i coefficienti uj , si ricostruisce la soluzione
nello spazio fisico tramite

u1
u(x1 )
u2
u(x2 )

.. = TT
0 ..
.
.
um
u(xm )

Capitolo 14
Esercizi
1. Si risolva il problema ai limiti

u (x) = u(x) + x,
u(0) = 0

u(1) = 0

x (0, 1)

(14.1)

usando il metodo delle differenze finite del secondo ordine. Sapendo


che la soluzione esatta `e u(x) = (ex ex )/(e e1 ) x, si mostri
inoltre lordine del metodo mediante un grafico logaritmico-logaritmico
dellerrore 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 lordine del metodo mediante un grafico logaritmico-logaritmico
dellerrore 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 lordine del metodo mediante un grafico logaritmico-logaritmico
dellerrore in norma infinito rispetto ad una soluzione di riferimento.
81

82

CAPITOLO 14. ESERCIZI


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 lordine del metodo mediante un grafico logaritmicologaritmico dellerrore 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 landamento 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 nellinter2 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 nellintervallo [a, b] rispetto al peso w(x) = 1.
9. Si risolva il problema ai limiti (14.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 lordine del metodo mediante un grafico logaritmico-logaritmico
dellerrore in norma infinito.

Parte 2
ODEs
(Equazioni differenziali
ordinarie)

83

Capitolo 15
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

(15.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 (15.1) ha ununica soluzione.
84

x, y Rd

15.1. RIDUZIONE IN FORMA AUTONOMA

15.1

85

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 lintroduzione della variabile


yd+1 (t) = t
Si giunge a

15.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 (d1) (t)),

y(t ) = y0,0

0
y (t0 ) = y0,1

..

(d1)
y
(t0 ) = y0,d1

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 (d1) (t)


dando cos` luogo a
(
y (t) = f (t, y(t))
y(t0 ) = [y0,0 , y0,1 , . . . , y0,d1 ]T

ove
f (t, y(t)) = [y2 (t), y3 (t), . . . , yd (t), f (t, y1 (t), y2 (t), . . . , yd1 (t))]T

Capitolo 16
Metodi ad un passo
16.1

Metodo di Eulero

Il metodo di Eulero (o Eulero esplicito, o forward Euler ) si basa sullapprossimazione


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 lapprossimazione 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,

(16.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
(
y (t) = f (t, y (t))
y (tn ) = y n
Se consideriamo lintervallo temporale [t0 , t0 + t ], indichiamo con y n,k (oppure y n,m ), n m, la soluzione approssimata al tempo tn mediante un generico metodo y n+1,k = Y n (f , k, y 0 , y 1,k , . . . , y n,k ) per la soluzione del sistema
differenziale (15.1), ove il passo temporale `e k = t /m.
86

16.1. METODO DI EULERO

87

Definizione 1. La quantit`a y(tn+1 )Y n (f , k, y 0 , y(t1 ), . . . , y(tn )) si chiama


errore locale del metodo.
Se consideriamo il problema differenziale
(
y (t) = f (t, y (t))
y (tn ) = y(tn )
si vede che lerrore locale coincide con y(tn+1 ) y n+1 , cio`e con 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
` chiaro allora che ad ogni
e supponendo esatta la soluzione al tempo tn . E
passo si commette un nuovo errore che si accumula con lerrore prodotto ai
passi precedenti. Per il metodo di Eulero, si ha
y(tn+1 ) y(tn ) kf (tn , y(tn )) =
k2
= y(tn ) + ky (tn ) + y (tn ) + O(k 3 ) y(tn ) ky (tn ) = O(k 2 ) (16.2)
2
(supponendo y C 2 ). Poiche ad ogni passo si commette un errore di ordine
O(k 2 ) e i passi sono m = t /k, se tutto va bene, anche quando m alla
` giustificata allora
fine si commette un errore di ordine t /k O(k 2 ) = O(k). E
la seguente
Definizione 2. Un metodo y n+1 = Y n (f , k, y 0 , . . . , y n ) `e di ordine p se
y(tn+1 ) Y n (f , k, y(t0 ), . . . , y(tn )) = O(k p+1 ), per k 0, per qualunque f
analitica e 0 n m 1.
La definizione sopra dice in verit`a che il metodo `e almeno di ordine p.
Un metodo di ordine p 1 si dice consistente di ordine p, o semplicemente
consistente. Se y(tn+1 ) Y n (f , k, y(t0 ), . . . , 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.
Definizione 3. Il metodo y n+1,k = Y n (f , k, y 0 , y 1,k , . . . , y n,k ) `e convergente
se
lim+ max ken,k k = 0
k0

0nm

ove en,k = y n,k y(tn ). La quantit`a maxn ken,k k si chiama errore globale.
Teorema 6. Il metodo di Eulero `e convergente.

88

CAPITOLO 16. METODI AD UN PASSO

Dimostrazione. Assumiamo f (e dunque y) analitica. Dalle uguaglianze


y n+1,k = y n,k + kf (tn , y n,k )

(definizione del metodo)


2

y(tn+1 ) = y(tn ) + kf (tn , y(tn )) + O(k ) (errore locale (16.2))


si ricava
en+1,k = en,k + k[f (tn , y n ) f (tn , y(tn ))] + O(k 2 )
da cui, siccome f `e lipschitziana,
ken+1,k k ken,k k + kkf (tn , y n ) f (tn , y(tn ))k + ck 2
(1 + k)ken,k k + ck 2 , c > 0
Allora

c
k[(1 + k)n 1], 0 n m

(si dimostra per induzione). Poiche 1 + k < ek , (1 + k)n < enk emk =

et . Dunque
c

ken,k k k(et 1), 0 n m

da cui
lim+ max ken,k k = 0
ken,k k

k0

0nm

In particolare, lerrore globale tende a 0 come k, come ci si aspettava. Da


notare che lerrore globale dipende anche dallintervallo di tempo t (anche se
la stima ottenuta `e molto pessimistica, generalmente lerrore globale cresce
linearmente con lampiezza dellintervallo di tempo).

16.2

Metodo dei trapezi

Il metodo dei trapezi (o metodo di CrankNicolson) si basa sullapprossimazione


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

16.2. METODO DEI TRAPEZI

89

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 )),
2
y 0 = y(t0 )

n 0,

(16.3)

ove y n y(tn ). Dato lo schema


k
y n+1 y n (f (tn , y n ) + f (tn+1 , y n+1 )) = 0
2
sostituendo y n con y(tn ) e y n+1 con y(tn+1 ) si ottiene
k
y(tn+1 ) y(tn ) (f (tn , y(tn )) + f (tn+1 , y(tn+1 ))) =
2
2
k3
k
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

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.
Teorema 7. Il metodo dei trapezi `e convergente.
Dimostrazione. Si ha
k
en+1,k = en,k + (f (tn , y n ) f (tn , y(tn )))+
2
k
+ (f (tn+1 , y n+1 ) f (tn+1 , y(tn+1 ))) + O(k 3 )
2
da cui
ken+1,k k ken,k k +

k
(ken,k k + ken+1,k k) + ck 3 ,
2

Se k < 2/,
ken+1,k k

Allora
ck 2
ken,k k

k
2
k
2

ken,k k +

1+
1

k
2
k
2

!n

1+
1

"

1 ,

c
1 k
2

k3

0nm

c>0

90

CAPITOLO 16. METODI AD UN PASSO

(si dimostra per induzione). Si conclude osservando che

!n
!n

1 + k
t
k
nk
2
exp
= 1+
exp
1 k/2
1 k/2
1 k
1 k
2
2

100

pendoloperiod.m
101

error in innity norm

102

4 periodi
3 periodi

103

2 periodi

104

1 periodo

m2
105

106

200

400

600

800

Figura 16.1: Errori del metodo dei trapezi per lequazione del pendolo
linearizzata.
In Figura 16.1 si vede chiaramente che lerrore (per lequazione del pendolo linearizzata) decade come k 2 m2 e che lo stesso cresce linearmente
con lintervallo 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 dallequazione
(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

16.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 )

n0

(16.4)

16.3. THETA-METODO

91

` facile verificare che


E
y(tn+1 ) y(tn ) k[(1 )f (tn , y(tn )) + f (tn+1 , y(tn+1 ))] =

1
1
2
=
k y (tn ) +

k 3 y (tn ) + O(k 4 ) (16.5)


2
6 2
e dunque il metodo ha ordine due se = 12 , e ordine uno altrimenti. In particolare, se y (t) `e nulla, tale `e lerrore locale per il -metodo. E se = 21 e
y (t) `e nulla, tale `e lerrore locale. Poiche per`o ad ogni passo si commettono
errori di arrotondamento (nel caso esplicito) o di arrotondamento e approssimazione (nel caso implicito, in cui c`e da risolvere un sistema non lineare),
per avere la convergenza `e comunque necessario che questi non si accumulino
in maniera distruttiva.
Possiamo considerare anche in questo caso il problema differenziale
(
y (t) = f (t, y (t))
y (tn ) = y(tn )
e applicare un passo del -metodo. Si ha
y n+1 = y(tn ) + k[(1 )f (tn , y(tn )) + f (tn+1 , y n+1 )]
da cui
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
Posto en+1 = y(tn+1 ) y n+1 , si ha

1
1
2

O(k ) +

ken+1 k kken+1 k +
O(k 3 ) + O(k 4 )
2
6 2
Dunque, se k `e sufficientemente piccolo,

1
1

2
ken+1 k
O(k 3 ) + O(k 4 )
O(k ) +

2
6 2
Quindi, anche per uno schema implicito, lerrore di troncamento 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 .

92

CAPITOLO 16. METODI AD UN PASSO

Teorema 8. Il -metodo, per [0, 1], `e convergente.


Osserviamo che:
il metodo `e esplicito per = 0 (e in tal caso si riduce al metodo di
Eulero esplicito);
il metodo `e di ordine due per =
dei trapezi);

1
2

(e in tal caso si riduce al metodo

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.

16.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 kf (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) ) = kf (tn+1 , x(r) ) + y n + k(1 )f (tn , y n )
La funzione g soddisfa
kg(x) g(y)k = kkf (tn+1 , x) kf (tn+1 , y)k kkx yk
ed `e una contrazione se

1
(16.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:

16.3. THETA-METODO

93

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 limplementazione potrebbe essere:
f = @(t,y) ... % rhs dellequazione
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;
for n = 1:ts
y(:,n+1) = y(:,n);
errest = -J(t + k,y(:,n + 1)) \ F(t,y(:,n),t + k,y(:,n + 1));
while (norm(errest,inf) > Newt_tol)
y(:,n + 1) = y(:,n + 1) + errest;
errest = -J(t + k,y(:,n + 1)) \ F(t,y(:,n),t + k,y(:,n + 1));
end
t = t + k;
end
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
unapprossimazione migliore di y n+1 (ma si veda il capitolo 19). Anche altre
scelte possono andare bene, a patto di avere convergenza del metodo.

94

CAPITOLO 16. METODI AD UN PASSO

16.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 )

fi (tn+1 ,x(r) )
(r)
Jn (x ) = I kn+1
xj
ij

Pn Jn (x(r) ) = Ln Un

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

16.4. VERIFICA DELLIMPLEMENTAZIONE

95

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 (perche
il problema `e lineare), il numero di iterazioni da considerare potrebbe essere
quello necessario ad un metodo iterativo per risolvere i sistemi lineari.

16.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 kA)y n+1 = (I + k(1 )A)y n + kb
Nel caso implicito, si tratta dunque di risolvere un sistema lineare di matrice
I kA ad ogni passo. Pertanto, per problemi di piccola dimensione, `e
conveniente precalcolare la fattorizzazione LU della matrice. Altrimenti, si thetametodolin.m
pu`o considerare un metodo 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 ) +
kb(tn+1 ).

16.4

Verifica della correttezza dellimplementazione

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

96

CAPITOLO 16. METODI AD UN PASSO

e di volerne testare la corretta implementazione. Lidea `e quella di creare


una soluzione artificiale x(t), inserirla nellequazione 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
k2
em2 ,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 lerrore in dipendenza dal numero di passi, la pendenza della retta corrisponde allordine
del metodo, cambiato di segno. Tale verifica `e valida anche nel caso di passi
non costanti.
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 lordine giusto ad una soluzione,
non necessariamente quella giusta.

Capitolo 17
Metodi multistep
17.1

Metodi di AdamsBashforth

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 dellintervallo
[t0 , t0 + t ] in m passi di ampiezza costante k, data la formula di risoluzione
Z tn+s
y(tn+s ) = y(tn+s1 ) +
f (, y( ))d
(17.1)
tn+s1

lidea `e quella di sostituire la funzione integranda in (17.1) con il suo polinomio interpolatore sui nodi equispaziati tn , tn+1 , . . . , tn+s1 (tn+j = tn +
jk)
s1
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 . Poiche 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+s1

s1 Z
X
j=0

tn+s

Lj ( )d

tn+s1

f (tn+j , y n+j ) = k

s1
X

bj f (tn+j , y n+j )

j=0

da cui il metodo esplicito multistep AdamsBashforth


y n+s = y n+s1 + k

s1
X
j=0

97

bj f (tn+j , y n+j )

(17.2)

98

CAPITOLO 17. METODI MULTISTEP

I coefficienti bj non dipendono da n e neanche da k: infatti


1
bj =
k
=

s1
tn+s Y

tn+s1 i=0
i6=j

s1
1Y
i=0
i6=j

tn+i
d =
tn+j tn+i

((s 1 i)k + rk)


dr =
(j i)k

s1
1Y
i=0
i6=j

tn+s1 + rk tn+i
dr =
tn+j tn+i

s1
1Y

((s 1 i) + r)
dr
(j i)

i=0
i6=j

Dunque possono essere calcolati una volta per tutte. Calcoliamo lordine di
tale metodo: come al solito, dobbiamo valutare lespressione
y(tn+s ) y(tn+s1 ) k

s1
X

bj f (tn+j , y(tn+j ))

j=0

Lultimo termine `e lintegrale del polinomio q( ) di grado s 1 che interpola


f (tn+j , y(tn+j )), 0 j s 1. Dunque, per tn+s1 tn+s ,
kf (, y( )) q( )k

ky (s+1) (
)k
|( tn ) . . . ( tn+s1 )|
{z
}
|
s!
s termini

ky

(s+1)

(
)k

s!

s!k s = O(k s ),

tn+s1 tn+s

e quindi
y(tn+s ) y(tn+s1 ) k
Z

tn+s

tn+s1

s1
X

bj f (tn+j , y(tn+j )) =

j=0

f (, y( ))d k
Z

tn+s

tn+s1

s1
X

bj f (tn+j , y(tn+j )) =

j=0

f (, y( ))d

tn+s

tn+s1

q( )d = O(k s+1 )

perche 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 ), 1 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 )

17.2. METODI LINEARI MULTISTEP

99

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

tn+2

tn+1

tn+1
1
d = ,
k
2

1
b1 =
k

tn+2

tn+1

tn
3
d =
k
2

da cui

3k
k
(17.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,
poiche si ha, in tal caso, y 1 = y(t1 ) + O(k 2 ).

17.2

Metodi lineari multistep

Una semplice generalizzazione del metodo di AdamsBashforth `e permettere


che il metodo sia implicito:
y n+s = y n+s1 + k

s
X

bj f (tn+j , y n+j )

(17.4)

j=0

Questa famiglia di metodi prende il nome di AdamsMoulton. Il caso banale


s = 0 d`a
y n = y n1 + 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 = ). In generale, un metodo
AdamsMoulton a s passi ha ordine massimo s + 1. Una generalizzazione
ulteriore `e
s
s
X
X
aj y n+j = k
bj f (tn+j , y n+j )
(17.5)
j=0

j=0

con la normalizzazione as = 1. Il metodo `e di ordine p se, come al solito,


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

100

CAPITOLO 17. METODI MULTISTEP

Teorema 9. Dato un metodo multistep (17.5), definiamo i due polinomi


(w) =

s
X

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
2
3
1
+ O( ) =
+ O( 3 )
2
2
e dunque il metodo `e di ordine 1, come noto. Per il metodo di Adams
Bashforth (17.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 9. 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

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
i i
X
X
X
X
j
k
j i1 k i1
(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 i1 bj k i y (i) (tn )
aj y(tn ) +
=
i! j=0
j=0
j=0
i=1
(i)

17.2. METODI LINEARI MULTISTEP

101

Dunque lordine `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 }s1
j=0 e {bj }j=0 soddisfano il sistema
lineare
s
s
X
X
i
j aj = i
j i1 bj , i = 0, 1, . . . , p
(17.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 (17.6). Posto w = ez , lordine `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 lordine `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 (17.6) sono
molto utili per determinare lordine 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 ) (17.7)
=
12

si ha

17.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
dordine, si pu`o costruire (w). Poiche 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

102

CAPITOLO 17. 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 (tn + 2k) + O(k 3 )
2
k 2

y(t
+
k)
=
y(t
+
2k)

ky
(t
+
2k)
+
y (tn + 2k) + O(k 3 )

n
n
n

y(tn + 2k) = y(tn + 2k)


y(tn ) = y(tn + 2k) 2ky (tn + 2k) +

da cui

a0 =

a
=
1
2
3

a = 4
a0 + a1 + a2 = 0
1
3

2a

a
=
b
0
1
2

a
=
1

2a0 + a1 = 0

2
b2 =
3

(17.8)

e il metodo `e di ordine 2.

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 ) + . . .

y(tn + kn+1 ) = y(tn + kn+1 + kn+2 ) kn+2 y (tn + kn+1 + kn+2 )+

kn+2

y (tn + kn+1 + kn+2 ) + . . .


+

y(tn + kn+1 + kn+2 ) = y(tn + kn+1 + kn+2 )

`
17.3. CONSISTENZA E STABILITA

103

da cui i coefficienti

a2 = 1

a0 + a1 + a2 = 0
a0 (kn+1 + kn+2 ) a1 kn+2 = b2 kn+2

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

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 16.3.2). Questi metodi risultano
particolarmente vantaggiosi quando la valutazione della funzione f `e onerosa,
poiche 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).

17.3

Consistenza e stabilit`
a

Dalle condizioni dordine (17.6), si vede che un metodo lineare multistep `e


consistente se
(1) = 0, (1) = (1)
La consistenza, per`o, non `e sufficiente ad assicurare la convergenza di un
metodo. Consideriamo lapplicazione del metodo BDF2 (17.8) e del metodo
a due passi del secondo ordine (17.7) al semplice problema differenziale
(
y (t) = 0, t > 0
(17.9)
y(0) = e
la cui soluzione `e evidentemente y(t) e. Lapplicazione del secondo metodo
porge
yn+2 3yn+1 + 2yn = 0
Dunque y0 = e e prendiamo pure y1 = e. Allora, y2 = 3e 2e che, a causa
degli errori di arrotondamento, vale e + , < 9 1016 . Poi, y3 = 3y2 2y1 =
3(e + ) 2e. Anche senza introdurre ulteriori errori di arrotondamento (che,
in realt`a, ci sono), si ha y3 = e + 3. In generale, si ha
yn = e + (2n1 1)

104

CAPITOLO 17. METODI MULTISTEP


step
y2
y3
y10
y20
y30
y40
y50
y60
y70
y80
y90
y100

BDF2 (17.8)
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00
2.7182818284590451e+00

metodo (17.7)
2.7182818284590455e+00
2.7182818284590473e+00
2.7182818284593857e+00
2.7182818288082906e+00
2.7182821860869133e+00
2.7186480393965446e+00
3.0932818284590446e+00
3.8671828182845888e+02
3.9321871828182810e+05
4.0265318671828151e+08
4.1231686041871790e+11
4.2221246506598656e+14

Figura 17.1: Primi passi di risoluzione del problema test (17.9).


Dunque, se il numero di passi `e m = t /k, si ha
lim yn,k = lim yn =
n

k0

come ben si vede dalla Tabella 17.1. Abbiamo quindi un metodo la cui
soluzione numerica diverge facendo tendere il passo temporale a 0 (cio`e pro` proprio un piccolo errore
prio lopposto di quanto dovrebbe succedere). E
commesso ad un passo che si accumula in maniera distruttiva. Si potrebbe
pensare che il problema nasca dallarrotondamento dellaritmentica di macchina e che in assenza di questo tutto possa funzionare, ma non `e cos`. Per
il problema (17.9) consideriamo un metodo ad s passi di ordine p i cui primi
valori siano
zj = k p j + e, 0 j s 1

ove `e una radice del polinomio (w) (che dora in poi chiameremo caratteristico). Sono valori accettabili, in quanto distano O(k p ) dalla soluzione
analitica (per contro, e + dista O(1) per qualunque k). Ora zs si trova
risolvendo
s
X
aj zj = 0
j=0

da cui

zs =

s1
X
j=0

aj zj = k

ove si `e usato () = 0 e

s1
X
j=0

aj e

s1
X

aj = k p s + e

j=0

aj = 0. Per induzione si arriva a provare che

zn,k = zn = k p n + e

`
17.3. CONSISTENZA E STABILITA

105

`e una soluzione di (17.9), con zn,k y(tn ) = k p n . Dunque il metodo `e


consistente ma, se vogliamo che fissato listante tn si abbia limk0 zn,k = y(tn )
occorre che || 1. Se `e radice multipla di (w), allora `e radice anche di
(w) e pertanto soddisfa

() =

s
X

aj jj1 = 0

j=0

Allora anche zn,k = zn = k p nn + e `e una soluzione numerica. Infatti


!

s
s
s
s
X
X
X
X
j1
n
j
n+1
p
+e
aj =
aj n +
aj j
aj zn+j = k
j=0

j=0

p n

j=0

j=0

p n+1

= k n() + k

() + 0 = 0

ed `e generata dai valori iniziali zj = k p jj + e, 0 j s 1. Se vogliamo


che zn,k converga alla soluzione analitica per k 0, 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 = e e zn = k p n + e, radice del
polinomio caratteristico. Sono entrambe soluzioni consistenti del problema e
le seconde sono state generate ammettendo delle perturbazioni j = k p j per
i primi s termini. Dunque
|zj,k yj,k | = |j | max k p ||j
0js

mentre le soluzioni distano


|zn,k yn,k | = k p n
e se non `e minore o uguale di 1, tali differenze non sono limitate. Dunque,
un insieme di perturbazioni limitate pu`o produrre un insieme di soluzioni
non limitate. Allo stesso modo, se si considerano le soluzioni yn = e e
zn = k p nn + e, radice multipla del polinomio caratteristico, si ha
|zj,k yj,k | = |j | max k p j||j
0js

mentre
|zn,k yn,k | = k p nn

` giustificata allora (in analogia


e quindi le soluzioni divergono se || 1. E
con quanto visto al paragrafo 10.2.7) la seguente

106

CAPITOLO 17. METODI MULTISTEP

Definizione 4. Dato un metodo lineare multistep (17.5), siano z in , i = 1, 2,


due perturbazioni della soluzione definite da
0j s1
z ij = y j + ij ,
s
s
X
X
aj z in+j = k
bj f (tn+j , z in+j ) + 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 (17.5) si dice (zero-)stabile.
Oltre alla consistenza, laltro ingrediente per avere la convergenza di un
metodo `e proprio la stabilit`a. Infatti, posto, come al solito,
y n+s

s1
X

aj y(tn+j ) = k

j=0

s1
X

bj f (tn+j , y(tn+j )) + kbs f (tn+s , y n+s )

j=0

lerrore 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 ))

(17.10)

ove il secondo termine `e dellordine dellerrore locale e il primo termine tiene


conto dellaccumulazione degli errori ai passi precedenti, cio`e delle perturbazioni tra la soluzione esatta e la soluzione numerica ai passi precedenti.
Guardando la rappresentazione dellerrore (17.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
e
2j = y(tj ) y j ,
2n+s

= k
+

s1
X

s1
X

j=sn

2n+s

= k
+

s1
X
j=0

bj f (tj+n , z j+n ) + k

j=sn

s1
X

0j s1
bj f (tj+n , y(tj+n ))+

j=sn

aj (z j+n y(tj+n )) ,

s1
X

bj f (tj+n , z j+n ) + k

j=0

aj (z j+n y(tj+n )) ,

0ns
s1
X

bj f (tj+n , y(tj+n ))+

j=0

s+1nms

`
17.3. CONSISTENZA E STABILITA

107

Dunque, perche un metodo sia convergente (cio`e lerrore tenda a zero con
k), occorre che le perturbazioni della soluzione introdotte ad ogni passo (da
errori di approssimazione del metodo stesso o arrotondamento) rimangano
limitate (ci`o non fa esplodere la prima parte di (17.10)) e che lerrore locale
tenda a zero con k (ci`o fa andare a zero la seconda parte di (17.10)).
Abbiamo visto che la condizione delle radici `e necessaria affinche perturbazioni limitate generino soluzioni limitate. In realt`a essa `e anche sufficiente.
Inoltre questa condizione permette non solo di mantenere limitate le perturbazioni, ma anche di farle tendere a 0. Si ha infatti il seguente teorema
fondamentale:
Teorema 10 (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 (17.9). Inoltre, se i valori iniziali approssimano con
ordine p le soluzioni analitiche, allora il metodo `e convergente con ordine
p. Ritornando al metodo (17.7), si ha che = 2 `e radice del polinomio
1010

msinstabile.m

k = 0.125
k = 0.250
k = 0.500
k = 0.625
soluzione esatta
108

106

104

102

Figura 17.2: Applicazione del metodo (17.7) al problema differenziale y (t) =


y(t), y(0) = 1.
caratteristico e infatti yn = k 2 2n +e `e una soluzione del problema differenziale

108

CAPITOLO 17. METODI MULTISTEP

che abbiamo usato come modello. Pertanto, il metodo non `e stabile, come
si vede anche in Figura 17.2 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 (perche (w) = w 1) e che i metodi di AdamsBashforth
e AdamsMoulton sono stabili (perche (w) = ws ws1 ). Esiste un limite
superiore per lordine di un metodo a s passi, dato dal seguente
Teorema 11 (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.

17.4

Influenza degli errori di arrotondamento

Abbiamo visto che la stabilit`a assicura che perturbazioni consistenti di ordine


O(k p ) permettono ad un metodo di convergere con il medesimo ordine. 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

k
en+1 k (1 + k)k
en k + ck 2 + n+1
da cui, per induzione,
ck 2 +
ken k
[(1 + k)n 1] + (1 + k)n ke0 k,
k
ove = max0nm n e quindi

ck

t
+
+ et ke0 k,
ken k (e 1)

0nm

0nm

17.4. INFLUENZA DEGLI ERRORI DI ARROTONDAMENTO

109

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 lerrore potrebbe esplodere. Pertanto esisterebbe un
k ottimale (non eccessivamente piccolo) che minimizza lerrore globale del
metodo quando implementato in aritmetica di macchina.

Capitolo 18
Metodi di RungeKutta
18.1

Metodi di RungeKutta 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 allandamento 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

(18.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
(18.2)
y n+1 = y n + kf tn + , y n + f (tn , y n )
2
2
110

18.1. METODI DI RUNGEKUTTA ESPLICITI

111

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
Lidea generale dei metodi espliciti di RungeKutta `e quella, come al solito,
di sostituire lintegrale nella formula risolutiva
y(tn+1 ) = y(tn ) +

tn+1

f (, y( ))d

tn

con una formula di quadratura su nodi tn + cj k, 1 j nellintervallo


[tn , tn+1 ]. Si giunge quindi a
y(tn+1 ) y(tn ) + k

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

..

i1

y(t + c k) y + k

ai,j f (tn + cj k, j ) = i
n
i

j=1
..

y(tn + c k) y n + k
a,j f (tn + cj k, j ) =

j=1

y n+1 = y n + k
bj f (tn + cj k, j )

(18.3)

j=1

ove i parametri cj , bj e ai,j sono da determinare in modo da ottenere lordine


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

112

CAPITOLO 18. METODI DI RUNGE-KUTTA


0
c2
c3
..
.

(0)
a2,1
a3,1
..
.

a3,2
..
.

...

c1
c

a1,1
a,1

a1,2
a,2

...
...

a1,2
a,2

a,1

b1

b2

...

b2

b1

Tabella 18.1: Tableau di Butcher per metodi di RungeKutta espliciti.


metodo di Eulero. Per = 2, lordine 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

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 lordine `e due se
0
1

0
1
2

1
1
2

1
2

1
2

2
3

2
3
1
4

3
4

Tabella 18.2: Metodi di RungeKutta espliciti di ordine 2.

18.1. METODI DI RUNGEKUTTA ESPLICITI

b1 + b2 = 1

1
a2,1 b2 =

b2 c2 = b2 a2,1

113

(18.4)

da cui, per esempio, i metodi di ordine due riportati in Tabella 18.2. I primi
due corrispondono ai due metodi visti allinizio 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). Il punto
cruciale di questo sviluppo in serie di Taylor `e luguaglianza 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
(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 dellordine pu`o avere infinite soluzioni. Solitamente si impone
lulteriore vincolo
i1
X
ai,j = ci , 2 i
j=1

Da notare che la condizione

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 RungeKutta 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 18.3.

114

CAPITOLO 18. METODI DI RUNGE-KUTTA


numero stadi
massimo ordine p

1 2
1 2

3
3

4 5
4 4

6
5

7
6

8
6

Tabella 18.3: Massimo ordine dato il numero di stadi.


Il numero di stadi equivale al numero di valutazioni della funzione f (e
dunque al costo del metodo).
c1
c2
c3
..
.

a1,1
a2,1
a3,1
..
.

a2,2
a3,2
..
.

a3,3
...

...

c1
c

a1,1
a,1

a1,2
a,2

...
...

a1,2
a,2

a1,1
a,1

a,

b1

b2

...

b2

b1

a1,1
a2,1
..
.
..
.
a1,1
a,1

a1,2
a2,2
..
.
..
.
a1,2
a,2

...
...
...
...

...
...
...
...

...
...

b1

b2

...

c1
c2
c3
..
.
c1
c

...
...

a1,1
a2,1
..
.
..
.
a1,1
a,1

a1,
a2,
..
.
..
.
a1,
a,

...

b1

Tabella 18.4: Tableaux di Butcher per i metodi di RungeKutta semiimpliciti


(sopra) e impliciti (sotto).
` possibile generalizzare i metodi espliciti di RungeKutta per ottenere
E
metodi semiimpliciti e impliciti, i cui tableaux sono riportati in Tabella 18.4.
Per tali metodi, lordine massimo raggiungibile dato il numero di stadi `e
p = 2. Anche per essi valgolo le condizioni

ai,j = ci ,

j=1

1i

X
j=1

bj = 1

18.2. UN ESEMPIO DI METODO DI RUNGEKUTTA IMPLICITO 115


Lo schema generale di un metodo di RungeKutta si scrive dunque

ai,j f (tn + cj k, j ), i = 1, . . . ,
= yn + k

i
j=1

bj f (tn + cj k, j )

y n+1 = y n + k

(18.5)

j=1

ove j = i 1 per gli schemi espliciti, j = i per gli schemi semiimpliciti e


j = per gli schemi impliciti. Ai fini dellimplementazione, per evitare di
calcolare pi`
u volte la funzione f negli stessi punti, si usa lo schema

ai,j f j , i = 1, . . . ,
f = f tn + ci k, y n + k

i
j=1

bj f j

y n+1 = y n + k
j=1

Si ricava da (18.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 i1
j=1 ai,j f j ), i = 1, . . . , .

18.2

Un esempio di metodo di RungeKutta


implicito

Consideriamo il seguente metodo di RungeKutta (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

(18.6a)
(18.6b)

1
2

1
Esso equivale al metodo punto medio implicito

k y n + y n+1
y n+1 = y n + kf tn + ,
2
2

(18.7)

infatti, per questultimo vale


y n + y n+1
k
= yn + f
2
2

k y + y n+1
tn + , n
2
2

116

CAPITOLO 18. METODI DI RUNGE-KUTTA

da cui si deduce che (y n +y n+1 )/2 = 1 e dunque (18.6b) coincide con (18.7).
` un metodo di ordine 2 (lo si dimostra a partire da (18.7) con passaggi molto
E
simili a quelli fatti per i metodi di RungeKutta 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))
y(t)T y(t) `e costante, cio`e xT f (t, x) = 0 per ogni t, allora per (18.7) vale
T
yT
a `e inten+1 y n+1 = y n y n . Prima di dimostrarlo, osserviamo che la propriet`
ressante 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
y n+1 y n = kf

k y + y n+1
tn + , n
2
2

e quindi, posto x = (y n + y n+1 )/2,


0=

y n + y n+1
2

kf

k y + y n+1
tn + , n
2
2

=k

y n + y n+1
2

(y n+1 y n )

da cui la tesi.
3.3

symplectic.m

Heun
trapezi
punto medio impli ito
3.25

3.2

y1 (t)2 + y2 (t)2 + y3 (t)2

3.15

3.1

3.05

2.95

2.9

2.85

2.8
0

20

40

60

80

100

120

Figura 18.1: Evoluzione di y1 (t)2 + y2 (t)2 + y3 (t)2 per il problema (18.8).


Consideriamo il seguente problema (equazioni di Eulero per il corpo rigido

18.2. UN ESEMPIO DI METODO DI RUNGEKUTTA IMPLICITO 117


libero):

y1 (t) =

y2 (t) =

y3 (t) =

I2 I3
y2 (t)y3 (t)
I2 I3
I3 I1
y3 (t)y1 (t)
I3 I1
I1 I2
y1 (t)y2 (t)
I1 I2

(18.8)

y rappresenta il momento angolare e I1 , I2 e I3 sono i momenti principali


dinerzia. 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): lintegrazione 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 18.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 lesatta 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.
` 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.
Anche il -metodo pu`o essere fatto rientrare nella classe dei metodi di
RungeKutta semiimpliciti:

1 = yn
2 = y n + k(1 )f (tn , 1 ) + kf (tn + k, 2 )

y
n+1 = y n + k(1 )f (tn , 1 ) + kf (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 + kf 2 )

y n+1 = y n + k(1 )f 1 + kf 2

Dunque, abbiamo risposto anche alla prima domanda allinizio di questo


capitolo. Vediamo ora come rispondere alla terza domanda.

118

CAPITOLO 18. METODI DI RUNGE-KUTTA

18.3

Metodi di RungeKutta 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 dallavere assunto i passi temporali costanti). In generale, pi`
u lequazione
ha un comportamento lineare, pi`
u i passi possono essere presi grandi. Ma
come adattare automaticamente il passo allandamento della soluzione? Supponiamo di avere due metodi di RungeKutta espliciti di ordine p 1 e p
` chiaro che,
rispettivamente, i cui tableaux sono riportati in Tabella 18.5. E
0
c2
c3
..
.
c1
0
c2
c3
..
.
c1
c

a2,1
a3,1
..
.

a3,2
..
.

...

a1,1
b1

a1,2
b2

...
...

a2,1
a3,1
..
.

a3,2
..
.

a1,1
a,1
b1

a1,2
a,2
b2

a1,2
b2

b1

...
...
...
...

a1,2
a,2
b2

a,1
b1

Tabella 18.5: Metodi di RungeKutta di ordine p 1 e p.


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 18.6.
Il fatto che per trovare metodi di RungeKutta 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 lapprossimazione di y(tn ) ottenuta con il metodo di RungeKutta


di ordine p. Si ha allora
(p)

(p1)

(p)

(p1)

p
(tn+1 ) + y
(tn+1 ) y n+1 k Cn+1 kn+1
ky n+1 y n+1 k = ky n+1 y
, (18.9)

18.3. METODI DI RUNGE-KUTTA EMBEDDED


0
c2
c3
..
.
c

a2,1
a3,1
..
.

a32
..
.

a,1
b1
b1

a,2
b2
b2

119

...
...
...
...

a,1
b1
b1

Tabella 18.6: Metodi di RungeKutta 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 lerrore locale del metodo di ordine p 1. Se si vuole controllare
tale errore si pu`o allora richiedere, ad ogni passo, che
(p)

(p1)

(p1)

ky n+1 y n+1 k tola + ky n+1 k tolr


(p)

(18.10)

(p1)

Se la disuguaglianza non `e soddisfatta, si rifiuta y n+1 (e y n+1 ) e si calcola un


nuovo passo di integrazione kn+1 minore di kn+1 . Per fare questo, si suppone
che valga
(p)
(p1)
p
ky n+1,kn+1 y n+1,kn+1 k = Cn+1 kn+1
(p1)

(p)

ky n+1,k

n+1

y n+1,k

n+1

p
p
k = Cn+1 kn+1
= Cn+1 kn+1

p
(cio`e Cn+1 = Cn+1 ) e si impone che lerrore Cn+1 kn+1
valga proprio quanto
la tolleranza richiesta, ricavando

kn+1 =

(p1)

tola + ky n+1 k tolr


Cn+1

!1/p

(p1)

tola + ky n+1 k tolr


(p)

(p1)

ky n+1 y n+1 k

!1/p

kn+1

Se invece la disuguaglianza (18.10) `e soddisfatta, si accetta il passo corrente


e per il successivo si suppone che valga
(p)

(p1)

p
ky n+1,kn+1 y n+1,kn+1 k = Cn+1 kn+1

(p)
(p1)
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 lerrore successivo Cn+2 kn+2
valga quanto la tolleranza richiesta, ricavando

kn+2 =

(p1)

tola + ky n+1 k tolr


Cn+2

!1/p

(p1)

tola + ky n+1 k tolr


(p)

(p1)

ky n+1 y n+1 k

!1/p

kn+1

120

CAPITOLO 18. METODI DI RUNGE-KUTTA


(p1)

(p1)

(p1)

Evidentemente si `e supposto anche che ky n+1,kn+1 k ky n+1,k k ky n+2,kn+2 k.


n+1
Lespressione trovata `e la stessa. Per evitare che il passo di integrazione cambi
troppo bruscamente, si pu`o adottare una correzione del tipo

!1/p
(p1)
tola + ky n+1 k tolr
kn+1
min 2, max 0.6, 0.9
(p)
(p1)
ky n+1 y n+1 k
Vediamo un esempio facile di costruzione di metodi di RungeKutta embedded. Innanzitutto, osserviamo che qualunque metodo di RungeKutta
(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 RungeKutta di ordine uno, cio`e il metodo di Eulero. Quindi, qualunque metodo di RungeKutta
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)


f 2 = f (tn + c2 kn+1 , y n + a2,1 kn+1 f 1 )
(21)
en+1 = kn+1 [(b1 1)f 1 + b2 f 2 ]
(21)

(1)

IF ken+1 k > tola + ky n+1 ktolr


n = n 1 (time step rifiutato)
ELSE
(2)

(1)

(21)

y n+1 = y n+1 + en+1


END

h
i1/2
(1)
(21)
kn+2 = (tola + ky n+1 k tolr )/ken+1 k
kn+1

n=n+1

Forse il pi`
u importante metodo di RungeKutta embedded `e il Runge
KuttaFehlberg, di ordine (4)5, il cui tableau `e riportato in Tabella 18.7.

18.3. METODI DI RUNGE-KUTTA EMBEDDED

121

0
1
4
3
8
12
13

1
1
2

1
4
3
32
1932
2197
439
216
8
27

9
32
7200
2197

7296
2197
3680
513
3544
2565

845
4104
1859
4104

11
40

25
216

1408
2565

2197
4104

15

16
135

6656
12825

28561
56430

9
50

2
55

Tabella 18.7: Metodo di RungeKuttaFehlberg.

Capitolo 19
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
(19.1)
y(t0 ) = y0
la cui soluzione esatta y(t) = e(tt0 ) y0 tende a zero, per t +, se () <
0. Analizziamo il comportamento del metodo di Eulero per questo problema,
supponendo di avere fissato il passo temporale k: si ha
yn+1 = yn + kyn = (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

da cui
lim yn = 0 k <

2()
||2

(19.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
122

123
da cui
lim yn = 0 |1 k| > 1 |1 k() ki()| > 1

disuguaglianza sempre soddisfatta, poiche () < 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 )kyn + kyn+1
da cui

1 + (1 )k
yn =
1 k

Si ha

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()

Se 2 1 0, certamente la disequazione `e soddisfatta. Altrimenti,


lim yn = 0 k <

2()
,
(2 1)||2

(2 1 < 0)

(19.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 linsieme dei numeri
z = k per cui la soluzione di (19.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 : |1z| > 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
(19.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 19. A-STABILITA

124

-2

-2

-2

-4

-4

-4

-4

-2

-4

-2

-4

-2

Figura 19.1: Regioni di assoluta stabilit`a (bianche) per i metodi di Eulero,


Eulero implicito e trapezi.
si ha

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 19.2 vediamo lapplicazione dei due metodi al
problema
(
y (t) = 2000(y cos t), t 1.5
(19.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.

19.1

A-stabilit`
a dei metodi di RungeKutta
espliciti

Teorema 12. Per un metodo di RungeKutta 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 lordine p `e uguale al


numero di stadi , si ha
z2
z
r(z) = 1 + z +
+ ... +
2!
!

` DEI METODI DI RUNGE-KUTTA ESPLICITI 125


19.1. A-STABILITA
2

Lstability.m

Trapezi
Eulero impli ito

1.5

y(t)

0.5

-0.5
0

0.5

1.5

Figura 19.2: Metodi dei trapezi e di Eulero implicito per la soluzione di (19.4)
con k = 1.5/40.
4

-2

-2

-2

-4

-4

-4

-2

-4

-4

-2

-4

-2

Figura 19.3: Regioni di assoluta stabilit`a (bianche) per i metodi di Runge


Kutta di ordine 2, 3 e 4.
Dimostrazione. Si ha che 1 = yn `e un polinomio di grado 0 in z. Supponiamo
che j sia un polinomio pj1 (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 = p1 (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 19. A-STABILITA

126

e dunque r(k) `e un polinomio di grado in z = k. Poi, se lordine 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

zp
z2
+ ... +
r(k) = r(z) = 1 + z +
+ O(z p+1 )
2!
p!
da cui la tesi.
Dunque, i metodi di RungeKutta 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 RungeKutta esplicito r(z) `e un
polinomio di grado (e dunque di grado maggiore di 0).
Teorema 13. Nessun metodo di RungeKutta esplicito `e A-stabile.
Dimostrazione. Si ha
lim yn = 0 |r(z)| < 1,

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 dellunico metodo
di RungeKutta implicito che conosciamo, cio`e il metodo del punto medio
implicito (18.7), osserviamo che il metodo coincide, per problemi lineari, con
il metodo dei trapezi. Pertanto, ha la stessa regione di assoluta stabilit`a.

19.2

A-stabilit`
a dei metodi lineari multistep

Ci limitiamo a riportare alcuni risultati.


Teorema 14. Nessun metodo esplicito multistep `e A-stabile.
Teorema 15. I metodi BDF ad un passo (Eulero implicito) e a due passi
sono A-stabili.
Teorema 16 (Seconda barriera di Dahlquist). Lordine pi`
u alto che un
metodo multistep A-stabile pu`o raggiungere `e due.

19.3. EQUAZIONI STIFF

19.3

127

Equazioni stiff

Se consideriamo il problema
(
y (t) = 100y(t), t > 0
y(0) = 1
la condizione (19.3) per il metodo di Eulero impone k < 1/50 = 0.02. Daltra
parte, la soluzione analitica del problema per t = 0.4 `e minore di 1017 (e
dunque, trascurabile, nel senso che y(0) t(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

stiff.m

Eulero espli ito


Eulero impli ito

10250

errore in norma innito

10200

10150

10100

1050

100

k < 2/100
1050

500

1000

2000 2500

Figura 19.4: Eulero esplicito e Eulero implicito per la soluzione di (19.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

100t
e
y(t) =
et

(19.5)

`
CAPITOLO 19. A-STABILITA

128

e la sua norma infinito `e minore di 1017 per t = 40. Poiche per`o per poter
calcolare la prima componente serve un passo temporale k < 0.02, sono necessari pi`
u di 2000 passi (vedi Figura 19.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 allinizio 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 lanalisi, 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 + t1 (tD)(Dz 0 + V 1 b)
ove


e 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(t) y n )
ove Jn `e la matrice jacobiana
Jn =

fi
(y )
yj 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 (15.1) si dice stiff in un intorno di tn
se esiste almeno una coppia di autovalori 1 , 2 della matrice jacobiana Jn
tali che

19.3. EQUAZIONI STIFF

129

(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 17.4). Il metodo implicito richiede la soluzione ad ognuno dei pochi
passi di un sistema, in generale, non lineare.

19.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 lequazione (per assurdo, poiche
lequazione da risolvere `e lineare), siccome
kAx Ayk2 kAk2 kx yk2 = max kx yk2
si avrebbe la restrizione (vedi (16.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 20
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((tt0 )A)y 0 +(tt0 )1 ((tt0 )A)b = y 0 +(tt0 )1 ((tt0 )A)(Ay 0 +b)
Infatti y(t0 ) = y 0 e
y (t) = A exp((t t0 )A)y 0 + exp((t t0 )A)b =
= A(exp((t t0 )A)y 0 + (t t0 )((t t0 )A)1 exp((t t0 )A)b+
(t t0 )((t t0 )A)1 b + A1 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 7. 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 + k1 (kA)b(tn , y n ) = y n + k1 (kA)(Ay n + b(tn , y n ))
Proposizione 4. Il metodo di Eulero esponenziale `e esatto se b(y(t)) =
b(y 0 ) b e di ordine uno altrimenti.
130

131
Dimostrazione. Si ha
y n+1 = exp(kA)y n +

tn+1

tn

exp((tn+1 )A)g(tn )d

ove si `e posto g(t) = b(t, y(t)). Per la formula di variazioni delle costanti (7.2)
Z tn+1
y(tn+1 ) exp(kA)y(tn )
exp((tn+1 )A)g(tn )d =
tn
Z tn+1
= exp(kA)y(tn ) +
exp((tn+1 )A)g( )d +
tn
Z tn+1
exp(kA)y(tn )
exp((tn+1 )A)g(tn )d =
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). Poiche


risolve esattamente i problemi lineari, il metodo `e A-stabile.
Proposizione 5. Per un problema lineare, non autonomo
(
y (t) = Ay(t) + b(t), t > 0
y(t0 ) = y 0
il metodo esponenzialepunto medio
y n+1 = exp(kA)y n + k1 (kA)b(tn + k/2) = y n + k1 (kA)(Ay n + b(tn + k/2))
`e esatto se b(t) b e di ordine 2 altrimenti.
Dimostrazione. Procedendo come sopra, si arriva a
Z tn+1
exp((tn+1 )A)b(tn + k/2)d =
y(tn+1 ) exp(kA)y(tn )
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
2

= (k 2 (kA) k 2 /21 (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
3
= O(k )

132

CAPITOLO 20. INTEGRATORI ESPONENZIALI

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
Jn =

f
(y ),
y n

bn (y(t)) = f (y(t)) Jn y(t)

e applicarvi il metodo di Eulero esponenziale. Si arriva cos` al metodo di


EuleroRosenbrock esponenziale
y n+1 = exp(kJn )y n + k1 (kJn )bn (y n ) = y n + k1 (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 luso di precondizionatori efficaci.

Capitolo 21
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) affinche y1 (t) = u(x) sia soluzione del problema originale.

2. Con riferimento alla Figura 21.1, lequazione 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 questultimo, si trovi il numero minimo di passi temporali affinche il metodo di Eulero esplicito
produca una soluzione al tempo t che dista da (t ) meno di 102 .

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 = 23 , 24 , . . . , 28 .
Si confrontino i risultati con la soluzione di riferimento ottenuta usando
= 1/2 e k = 210 , mettendo in evidenza lordine del metodo usato.
Si provi anche il valore = 1/3, discutendo i risultati ottenuti.
133

134

CAPITOLO 21. ESERCIZI

(t)

m
g

Figura 21.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

(21.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 18.2) e lo si testi per il sistema differenziale (21.1), producendo il
grafico della quantit`a E(t).
6. Si implementino gli altri due metodi di ordine 2 in Tabella 18.2, li si
testi per il sistema differenziale (21.1), mettendone in evidenza lordine.

135
0
1
2
1
2

1
2

1
2

0
0

1
6

1
3

1
3

1
6

Tabella 21.1: Metodo di RungeKutta a 4 stadi.


7. Si implementi il metodo di RungeKutta di tableau in Tabella 21.1,
determinandone numericamente lordine.
8. Si implementi la function relativa ad un generico metodo di Runge
Kutta esplicito con tableaux dato da
c

A
bT

ove c, A e b sono dati.


9. Si implementi il metodo di RungeKutta (embedded) di tableau
0
1
2

1
2

1
6

2
3

1
6

e lo si applichi al problema differenziale 21.1.


10. Si implementi il metodo di RungeKuttaFehlberg il cui tableau `e riportato nella Tabella 18.7, e se ne mostri lordine. Lo si testi sul sistema
differenziale (21.1).

Parte 3
PDEs
(Equazioni alle derivate
parziali)

136

Capitolo 22
Equazioni di
trasporto-diffusione-reazione
Ci occuperemo in questo capitolo delle equazioni di trasporto-diffusionereazione (advection-diffusion-reaction, ADR).

22.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)

(22.1)

Supponiamo che u0 (x) verifichi le condizioni di compatibilit`a u0 (a) = u0 (b) =


0. Tale equazione rappresenta, per esempio, landamento 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).

22.1.1

Esistenza di una soluzione

Cerchiamo una soluzione a variabili separabili


u(t, x) = (t)(x)
Inserendo tale rappresentazione in (22.1), si deduce
(t)(x) = (t) (x),
137

t > 0, x (0, L)

138
da cui

CAPITOLO 22. EQUAZIONI ADR


(t)
= K (costante) (t) = AeKt
(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 = 2 > 0, > 0,
allora

(x) = B eix eix = 2Bi sin(x) = B sin(x)

(avendo ridefinito B) e poiche (L) = 0, lunica 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 dellequazione del calore (e soddisfa le condizioni ai bordi) per
ogni j. Quindi, la seguente serie
u(t, x) =

cj uj (t, x)

j=1

`e soluzione formale dellequazione del calore. Per quanto riguarda la condizione iniziale, si deve imporre
u0 (x) = u(0, x) =

X
j=1

cj sin

j
x
L

(22.2)

Poiche u0 (x) `e nulla agli estremi, la possiamo prolungare per antisimmetria


allintervallo [L, L]. Sotto opportune ipotesi, la sua serie di Fourier
u0 (x) =

+
X

j=

u0 j j (x)

22.1. EQUAZIONE DEL CALORE

139

converge in [L, L]. Poiche u0 (x) `e dispari, con riferimento al paragrafo 13.2.1,

Z L
Z L
i
2j(x + L)
u0m/2+1+j =
dx =
u0 (x) sin
u0 (x)m/2+1+j (x)dx =
2L
2L L
L
Z

jx
i 2 L
u0 (x) sin
+ j dx =
=
L
L 0
Z

i 2 L
jx
=
+ j dx
u0 (x) sin
L
L 0
e
u0 m/2+1j

Z L
i
2j(x + L)
= u0 (x)m/2+1j (x)dx =
dx =
u0 (x) sin
2L
2L L
L
Z
i 2 L
u0 (x) sin(jx/L + j)dx = u0 m/2+1+j
=
L 0
Z

da cui
u0 (x) =

+
X

u0 m/2+1+j m/2+1+j (x) =

j=

+
X

u0m/2+1+j

cos(jx/L + j) + i sin(jx/L + j)

=
2L

u0m/2+1+j

cos(jx/L + j) + i sin(jx/L + j)

+
2L

j=

1
X

j=

+
X

u0 m/2+1+j

j=1

+
X
j=1

+
X

cos(jx/L + j) + i sin(jx/L + j)

=
2L

u0m/2+1+j

cos(jx/L + j) i sin(jx/L + j)

+
2L

cos(jx/L + j) + i sin(jx/L + j)

=
2L
j=1

X
2
=
u0 m/2+1+j i sin(jx/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

140

CAPITOLO 22. EQUAZIONI ADR

Confrontanto questultima espressione con (22.2), si deduce

2
cj =
L

u0 (x) sin


j
x dx
L

Si potrebbe mostrare adesso che

j 22
j
u(t, x) =
cj exp 2 t sin
x
L
L
j=1
`e soluzione di (22.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 . Lequazione del calore rappresenta il modello dei fenomeni
di diffusione. La diffusione `e il processo mediante il quale la materia (o lenergia) `e trasportata da una parte di un sistema ad unaltra come risultato
di moti molecolari random.

22.1.2

Unicit`
a della soluzione

Introduciamo la seguente quantit`a (energia)


E(t) =

1 2
u (t, x)dx
2

Si ha
dE
=
dt

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

L
0

u
x

dx 0

Per dimostrare lunicit`a, consideriamo come al solito il problema omogeneo


(corrispondente a (22.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 lunica
soluzione del problema omogeneo. Dunque, se u1 (t, x) e u2 (t, x) fossero due
soluzioni del problema (22.1), allora u1 (t, x) u2 (t, x) sarebbe soluzione del
problema omogeneo e quindi u1 (t, x) u2 (t, x).

22.2. METODO DI FOURIER

141

Se u0 (x) 0, si pu`o dimostrare (principio del massimo debole) che la


soluzione rimane non negativa per ogni t (dallinterpretazione fisica, `e ovvio).
Infatti, dato > 0, si ponga v(t, x) = u(t, x)x2 . Allora t vxx 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

Poiche ovviamente vale anche la disuguaglianza opposta,


min u = min u = min{min u0 , 0} = 0

22.2

Metodo di Fourier

Per quanto visto, il metodo spettrale basato su approssimazione in serie di


Fourier (vedi paragrafo 13.2.1) dovrebbe essere particolarmente adatto alla
risoluzione. Detta
m
X
u(t, x) =
uj (t)j (x)
j=1

la soluzione approssimata, si ha
m
X

uj (t)j (x)

j=1

m
X

uj (t)2j j (x)

j=1

da cui, per lortonormalit`a della famiglia {j }j ,


(
uk (t) = 2k uk (t), 1 k m
uk (0) = u0k
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
0 k sono i coefficienti di Fourier discreti di u0 prolungata (per inciso, si ha i 2 Lu0 m/2+1+k =
(1)k ck ). Si trova, dunque,
uk (t) = e(k1m/2)

2 2 t/L2

u0 k ,

1km

142

CAPITOLO 22. EQUAZIONI ADR

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 lequazione
del calore sono di Dirichlet nulle. Poiche per`o il dato iniziale `e la funzione dispari u0 (x), allora la soluzione u(t, x) dellequazione del calore nellintervallo
[L, L] `e pure dispari. Infatti, posto v(t, x) =
u(t, x), si ha

v
u

(t, x) = (t, x)
t
t
2

2 u

(t,
x)
=
(

(t, x)
x2
x2

inoltre, v(t, L) = v(t, L) = 0 e v(0, x) =


u(0, x) = u0 (x). Dunque, pure
v(t, x) soddisfa lequazione 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, poiche
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
lequazione originaria nel dominio [0, L], poiche l` la soluzione non `e dispari).
Dunque, si pu`o usare il metodo di Fourier. Se per`o u0 (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.

22.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

(22.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.

22.3. METODO DELLE LINEE

22.3.1

143

Differenze finite

Trascurando per il momento le condizioni ai bordi e usando differenze finite


centrate del secondo ordine a passo costante h

..
=

h2 0

.
ym1
(t)
..

(t)
ym
0

y1 (t)
y2 (t)

...

2
..
.

1
..
.

...
..
.

..

.
...

1
0

2
1

0
y1 (t)
b(t1 , y1 (t))
..

.
y2 (t) b(t2 , y2 (t))

..
..

0
.
.

ym1 (t) b(tm1 , ym1 (t))

1
ym (t)
b(tm , ym (t))
2

ove yj (t) y(t, xj ) o, in maniera compatta,

y (t) = Ay(t) + b(t, y(t)) = f (t, y(t))

(22.4)

(con lovvia definizione dei simboli). A questo punto, si sceglie il metodo


di integrazione temporale (-metodo, RungeKutta, multistep, esponenziale). Si tenga presente che il problema (22.4), che si dice semidiscretizzato, `e
solitamente un problema stiff. Infatti, la matrice

2
1
0
...
0
..

1 2
1
...
.

mm
...
... ...
0
0

R
.

...
..
1
2
1
0
... 0
1 2

ha autovalori reali negativi

j = 4 sin

j
2m+1

1jm

che vengono poi amplificati dal coefficiente 1/h2 . Dunque, con riferimento
alla condizione (19.2) per il metodo di Eulero, volendo usare questo metodo
per lintegrazione temporale occorrerebbe un passo temporale k minore di
(circa) h2 /2. Siccome il metodo di Eulero `e del primo ordine, volendo che
lintegrazione temporale non sia meno accurata dellapprossimazione spaziale,
`e giusto che il passo temporale sia proporzionale a h2 (cos` che lerrore globale
sia O(k + 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 RungeKutta 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 19.3) del metodo di Eulero. Dunque,
ancora k dovrebbe essere proporzionale a h2 /2 (quindi il numero di time steps
non diminuisce) e lerrore globale `e ancora O(k 2 + h2 ) = O(h4 + h2 ) = O(h2 ).

144

CAPITOLO 22. EQUAZIONI ADR

22.3.2

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
Poiche 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 ). Poiche 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+s1 (x) = 0
Pertanto, si deve modificare la prima riga di questo sistema in modo
che esprima luguaglianza 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 limposizione 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 + k1 (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.

22.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE

22.3.3

145

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) = ym1 (t). Lapprossimazione da usare
2
per xu2 (t, b) diventa dunque
2u
u(t, xm+1 ) 2u(t, xm ) + u(t, xm1 )
(t, b)
=
2
x
h2
ym+1 (t) 2ym (t) + ym1 (t)
2ym1 (t) 2ym (t)
=
=
2
h
h2
In maniera analoga si possono trattare condizioni di Neumann non omogenee
(vedi paragrafo 10.4.2).

22.4

Equazione di trasporto-diffusione

Consideriamo lequazione 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)

(22.5)

` facile verificare che la soluzione analitica `e u(t, x) = u0 (x ct), da cui il


E
` ovviamente pi`
nome dellequazione. E
u fisico considerare un dominio limitato
x (a, b). Nel caso in cui c > 0, ha senso (ed `e necessario) prescrivere
ununica condizione al bordo in x = a. Tale punto si chiama punto di inflow
mentre il punto x = b `e detto di outflow. Lequazione 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) = u0 (x ct), ove


(
u0 (x) x [a, b]
u0 (x) =
0
x<a

(22.6)

146

CAPITOLO 22. EQUAZIONI ADR

Nel caso in cui c < 0, il punto di inflow `e x = b. Se consideriamo, pi`


u in
generale, lequazione di trasporto-diffusione

u
u
2u

(t,
x)
+
c
(t,
x)
=
d
t > 0, x (a, b)
t
x
x2
u(0, x) = u0 (x)

u(t, a) = u(t, b) = 0

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 17. 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 18. 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, aij < 0, j =


6 i, allora, preso
y 0 = ej ,

..
.

(I + A)ej = aij riga i


.
..

22.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE

147

e dunque la componente i-esima di exp( A)ej 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 allequazione (22.5), la discretizzazione mediante differenze finite centrate del secondo ordine porge, nei nodi interni,
yi (t) + c

yi+1 (t) 2yi (t) + yi1 (t)


yi+1 (t) yi1 (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 Peclet di griglia. La perdita
di positivit`a `e solo uno degli effetti del numero di Peclet di griglia troppo elevato: si possono avere anche oscillazioni spurie, pertanto si chieder`a sempre
che il numero di Peclet 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, poiche esatto). Pertanto, la condizione sul numero di
Peclet di griglia `e solo necessaria per avere una soluzione numerica positiva.

22.4.1

Stabilizzazione mediante diffusione artificiale

La restrizione sul passo di discretizzazione data dal numero di Peclet di


griglia potrebbe essere irrealizzabile. Vediamo di stabilizzare lo schema delle
differenze finite.
Consideriamo, per esempio, lequazione di trasporto-diffusione

u
u
2u

(t,
x)
+
c
(t,
x)
=
d
t > 0, x (0, 1)

x
x2
t
u(0, x) = x2
(22.7)

u(t, 0) = 0

u(t, 1) = 1

148

CAPITOLO 22. EQUAZIONI ADR

1.5

1.5

FD upwind

peclet.m

FD upwind
s hema SG
soluzione di riferimento
FD entrate

0.5

0.5

s hema SG
soluzione di riferimento
FD entrate

-0.5
0.9

0.91

0.92

0.93

0.94

0.95

0.96

0.97

0.98

0.99

-0.5
0.9

0.91

0.92

0.93

0.94

0.95

0.96

0.97

0.98

0.99

Figura 22.1: Soluzione di (22.7) 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 Peclet 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 22.1. Se consideriamo
invece la discretizzazione del primo ordine della derivata prima
u
ui ui1
(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 lordine di
accuratezza) questo approccio, scriviamo
ui+1 ui1 h ui1 2ui + ui+1
ui ui1
=

h
2h
2
h2
e quindi approssimare al primo ordine
c

2u
ui ui1
ui1 2ui + ui+1
u
(t, xi ) + d 2 (t, xi ) c
+d
=
2
x
x
h
h
ui+1 ui1
ch ui1 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

22.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE

149

cio`e unequazione con una diffusione artificiale (aggiuntiva) di coefficiente


ch/2. Per questa equazione il numero di Peclet vale
ch
2d 1 +

ch
2d

ch
Pe
=
< 1,
2d(1 + Pe)
1 + Pe

e ci`o spiega lassenza di oscillazioni. Vorremmo trovare una diffusione artificiale che stabilizzi lo schema e preservi lordine due delle differenze finite centrate. Cercheremo dunque una funzione del numero di Peclet e
sostituiremo d con d(1 + (Pe)) in modo che il nuovo numero di Peclet valga
ch
2d(1 + (Pe))
La funzione (Pe) dovr`a soddisfare:
(Pe) Pe 1 (cos` il nuovo numero di Peclet 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
centrare sar`a di ordine 2)
Una scelta possibile `e
(t) = t 1 + et ,

(t) =

t2
+ O(t3 ),
2

t0

Una scelta migliore `e


(t) = t 1 +

2t
,
2t
e 1

(t) =

t2
+ O(t4 ),
3

t0

(da notare che lo schema upwind corrisponde a (t) = t). Il risultato corrisponde al grafico magenta in Figura 22.1 e lo schema si chiama di Scharfetter
e Gummel.
Lesempio usato aveva il coefficiente c positivo: la funzione da usare deve
essere funzione del numero di Peclet 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
ui1 2ui + ui+1
(t, xi ) + d 2 (t, xi ) c
+d
=
2
x
x
h
h
ui+1 ui1
ch ui1 2ui + ui+1
= c
+d 1
2h
2d
h2

150

CAPITOLO 22. EQUAZIONI ADR

22.4.2

Elementi finiti

Nel caso di discretizzazione spaziale con elementi finiti lineari, la discretizzazione del problema (22.3) porta al sistema di ODEs
P y (t) = Ay(t) + g(y(t)) + s(t)

(22.8)

ove A `e (lopposta de) la stiffness matrix e P la mass matrix, definita da,


Z xj+1
hj1 + hj
j (x)j (x)dx =
pjj =
3
xj1
Z xj+1
(22.9a)
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
p12 =
1 (x)2 (x)dx =
6
x1
Z xm
hm1
pm1 m = pm m1 =
m (x)m1 (x)dx =
6
xm1
Z xm
hm1
pmm =
m (x)m (x)dx =
3
xm1
Poi, per 1 < i < m,
!
Z xi+1 X
m
uj j (x) i (x)dx =
g
gi =
xi1

j=1

xi

xi1

(22.9b)

m
X

uj j (x) i (x)dx +

j=1

xi+1

xi

m
X
j=1

uj j (x) i (x)dx

g(yi1 ) + g(yi ) hi1 g(yi ) + g(yi+1 ) hi


+
2
2
2
2
Z xi+1
s(t, xi1 ) + s(t, xi ) hi1 s(t, xi ) + s(t, xi+1 ) hi
+
si =
s(t, x)i (x)dx
2
2
2
2
xi1
mentre per i = 1 e i = m
g(ym1 ) + g(ym ) hm1
g(y1 ) + g(y2 ) h1
,
gm =
2
2
2
2
s(t, xm1 ) + s(t, xm ) hm1
s(t, x1 ) + s(t, x2 ) h1
s1 =
, sm =
2
2
2
2

g1 =

22.4. EQUAZIONE DI TRASPORTO-DIFFUSIONE

151

Usando un metodo esplicito per la risoluzione del sistema differenziale (22.8), `e necessaria linversione 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 allapprossimazione degli integrali in (22.9) mediante la formula dei trapezi e dunque non
(1)
riduce laccuratezza 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 (22.8), 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.

22.4.3

Errori spaziali e temporali

Con il metodo delle linee, `e facile capire cosa contribuisce allerrore spaziale
e cosa allerrore temporale. Per esempio, se si usano differenze finite centrate
1
di ordine due, si commette un errore Ch2 , h m1
. Questo significa che,
qualunque metodo si usi per lintegrazione temporale e con qualunque passo
temporale, non `e possibile scendere sotto tale errore. Ci`o `e esemplificato
erroretemporale.m

103
m = 200
m = 250
m = 300

104

errore

105

106

107

108
101

102
passi temporali

103

Figura 22.2: Errore temporale per un numero m di passi spaziali.


in Figura 22.2, ove si `e risolto il problema dellEsercizio 1 con un numero

152

CAPITOLO 22. EQUAZIONI ADR

m diverso di passi spaziali e si `e misurato lerrore rispetto alla soluzione


analitica. Vale ovviamente anche linverso: il metodo scelto per lintegrazione
temporale e il numero di passi temporali pone un limite inferiore allerrore
rispetto alla soluzione analitica.

22.5

Esercizi

1. Si calcoli la soluzione analitica dellequazione del calore con sorgente

u
2u

(t,
x)
=
(t, x) + 2et sin(x), t > 0, x (0, /2)

t
x

u(t, 0) = 0,
t>0

(t, /2) = 0,
t>0

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 lesercizio 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 103 , avendo usato nel tempo
il metodo di Eulero
il metodo di Eulero implicito
il metodo dei trapezi
il metodo di Heun
il metodo RungeKutta di tableau in Tabella 21.1
3. Si ripeta lesercizio 1. usando Eulero esponenziale e esponenziale
punto medio nel tempo.
4. Si studi landamento della soluzione del problema di trasporto-diffusione-

22.5. ESERCIZI

153

reazione

u
2u
u

(t,
x)
+
c
(t,
x)
=
d
(t, x) + u(t, x)(u(t, x) 1/2)(1 u(t, x)), t > 0, x (0, 1)

t
x
x2

u(t, 0) = 0,
t>0

(t, 1) = 0,
t>0

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
Temi desame

154

155
29-06-2010
1. Si implementi il metodo di RungeKutta definito dal tableau
0
1
2
1
2

1
2
1
2

0
0

3
4

5
32

7
32

13
32

1
32

12

7
3

7
3

13
6

16
3

e se ne determini numericamente lordine.


2. Si usi il metodo di RungeKutta implementato sopra per determinare
numericamente il periodo del pendolo

(t) = g sin((t)), t > 0

(0) =
3


(0) = 0

e si dica se `e minore, maggiore o uguale al periodo del pendolo linearizzato



(t) = gl (t), t > 0

l (0) =
3


l (0) = 0

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

1 2u
1
u

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

156
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

n0

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 lordine con cui viene approssimata la


soluzione y(t ) al tempo t = 1.

6. Si calcoli la soluzione analitica del problema di diffusione non omogeneo

2u
u

(t,
x)
=
(t, x) (sin t)(x2 + 2x) + 2 cos t, t 0, x (0, 1)
t
2

u(0, x) = x2 + 2x,
x (0, 1)

u(t, 0) = 0,

u (t, 1) = 0,
x

t0

t0

e si mostri lordine di convergenza temporale del metodo Eulero esponenziale per approssimare la soluzione u(t , x) al tempo t = 1.
7. Per lo stesso problema, si mostri lordine di convergenza temporale del
metodo esponenzialepunto medio.
15-09-2010
8. Si consideri il metodo di RungeKutta 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
j=1

bj f j

157
di tableau
c1 a1,1 a1,2
c2 a2,1 a2,2 =
b1
b2

3+ 3
6
3 3
6

3+ 3
6
33

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 lordine 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

u
2u

(t,
x)
=
(t, x) + (2x x2 ) cos t + 2 sin t, t 0, x (0, 1)

t
x

u(0, x) = 0,
x (0, 1)

u(t, 0) = 0,
t0

u(t, 1) = sin t,
t0
e si mostri lordine di convergenza temporale del metodo Eulero implicito con cui viene approssimata la soluzione u(t , x) al tempo t =
1.

30-09-2010
10. Si risolva mediante il metodo delle differenze finite il problema ai limiti
non lineare

u (x) = 1 (32 + 2x3 u(x)u (x)), x (1, 3)

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).

158
11. Si applichi il metodo delle linee al problema di diffusione non omogeneo

u
2u

(t,
x)
=
(t, x) + 2et sin x, t > 0, x (0, /2)
t
2

u(0, x) = sin x,
x (0, /2)

u(t, 0) = 0,

u (t, /2) = 0,
x

t0

t0

e si mostri lordine 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 CrankNicolson fino ad un tempo finale t = 1. Presa


come soluzione di riferimento quella ottenuta con 1000 passi temporali,
si mostri lordine del metodo e la corretta convergenza del metodo di
Newton.
13. Si applichi il metodo delle linee al problema di convezione-diffusionereazione nel dominio (t, x) [0, 1] [0, 1]

2u
u
u

(t,
x)
=

(t, x) +
(t, x) + u(t, x)(u(t, x) 1/2)(1 u(t, x))

2
t
x
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 lordine 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.

159
24-02-2011
14. Si risolva mediante un metodo di shooting il problema ai limiti

u
(x)
=
(32 + 2x3 u(x)u (x)), x (1, 3)

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 102 .
15. Si applichi il metodo delle linee al problema di diffusione non omogeneo

u
2u
5
x

(t,
x)
=
(t, x) + et sin , t > 0, x (0, )

t
x
4
2

u(0, x) = sin ,
x (0, )
2

u(t, 0) = 0,
t0

u (t, ) = 0,
t0
x
e si mostri lordine 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
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

u
1 2u

(t,
x)
=
(t, x) + sin(u(t, x)),

t
100 x2

u(0, x) = 10x(1 x)2 ,


u(t, 0) = 0,

u (t, 1) = 0,
x

diffusione-reazione
t > 0, x (0, 1)
x [0, 1]
t0
t0

160
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 lapprossimazione 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

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 lordine di convergenza? Perche?

20. Si applichi il metodo delle linee al problema di

1 2u
u

(t,
x)
=
(t, x) + cos(u(t, x)),

t
50
x

u(0, x) = 10x2 (1 x) + 1,

(t, 0) = 0,

u(t, 1) = 1,

diffusione-reazione
t > 0, x (0, 1)
x [0, 1]
t0
t0

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 lapprossimazione 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

161
ove B = b/m, m = 0.5 la massa del proiettile e b = 0.01 il coefficiente
dattrito, g = 9.81 laccelerazione di gravit`a, v0 = 200 il modulo della
velocit`a iniziale e = /3 langolo 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,
t0

u (t, 1) = 0,
t0
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 lapprossimazione della soluzione al tempo t = 1.

29-09-2011
23. Si risolva il seguente problema differenziale

y (x) = 2y 3 6y 2x3 , x (1, 2)

y(1) = 2

y(2) = 5
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
x
4
2

u(0, x) = cos x ,
x (, 2)
2

u(t, ) = 0,
t0

u (t, 2) = 0,
t0
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

162
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
x
2

u(0, x) = sin x,
x (, /2)

u(t, ) = 0,
t0

u (t, /2) = 0,
t0
x

usando differenze finite nello spazio e lintegratore 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 RungeKutta semiimplicito di


tableau
0
1

0
1
2
1
2

1
2
1
2

e se ne calcoli numericamente lordine.

163
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
2
u(0, x) = x x,
x (0, 1)

u(t, 0) = 0,
t0

u(t, 1) = 0,
t0

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 lordine di
convergenza spaziale?

21-06-2012
29. Dei seguenti due metodi multistep
18
y
+
11 n+2
18
y n+3 y n+2 +
11

y n+3

9
y

11 n+1
9
y

11 n+1

2
6
y n = k f (tn+3 , y n+3 )
11
11
3
6
y n = k f (tn+3 , y n+3 )
11
11

si dica quale `e consistente e perche e se ne determini numericamente


lordine.
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)

t
x
x

u(t, 0) = 1,
t>0

(t, 1) = 0,
t>0

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

164
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

(t, x) = 4 2 (t, x) + 3e2t cos ,

t
x
2

u(0, x) = cos x ,
2

(t, 0) = 0,

u(t, ) = 0,

t > 0, x (0, )
x (0, )
t0
t0

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
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

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 perche |m(0)

5
m(1)|

2 10 , ove m(t)

`e lapprossimazione di m(t) calcolata sulla


soluzione numerica.

165
34. Si risolva il seguente problema di convezione-diffusione

u
2u
u

(t, x) = 4 2 (t, x) 2 (t, x), t 0, x (0, 1)

t
x
x

u(0, x) = x2 ,
x (0, 1)

(t, 0) = 0,
t0

u(t, 1) = 1,
t0

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. Perche 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 lordine del seguente metodo di RungeKutta
semiimplicito
1
2

1
2

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 questultimo si calcoli (y n + y n+1 )/2. . .
36. Si risolva il seguente problema di convezione-diffusione-reazione

u
u
2u

+
c
=
d
(t, x) + u2 (1 u), t 0, x (0, 1)

t
x
x

u(0, x) = x2 + 1,
x (0, 1)

(t, 0) = 0,
t0

u(t, 1) = 0,
t0

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.

Parte 5
Bibliografia

166

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. Nrsett, and G. Wanner, Solving Ordinary Differential
Equations I, Nonstiff Problems, Springer, Second Revised Edition, 2000.
[6] W. Hundsdorfer,
Numerical Solution of Advection-DiffusionReaction 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, Birkhauser, 1992.
[9] A. Quarteroni, Modellistica numerica per problemi differenziali, Springer,
terza edizione, 2006.

167