Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1 Introduzione
Le equazioni differenziali che consideriamo sono del tipo
L[u] = f (1)
dove u(x, y) : Ω → R è la funzione incognita definita sulla chiusura Ω di un
insieme Ω ⊂ R2 aperto e connesso, f (x, y) : Ω → R è una funzione nota e
sufficientemente regolare, L[u] è un operatore differenziale lineare definito da
∂2u ∂2u ∂2u ∂u ∂u
L[u] = A 2
+B +C 2 +D +E + F u, (x, y) ∈ Ω
∂x ∂x∂y ∂y ∂x ∂y
dove A, B, C, D, E, F, f : Ω → R sono funzioni assegnate sufficientemente re-
golari. Con l’espressione “u(x, y) è una funzione sufficientemente regolare” si
intende che la funzione u(x, y) con le sue derivate fino a un certo ordine siano
continue sul dominio di definizione. Nella maggior parte dei casi significativi ci
basta la continuità delle derivate fino al quarto ordine.
L’equazione (1) viene complementata con delle condizioni aggiuntive asse-
gnate sulla frontiera ∂Ω di Ω (dette condizioni al contorno) che verranno spe-
cificate caso per caso e differiscono tra loro a seconda della specificità del pro-
blema. Si assume inoltre che la frontiera ∂Ω sia sufficientemente regolare. Ad
esempio sia formata da una curva di Jordan definita da una applicazione conti-
nua γ(t) : [0, 1] → R2 , chiusa cioè tale che γ(0) = γ(1), e semplice cioè tale che
γ(t1 ) 6= γ(t2 ) per t1 6= t2 a parte il caso dei punti 0, 1. Nei problemi provenienti
dalle applicazioni la frontiera è differenziabile a tratti. Esempi classici sono do-
mini rettangolari, a forma di L, poligoni, domini circolari, ellittici. Ma nessuno
vieta di considerare domini con dei “buchi” come quello in Figura 1
1.1 Classificazione
Premettiamo il seguente lemma che motiva la terminologia usata per la classi-
ficazione delle equazioni differenziali.
Lemma 1 Dati A, B, C ∈ R, l’insieme {(x, y) ∈ R2 : Ax2 + Bxy + Cy 2 = 0}
è una ellisse, parabola o iperbole a seconda che B 2 − 4AC sia minore, uguale o
maggiore di zero.
1
Figura 1: Esempio di dominio Ω
1.2 Esempi
Alcuni esempi classici dalle applicazioni:
Problemi ellittici: Operatore di Laplace L[u] = ∆(u), dove
∂2 ∂2
∆(u) = u(x, y) + u(x, y)
∂x2 ∂y 2
Equazione di Laplace ∆(u) = 0, (x, y) ∈ Ω.
Equazione di Poisson ∆(u) = f (x, y), (x, y) ∈ Ω.
Condizioni al contorno di Dirichlet: u(x, y) = g(x, y), (x, y) ∈ ∂Ω, dove ∂Ω
indica la frontiera di Ω.
Condizioni al contorno di Neumann, dove la frontiera ∂Ω di Ω è costituita da
curve differenziabili a tratti:
∂
u(x, y) = g(x, y), (x, y) ∈ ∂Ω (derivata rispetto alla normale alla frontiera)
∂~n
Condizioni al contorno di Robin
∂
α u(x, y) + βu(x, y) = g(x, y), (x, y) ∈ ∂Ω
∂~n
Esempi di domini, Ω = (0, 1) × (0, 1), oppure Ω = {(x, y) : x2 + y 2 < 1}.
Modello fisico del problema di Poisson con condizioni al bordo di Dirichlet:
Ω: insieme racchiuso da una curva chiusa Γ nel piano; u(x, y) è la quota del
punto di coordinate (x, y) di una membrana elastica, in posizione di equilibrio
vincolata a passare per i punti (x, y, g(x, y)), (x, y) ∈ Γ = ∂Ω (filo chiuso nello
2
spazio con proiezione Γ sul piano (x, y)), e soggetta ad una forza f (x, y). Il
modello è valido per superfici “non troppo sghembe” [2].
Problema della bolla di sapone o di Plateau [2]: minimizzare l’area
s 2 2
Z Z
∂u ∂u
A= 1+ + dx dy
∂x ∂y
di una superficie (x, y, u(x, y)), (x, y) ∈ Ω vincolata su una curva chiusa sghemba
nello spazio (x, y, g(x, y)), (x, y) ∈ Γ, dove Γ è la curva chiusa di R2 che racchiude
il dominio Ω ⊂ R2 . L’equazione variazionale di Eulero-Lagrange la cui soluzione
è la u(x, y) che minimizza la superficie, è non lineare:
2 2
∂2u ∂u ∂u ∂u ∂ 2 u ∂2u ∂u
(1 + ) − 2 + (1 + )=0
∂x2 ∂y ∂x ∂y ∂x∂y ∂y 2 ∂x
∂ ∂2
γ u(x, t) − u(x, t) = 0, 0 < x < `, t ≥ 0
∂t ∂x2
dove γ > 0 e u : [0, `] × [0, +∞) → R, ` > 0. Condizioni aggiuntive:
u(x, 0) = g(x)
u(0, t) = a(t), u(`, t) = b(t)
3
t
0
0 l x
∂f ∂f 1 ∂2f
rs + + σ 2 s2 2 − rf = 0
∂s ∂t 2 ∂s
in cui f (s(t), t) è il prezzo al tempo t dello strumento finanziario, mentre s = s(t)
è il prezzo del “sottostante”, e r, σ sono parametri. Per maggiori dettagli si veda
https://en.wikipedia.org/wiki/Black%E2%80%93Scholes_model
Problemi iperbolici: Equazione delle onde
∂2 ∂2
u(x, t) − λ u(x, t) = 0, 0 < x < `, t > 0
∂t2 ∂x2
dove λ > 0. Condizioni aggiuntive:
u(x, 0) = g(x)
∂
u(x, t)|t=0 = v(x)
∂t
u(0, t) = 0, u(`, t) = 0
4
u(x,t)
0 x l
Figura 3: Corda vibrante: u(x, t) è l’ordinata del punto della corda di ascissa x
al tempo t
5
con condizioni iniziali u(x, 0) = g(x) con g(x) funzione assegnata. Il problema è
dominato dal trasporto se c >> D, mentre è dominato dalla diffusione se D >>
c. Il problema può essere trattato nel caso multidimensionale in cui la derivata
prima rispetto ad x è sostituita da una combinazione lineare delle derivate prime
rispetto a xi e la derivata seconda da una combinazione lineare delle derivate
seconde rispetto a xi . Per maggiori dettagli si rimanda alla pagina https:
//en.wikipedia.org/wiki/Convection%E2%80%93diffusion_equation
6
finita
n
X
vn (x) = αi ϕi (x).
i=1
7
Figura 4: Spline cubica a supporto compatto
rispetto agli αi sia nullo, o trattato con le tecniche gia viste nell’approssi-
mazione di funzioni, imponendo cioè l’ortogonalità, col prodotto scalare in
energia, del resto u − v allo spazio Vn generato dalle funzioni ϕi , conduce
ad un analogo sistema lineare finito con matrice di elementi hϕi , L[ϕj ]i.
Nella tecnica degli elementi finiti il dominio viene discretizzato suddividen-
dolo in elementi che possono essere segmenti di varia ampiezza, o, nel caso
bidimensionale, in triangoli, e imponendo che ciascuna ϕi sia non nulla
solo in pochi di questi elementi in modo che la matrice del sistema sia più
sparsa possibile. Un esempio di scelta delle ϕi (x) è costituito dalle fun-
zioni spline ottenute discretizzando l’intervallo in sotto-intervalli [xi , xi+1 ]
di ampiezza h e traslando, centrandola nei vari punti xi , la particolare
funzione spline cubica a supporto compatto definita da
1
3
6 (2 + t) , −2 < t ≤ −1
1 2 3
6 (4 − 6t − 3t ) −1 < t ≤ 0
1
s(x) = 6 (4 − 6t2 + 3t3 ) 0<t≤1 dove t = x/h.
1 3
− t)
6 (2 1<t<2
0 altrove
8
Listing 1: Script di Matlab per tracciare il grafico della funzione B-Spline
function [s,x]=bspline(n)
% function [s,x]=bspline(n)
% calcola e traccia il grafico della B-spline cubica
% n: numero di punti in cui viene discretizzato ciascuno dei
sottointervalli
% x: valori dei punti in cui la spline viene campionata
% s: valori della spline nei punti x
h = 1/(n+1);
x0 = [-3+h:h:-2];
x1 = x0+1;
x2 = x1+1;
x3 = x2+1;
x4 = x3+1;
x5 = x4+1;
x = [x0,x1,x2,x3,x4,x5];
s0 = x0*0;
s1 = (1/6)*(2+x1).^3;
s2 = (1/6)*(4-6*x2.^2-3*x2.^3);
s3 = (1/6)*(4-6*x3.^2+3*x3.^3);
s4 = (1/6)*(2-x4).^3;
s5 = 0*x5;
s = [s0,s1,s2,s3,s4,s5];
plot(x,s,’LineWidth’,3)
end
9
Figura 5: Copertina e Primo capitolo del libro “Istitutiones Calculi
Differentialis” di Leonardo Eulero pubblicato nel 1787.
base ϕi (x). Si impone che il residuo f − L[v] si annulli in alcuni punti spe-
ciali
Pn del dominio. Cioè si interpola la funzione f con funzioni del tipo
i=1 αi L[ϕi ]. Alla luce delle considerazioni fatte sulle costanti di Lebe-
sgue e sulla relazione che intercorre tra l’errore di interpolazione l’errore
di migliore approssimazione uniforme, nel caso si approssimi con polino-
mi è conveniente scegliere i nodi di collocazione in modo da contenere la
crescita delle corrispondenti costanti di Lebesgue. Ad esempio i nodi di
Chebyshev se il dominio è [−1, 1] sono una scelta adatta.
10
ed è unica. Infatti, integrando l’espressione u00 (x) = f (x) si ha
Z x
u0 (x) = f (t)dt + γ1
0
h4 (4)
f (x + h) + f (x − h) = 2f (x) + h2 f 00 (x) + (f (ξ) + f (4) (η))
24
da cui
1 1
f 00 (x) = (f (x − h) − 2f (x) + f (x + h)) + τ h2 , |τ | ≤ max |f (4) (x)|. (5)
h2 12 x∈[a,b]
11
ed è detta differenza in avanti. Similmente l’espressione
1 1 ˆ ξˆ ∈ (x − h, x)
f 0 (x) = (f (x) − f (x − h)) − hf 00 (ξ),
h 2
ottenuta prendendo −h al posto di h è detta differenza all’indietro. Approssi-
mazioni più precise si possono ottenere se f (x) ha maggior regolarità svolgendo
sviluppi in serie di ordine più elevato.
12
per la quale useremo lo stesso simbolo Ln . Per questo possiamo usare la
notazione Ln u per denotare Ln (u).
Il vettore di componenti L[u]|x=xi − (Ln (u))i = h2 τi è detto errore locale di
dicretizzazione.
In generale, l’approssimazione alle differenze Ln (u) che discretizza l’opera-
tore differenziale L[u] si dice consistente di ordine hp se esiste una costante
γ > 0, indipendente da n, tale che maxi |L[u]|x=xi − (Ln (u))i | ≤ γhp per ogni
n > 1. Per questa definizione l’approssimazione (10) dell’operatore L[u] = u00 è
consistente di ordine h2 .
L’equazione differenziale (3) con condizioni al contorno di Dirichlet, ristretta
ai valori ui = u(xi ) si può allora riscrivere come
u1
f1
τ1
a
2 −1
.. .. u2 f2 τ2 0
1 −1 . . ..
..
2 ..
1
..
− 2 = −h − 2
. . . .
h .. .. h
. .
−1 un−1
fn−1 τn−1 0
−1 2 un fn τn b
13
Per valutare l’accuratezza dell’approssimazione v = (vi ) ottenuta risolvendo
il sistema (13) al posto del sistema (12) che ci fornirebbe la soluzione esatta va-
(n)
lutata nei punti della discetizzazione, si introduce l’errore globale (n) = (i ) ∈
Rn , definito da (n) = v − u.
Ci interessa dimostrare che per n → ∞ la successione k(n) k∞ converge a
zero. In questo modo, scegliendo valori di n arbitrariamente grandi, possiamo
meglio approssimare i valori di u(x) in un insieme di punti sempre più fitti e in
modo sempre più accurato.
Sottraendo la (12) dalla (13) si ha
τ1
2 −1 1
.. 2 τ2
1 −1 2 . ..
2
.. .
− 2 . = h
.
h .. ..
. . −1 τn−1
n−1
−1 2 n τn
cioè
An (n) = h2 τ (n) . (14)
Quindi una espressione esplicita dell’errore globale è data da
(n) = h2 A−1
n τ
(n)
.
14
4.3 Analisi in norma 2
Per il problema modello è abbastanza facile fare una analisi della convergenza
in norma 2. Nel seguito indichiamo con tridn (a, b, c) la matrice tridiagona-
le n × n con elementi uguali a b sulla diagonale principale, uguali a c sulla
sopra-diagonale e uguali ad a sulla sotto-diagonale. Useremo la stessa nota-
zione tridn (A, B, C) per denotare la matrice tridiagonale a blocchi con blocchi
A, B, C di dimensione m × m. Nel caso in cui gli elementi (o i blocchi) lungo le
diagonali non fossero costanti useremo la notazione tridn (ai , bi , ci ) per denotare
che la matrice tridiagonale ha sulla i-esima riga gli elementi ai , bi e ci dove
bi è l’elemento diagonale, ci è elemento sopra-diagonale mentre bi è l’elemento
sotto-diagonale. Similmente definiamo trid(Ai , Bi , Ci ). Indichiamo inoltre con
diagn (d1 , . . . , dn ) o più semplicemente con diag(d1 , . . . , dn ) la matrice diagonale
con elementi diagonali d1 , . . . , dn .
Si ricordano i seguenti risultati che si possono dimostrare utilizzando un pò
di trigonometria
Teorema 5 Vale Sn tridn (1, 0, 1)Sn = diag(2c1 , . . . , 2cn ), dove ci = cos(iπ/(n+
1)),
q e dove Sn = (si,j ) è la matrice ortogonale simmetrica di elementi si,j =
2 π
n+1 sin(ij n+1 ).
(n)T
Inoltre vale RnT (tridn (1, 0, 1) + en en )Rn = diag(2ĉ1 , . . . , 2ĉn ), dove ĉi =
π
cos((2i − 1) 2n+1 ), e dove Rn = (ri,j ) è una matrice ortogonale di elementi
q
4 π (n)T
ri,j = 2n+1 sin(i(2j − 1) 2n+1 ). Infine la matrice tridn (1, 0, 1) + e1 e1 ha gli
(n)T
stessi autovalori di tridn (1, 0, 1) + en en in quanto le due matrici sono simili.
Dim. Cerchiamo autovettori del tipo v = (vi ), vi = sin(iθ) per un opportuno θ.
Posto w = tridn (1, 0, 1)v, si ha w1 = sin(2θ) = 2 cos θ sin θ = (2 cos θ)v1 , mentre
wi = sin((i−1)θ)+sin((i+1)θ) = 2 cos θ sin(iθ) = (2 cos θ)vi , per i = 2, . . . , n−1.
Infine wn = sin((n − 1)θ) = sin(nθ) cos θ − cos(nθ) sin θ. Per cui v è autovettore
corrispondente a λ = 2 cos θ se anche per wn vale wn = (2 cos θ)vn . Imponendo
quest’ultima condizione si ha cos(nθ) sin θ + cos θ sin(nθ) = 0 che è verificata
se e solo se sin((n + 1)θ) = 0 cioè se e solo se θ = πj/(n + 1) con j intero.
Quindi λj = 2 cos(πj/(n + 1)) è autovalore per j = 1, . . . , n corrispondente
(j)
all’autovettore
p v (j) di componenti vi = sin(πij/(n + 1)), j = 1, . . . , n. Il
fattore 2/(n + 1) rende gli autovettori di norma euclidea unitaria.
(n)T
Analogamente si procede per la matrice tridn (1, 0, 1) + en en . In que-
sto caso cambia solo la condizione su wn che diventa sin((n − 1)θ) + sin(nθ) =
2 cos θ sin(nθ), cioè sin(nθ) cos θ −sin θ cos(nθ)+sin(nθ) = 2 cos θ sin(nθ) e quin-
di sin(nθ) = cos θ sin(nθ) + sin θ cos(nθ). Quest’ultima espressione può essere
equivalentemente scritta come sin(nθ) = sin((n + 1)θ). Poichè sin α = sin β se
α + β è multiplo dispari di π, si ottiene θ = (2k − 1)π/(2n + 1).
Segue che per la matrice tridiagonale tridn (−1, 2, −1) vale la relazione
iπ
S tridn (−1, 2, −1) S = diag(2 − 2c1 , . . . , 2 − 2cn ), ci = cos
n+1
15
Da questa proprietà segue che
π
kA−1 2 2
n k2 = h / min(2 − 2ci ) = h /(2 − 2 cos ).
i n+1
Tenendo presente che 1 − cos x = x2 /2 + O(x4 ) si ha
kA−1 2 2
n k2 = 1/π + O(h ).
Cioè kA−1
n k è limitata superiormente da una costante indipendente da n. Più
precisamente, arrestando lo sviluppo di cos x al quarto termine si ha 1 − cos x =
1 4
x2 /2 − 24 x cos ξ con 0 < ξ < x, e poiché 1 > cos x, ne segue
x2 x2
1 − cos x ≥ (1 − ).
2 12
Per cui, posto x = πh, vale anche
h2 1 h2 1 1 1 1 1
kA−1
n k2 = ≤ x2 x2
= ≤ 2 + h2 ,
2 1 − cos x 2 2 (1 − 12 )
π 2 1 − x122 π 6
1
dove per l’ultima maggiorazione si è usata la disuguaglianza 1−t ≤ 1 + 2t valida
se t ≤ 1/2.
Introduciamo ora la norma
n
1 X 1
kuk = √ ( u2i )1/2 = √ kuk2 ,
n + 1 i=1 n+1
e osserviamo che la norma matriciale indotta da questa norma coincide con la
norma 2. Inoltre è facile verificare che
Z 1
lim kuk = ( u(x)2 dx)1/2
n→∞ 0
1
Pn 2
R1
essendo n+1 i=1 ui l’approssimazione di 0 u(x)2 dx mediante la formula dei
rettangoli.
Dalla (9) segue che
√
n 1 1 1
kτ (n) k ≤ √ max |u(4) (x)| < max |u(4) (x)| = max |f 00 (x)|.
n + 1 12 12 12
Si ottiene allora da (15)
1 2
k(n) k < h max |f 00 (x)| + O(h4 ).
12π 2 x∈[0,1]
Cioè l’errore globale valutato nella norma k · k converge a zero come h2 . Questo
(n)
non implica che k√ k∞ converge a zero come h2 . Poiché vale kuk∞ ≤ kuk2 ,
si ha che kuk∞ ≤ n + 1kuk, quindi
1 3
k(n) k∞ < 2
h 2 max |f 00 (x)| + O(h4 ).
12π x∈[0,1]
16
4.4 Analisi in norma ∞
Per valutare la convergenza dello schema alle differenze in norma infinito è
sufficiente valutare la norma infinito della matrice A−1
n . Mostriamo due ana-
lisi diverse ma equivalenti: un’analisi puramente matriciale e una basata sulla
proprietà del massimo.
Osserviamo innanzitutto che la matrice −An può essere scritta come
2 1
−An = (I − Bn ), Bn = tridn (1, 0, 1).
h2 2
Ed essendo gli autovalori di tridn (1, 0, 1) compresi
P∞ tra i 0 e 2, la matrice Bn
ha raggioP spettrale ρ(B) < 1 per cui la serie i=0 B è convergente e vale
∞
−A−1n = i=0 Bn ≥ 0, dove la nonnegatività segue dal fatto che Bn ≥ 0. In
effetti, usando l’irriducibilità di Bn si può dimostrare che −A−1n > 0. Questa
proprietà discende anche dal fatto che la potenza k-esima di tridn (1, 0, 1) ha uni
sulla k-esima sopra e sotto diagonale per k = 1, 2, . . . , n − 1.
La non negatività di −A−1 n è fondamentale per dimostrare la stabilità del
metodo delle differenze finite.
17
essendo le componenti dei tre prodotti date rispettivamente da
1
(1 − 2 + 1) = 0
h2
1
((i − 1) − 2i + (i + 1)) = 0
h
1
[(i − 1)2 − 2i2 + (i + 1)2 ] = 1.
2
Si osservi che la proprietà (17) discende anche dal fatto che l’errore locale di
discretizzazione h2 τi è proporzionale alla derivata quarta della funzione calco-
lata in un opportuno punto ξi , essendo la derivata quarta di ciascuna delle tre
funzioni 1, x, 12 x2 nulla.
Ora denotiamo i tre vettori di Rn costituiti dalla “parte interna” dei tre
vettori f 1 , f 2 , f 3 in (16) con
e = (1, 1, . . . , 1)T ,
p = h(1, 2, 3, . . . , n)T , (18)
1
s = h2 (1, 4, 9, . . . , n2 )T ,
2
e denotiamo en = (0, . . . , 0, 1)T , e1 = (1, T
10, . . . , 0) , il1 primo
e l’ultimo vettore
n
della base canonica di R . Poiché Ln = h2 e1 | An | h2 en , dalla (17) si deduce
che
An e = −(n + 1)2 (e1 + en ),
An p = −(n + 1)2 en , (19)
1
An s = e − (n + 1)2 en ,
2
che dà An s = e + 12 An p. Da cui, moltiplicando per A−1
n si ricava
1
A−1
n e = s − p.
2
Dunque si ha
1 1
kA−1 −1
n k∞ = kAn ek∞ = max |(hi)2 − hi| ≤ (20)
2 i=1:n 8
dove l’uguaglianza vale se n è dispari per i = (n + 1)/2. Da cui si deduce che
1
kA−1
n k∞ ≤ .
8
Per la norma infinito dell’errore globale risulta allora dalla (15) che
1 2 (n) 1 2
k(n) k∞ ≤ h kτ k∞ ≤ h max |u(4) (x)|.
8 96 0≤x≤1
18
Osservazione 6 In questo approccio sono stati cruciali due proprietà: la pri-
ma è che −A−1 n ≥ 0 per cui kA−1 −1
n k∞ = kAn ek∞ ; la seconda è che An e
−1
−A−1 2
n (e1 + en ) = h e. (21)
Un approccio similare per dare limitazioni a k(n) k∞ può essere svolto me-
diante la proprietà del massimo. Lo vediamo nel prossimo paragrafo.
Dim. Sia Ln (v) ≥ 0 e si supponga per assurdo che vk sia il massimo dei vi
e sia vk > v0 , vn+1 . Allora dalla condizione Ln (v) ≥ 0 si ha
inoltre essendo vk ≥ vk−1 , vk+1 risulta vk ≥ 12 (vk−1 + vk+1 ) per cui dalla (22)
segue che vk = 12 (vk−1 + vk+1 ) e quindi vk = vk−1 = vk+1 . Ne segue che anche
vk+1 e vk−1 sono massimi. Ripetendo il ragionamento per vk−1 e per vk+1 si
conclude che vi = v0 = vn+1 per ogni i, che è assurdo. Analogamente si tratta
il caso in cui Ln (v) ≤ 0.
19
Basandoci sulla proprietà del massimo discreto soddisfatta da Ln dimostria-
mo ora la convergenza e la stabilità del metodo delle differenze finite per il
problema modello. Successivamente diamo il risultato in forma più generale.
(n)
Ricordiamo che l’errore globale (n) = (i )i=1:n è tale che An (n) = h2 τ (n) .
(n) (n) (n)
(n) = (b
Inoltre, definendo b i )i=0:n+1 , dove b
i = i per i = 1, . . . , n, e
(n) (n) (n)
0 = n+1 = 0, risulta An (n) = Ln (b
b ).
(n)
Teorema 9 Per l’errore globale (n) = (i )i=1:n vale
1 2 (n)
k(n) k∞ ≤ h kτ k∞
2
Dim. Si è già osservato che la funzione w(x) = 21 x2 è tale che L[w] = 1 e
che questa proprietà è condivisa dalla controparte discreta w = (wi )i=0:n+1 ,
(n) ) =
wi = w(xi ) = 12 (hi)2 . Si vede allora allora che, poiché per la (14) è Ln (b
An ((n) ) = h2 τ (n) , si ha
(n) + h2 kτ (n) k∞ w,
Quindi, per la proprietà del massimo applicata ai vettori ±b
risulta
(n) 1 2 (n)
max(±i + h2 kτ (n) k∞ wi ) ≤ h2 kτ (n) k∞ max(w0 , wn+1 ) = h kτ k∞
i 2
da cui
(n) (n) 1 2 (n)
±i ≤ ±i + h2 kτ (n) k∞ wi ≤ h kτ k∞ , i = 1, . . . , n.
2
(n)
quindi |i | ≤ 21 kτ (n) k∞ h2 .
−ak bk ck bk ck
vk ≤ ( vk−1 + vk+1 ) ≤ vk−1 + vk+1 ,
bk + ck −ak −ak bk + ck bk + ck
20
cioè vk è minore o uguale alla media pesata tra vk−1 e vk+1 con pesi bkb+c k
k
e
ck
bk +ck . D’altra parte, poiché v k è massimo, risulta v k ≥ v , v
k−1 k+1 e quindi v k
è maggiore o uguale alla media pesata di vk+1 e vk−1 , quindi deve essere vk
uguale a vk−1 e a vk+1 per cui induttivamente anche i valori estremi sarebbero
un massimo.
21
a = sparse(eye(n));
d = sparse(ones(n-1,1));
b = diag(d,1);
c = diag(d,-1);
22
Listing 2: Risoluzione del problema modello con condizioni di Dirichlet mediante
differenze finite. Per risolvere il sistema la function usa il risolutore di Matlab
ottenuto col comando backslash \
function [v, x] = problema_modello1(f,alfa,beta)
% function [v, x] = problema_modello1(f,alfa,beta)
% risolve l’equazione differenziale
% u’’(x)=f(x) su [0,1], con u(0)=alfa, u(1)=beta
% col metodo delle differenze finite
% Input: f e’ il vettore dei valori del termine noto nei punti x(i)=i*h
% alfa e beta sono le condizioni al bordo
% Output: v e’ l’approssimazione della soluzione ottenuta
% x e’ il vettore con i punti del reticolo di discretizzazione
% usa il risolutore di Matlab
n = length(f);
h = 1/(n+1);
d = sparse(ones(n-1,1));
A = speye(n);
A = diag(d,1)+diag(d,-1)-2*A;
f(1) = f(1)-alfa/h^2;
f(n) = f(n)-beta/h^2;
v = h^2*(A\f);
x = [0:h:1]’;
v = [alfa; v; beta];
end
23
Figura 6: Soluzione del problema modello con f (x) = 1
24
Listing 3: Risoluzione del problema modello con condizioni di Dirichlet mediante
differenze finite. Per risolvere il sistema la function usa l’eliminazione gaussiana
function [v, x] = problema_modello2(f,alfa,beta)
% function [v, x] = problema_modello1(f,alfa,beta)
% risolve l’equazione differenziale
% u’’(x)=f(x) su [0,1], con u(0)=alfa, u(1)=beta
% col metodo delle differenze finite
% Input: f e’ il vettore dei valori del termine noto nei punti x(i)=i*h
% alfa e beta sono le condizioni al bordo
% Output: v e’ l’approssimazione della soluzione ottenuta
% x e’ il vettore con i punti del reticolo di discretizzazione
% usa l’eliminazione gaussiana per risolvere il sistema tridiagonale
n = length(f);
h = 1/(n+1);
a = 2*ones(n,1);
f(1) = f(1)-alfa/h^2;
f(n) = f(n)-beta/h^2;
for i=1:n-1
a(i+1) = 2-1/a(i);
f(i+1) = f(i+1)+f(i)/a(i);
end
v = zeros(n,1);
v(n) = f(n)/a(n);
for i=n-1:-1:1
v(i) = (f(i)+v(i+1))/a(i);
end
v = -v*h^2;
x = [0:h:1]’;
v = [alfa; v; beta];
end
25
si ottengono i valori
n = 100
Elapsed time is 0.000401 seconds.
n = 1000
Elapsed time is 0.000487 seconds.
n = 10000
Elapsed time is 0.001696 seconds.
n = 100000
Elapsed time is 0.016155 seconds.
n = 1000000
Elapsed time is 0.114713 seconds.
n = 10000000
Elapsed time is 1.007154 seconds.
Si può osservare che la crescita del tempo di calcolo è lineare con n. In-
fatti moltiplicando per 10 la dimensione, il tempo di calcolo viene moltiplicato
all’incirca per 10.
Un’altra sperimentazione interessante è verificare che l’errore di approssima-
zione decresce come h2 se f (x) è di classe C 2 come mostrato nella teoria. Per
questo consideriamo un problema la cui soluzione è nota. Ad esempio sceglia-
mo u(x) = sin2 (πx) per cui u(0) = u(1) = 0 e u00 (x) = 2π 2 (1 − 2 sin(πx)2 ).
Scegliamo allora
x = [h:h:1-h]’;
f = 2*pi^2*(1-2*sin(pi*x).^2);
e valutiamo gli errori, rispetto alla soluzione nota u(x) = sin2 (πx), della soluzio-
ne v ottenuta applicando la function problema modello1. Questa valutazione
26
Listing 4: Risoluzione del problema modello con condizioni di Dirichlet mediante
differenze finite. Controllo degli errori.
function [err1,err2] = check_error(n)
% function [err1,err2] = check_error(n)
% calcola gli errori err1, err2 in norma infinito e in norma 2
% della soluzione ottenuta col metodo delle differenze finite
% applicato all’equazione differenziale
% u’’(x)=f su [0,1], con u(0)=0, u(1)=0
% usando una discretizzazione con n punti interni
% con f=2*pi^2*(1-2*sin(pi*x).^2) la soluzione e’ u(x)=sin(pi*x)
h = 1/(n+1);
x = [h:h:1-h]’;
f = 2*pi^2*(1-2*sin(pi*x).^2);
u = sin(pi*x).^2;
v = problema_modello1(f,0,0);
err1 = norm(v(2:end-1)-u,inf);
err2 = norm(v(2:end-1)-u,2)/sqrt(n+1);
end
√
n k(n) k∞ k(n) k2 / n + 1
100 3.2e-4 2.0e-4
1000 3.3e-6 2.0e-6
10000 3.3e-8 2.0e-8
100000 1.8e-10 1.0e-10
1000000 5.5e-7 3.7 e-7
10000000 1.7e-6 1.1 e-6
viene svolta dalla function check error, riportata nel Listing 4, che valuta sia
l’errore in norma 2 che in norma infinito.
Lanciando questa funzione con diversi valori di n si hanno i risultati riportati
nella tabella 1
Si osserva che moltiplicando n per 10 l’errore sia in norma 2 che in norma
infinito si riduce all’incirca di un fattore 100 finché n non supera il valore di
10000. Per valori maggiori di n l’approssimazione sembra deteriorarsi. Il mo-
tivo di questo fatto è dovuto al numero di condizionamento della matrice del
sistema che in norma 2 vale λmax /λmin dove λmax e λmin sono rispettivamente
il massimo e il minimo autovalore di tridn (−1, 2, −1). Per il teorema 5 il rap-
porto λmax /λmin vale (2 + 2 cos(π/(n + 1))/(2 − 2 cos(π/(n + 1)) che è all’incirca
(4/π 2 )(n + 1)2 . Quindi al crescere di n aumenta il numero di condizionamen-
to della matrice e questo comporta amplificazione degli errori. Non possiamo
27
quindi spingere troppo avanti il valore di n.
Un’altra considerazione è la seguente: la limitazione superiore data all’erro-
re globale in norma infinito è h2 max |u(4) (x)|/96 che nel nostro caso, essendo
|u(4) (x)| ≤ 8π 4 fornisce la limitazione k(n) k∞ ≤ 8.12h2 in linea con i valori
riportati in tabella.
È interessante vedere cosa succede nel caso in cui la funzione f (x) non sia
sufficientemente regolare in modo che la soluzione u(x) non sia di classe C 4 .
Possiamo per questa sperimentazione prendere una funzione f (x) discontinua,
ad esempio la funzione che vale 1 nella prima metà dell’intervallo e vale zero
nella seconda e confrontare le approssimazioni ottenute con vari valori di n. Si
può verificare che la soluzione in questo caso è data da
( 1 2 3 1
2 x − 8 x per x ∈ [0, 2 ]
u(x) =
1
8 (x − 1) per x ∈ [ 21 , 1].
n1=1000-1; n2=10000-1;
h = 1/(n1+1); % risolvo a dimensione n1
x = [h:h:1-h]’; f = x*0; f(1:(n1+1)/2) = 1;
v1 = problema_modello1(f,0,0); v1 = v1(2:end-1);
u1 = v1;
u1(1:(n1+1)/2) = 0.5*x(1:(n1+1)/2).^2-(3/8)*x(1:(n1+1)/2);
u1((n1+1)/2+1:end)=(-1/8)*(1-x((n1+1)/2+1:end));
h = 1/(n2+1); % risolvo a dimensione n2
x = [h:h:1-h]’;
f = x*0; f(1:(n2+1)/2) = 1;
v2 = problema_modello1(f,0,0); v2 = v2(2:end-1);
u2 = v2;
u2(1:(n2+1)/2) = 0.5*x(1:(n2+1)/2).^2-(3/8)*x(1:(n2+1)/2);
u2((n2+1)/2+1:end)=(-1/8)*(1-x((n2+1)/2+1:end));
e1 = u1-v1; e2 =u2-v2;
fprintf(’n = %d, err_inf = %e, err_2 = %e \n’,n1+1, ...
norm(e1,inf), norm(e1,2)/sqrt(n1+1));
fprintf(’n = %d, err_inf = %e, err_2 = %e \n’,n2+1, ...
norm(e2,inf), norm(e2,2)/sqrt(n2+1));
plot(x,u2); figure; plot(x,e2)
28
Figura 8: Soluzione calcolata del problema u00 (x) = f (x) con f (x) discontinua
Figura 9: Errore globale nella risoluzione del problema u00 (x) = f (x) con f (x)
discontinua
29
dove |σ0 |, |σn+1 | ≤ 1
6 max |u000 (x)|. Affiancando le precedenti equazioni alla
condizione
1
(ui−1 − 2ui + ui+1 ) = fi + h2 τi , i = 0, . . . , n + 1,
h2
si ottiene il sistema
h/2 0 −h/2 u−1 a σ0
−1 2 −1 u0 f0 τ0
1 . .. ..
..
..
..
− 2 . = − h2
h . . .
. . .
−1 2 −1 un+1 fn+1 τn+1
h/2 0 −h/2 un+2 b σn+1
Si osservi che nel termine noto compare oltre all’errore locale di discretizzazione
di L, anche l’errore locale dovuto alla discretizzazione delle condizioni al con-
torno di Neumann. Semplifichiamo il sistema precedente effettuando una com-
binazione lineare di righe. Più precisamente, moltiplicando la prima equazione
per 2/h, addizionando con la seconda e dividendo per 2, si ottiene
1 1 1
2
(−u0 + u1 ) = f0 + a/h − h2 τ0 − hσ0
h 2 2
e analogamente moltiplicando l’ultima equazione per −2/h, addizionando con
la penultima e dividendo per 2, si ottiene
1 1 1
(−un+1 + un ) = fn+1 + b/h − h2 τn+1 + hσn+1
h2 2 2
La versione discreta del problema di Neumann diventa allora
1 −1 u0
1
2 f0 + a/h
−1 2 . . . u1 f1
1 .
.
− 2 .. .. .. . = .. − h2 τ (n)
h . . . .
un fn
−1 2 −1
1
−1 1 u n+1 f
2 n+1 − b/h
σ0 + h τ20
0
− h
.
..
0
τn+1
−σn+1 + h 2
(n) (n)
dove τ (n) = (τ0 , . . . , τn+1 )T . Stavolta nel termine di errore compare, oltre
all’errore locale di discretizzazione dell’operatore L[u] anche l’errore dovuto alla
discretizzazione della condizione di Neumann.
Si osservi che la matrice del sistema è singolare. Infatti il vettore e di tutte
componenti uguali a 1 sta nel nucleo della matrice. La cosa non sorprende poiché
30
il problema differenziale, se ha una soluzione, ne ha infinite; infatti le soluzioni
differiscono per una costante additiva, cosı̀ come accade per il problema discreto.
Supponiamo esista una soluzione e fissiamo la costante additiva imponendo
che il valore di u(x) sia assegnato in un estremo. Possiamo quindi ignorare una
delle due condizioni di Neumann visto che che dipende linearmente dalle altre
equazioni. Se imponiamo la condizione u(0) = c e rimuoviamo la condizione di
Neumann nell’estremo destro otteniamo il sistema
−1 1 a 1
2 f0 + h + h2 c
2 −1 u1 1
f1 − h2 c
.
1 . . .
. = f
− 2 −1 2 . 2
h
. .
un .
.
.. . . −1 .
un+1
−1 2 −1 fn
τ1 −σ0 − hτ0 /2
2
h τ2
0
− .. + h
..
2 .
.
τn+1 0
Tn v = b (24)
Si osservi ancora che lo schema alle differenze finite (24) è esplicito cioè la matrice
del sistema è in forma triangolare per cui i valori vi possono essere espressi in
forma esplicita in funzione dei valori vj per j < i.
Per dimostrare la stabilità di questo schema basta dimostrare che kTn−1 k∞
è limitata superiormente da una costante. Posto
0
1 0
Z=
. .. . ..
O 1 0
31
1 1
si osserva che Tn = h2 (I − 2Z + Z 2 ) = h2 (I − Z)2 . Per cui
2
1
1 1
Tn−1 = h2 (I − Z)−2 = h2
.. . . . .
. . .
1 ... 1 1
cioè
1
2 1
Tn−1 2
=h
3 2 1
(25)
.. .. .. ..
. . . .
n+1 n ... 2 1
per cui
1 (n + 2)(n + 1) n+2
kTn−1 k∞ = h2 (1 + 2 + · · · + (n + 1)) = 2
≤ < 1,
(n + 1) 2 2(n + 1)
inoltre (n) = 12 h2 Tn−1 τ (n) + hTn−1 (σ0 − hτ0 /2)e1 . Quindi, poiché
σ0 x1
0 x2
Tn−1 h . = h2 (σ0 − hτ0 /2) . , xi = ih,
. . . .
0 xn+1
l’errore globale rimane di ordine O(h2 ).
32
Quindi la relazione tra errore globale ed errore locale diventa
1
− Kn (n) = h(σ0 − hτ0 /2)e1 + h2 τ (n)
h2
da cui
1 1
(n) = (− 2
Kn )−1 h(σ0 − hτ0 /2)e1 + (− 2 Kn )−1 h2 τ (n) (26)
h h
dove abbiamo indicato con e1 = (1, 0, . . . , 0)T il primo versore della base ca-
nonica di Rn+1 . Per i teoremi di Gerschgorin la matrice Kn è non singolare,
inoltre per il teorema 5 l’autovalore più piccolo di h12 Kn è limitato inferiormen-
te da una costante indipendente da n per cui la norma k( h12 Kn )−1 k2 è limitata
superiormente da una costante. Questo dimostra la stabilità in norma 2.
Per la stabilità in norma infinito si possono seguire diversi approcci.
An e = −(n + 1)2 en
An p = (n + 1)e1 − (n + 1)2 en (27)
1 1
An s = e − e1 − ( (n + 1)2 − 1)en
2 2
Da queste espressioni si ricava
1 1 1 1
An s = e + (1 + )An e − An p.
2 n+1 2n+1
Moltiplicando per A−1 −1
n si ottiene un’espressione di y = An e e si verifica che il
massimo di y è preso sulla prima componente e vale y1 = 12 + h2 .
Si deduce quindi che kA−1 1 h
n k∞ = 2 + 2 . Quindi la parte di errore dovuta alla
discretizzazione della derivata seconda è un O(h2 ). La componente di errore
dovuta alla discretizzazione della derivata prima è hσ0 kA−1 n e1 k∞ = hσ0 khp −
hek∞ che è ancora un O(h2 ).
Una analisi analoga ma forse più semplice può essere fatta sostituendo al
2
vettore p il vettore p s = h2 ((n +
e = h(n + 1, n, . . . , 1) e al vettore s il vettore e
e = − h1 e1 , An e
1)2 , n2 , . . . , 1). Infatti, essendo An p s = e − (n + 23 )e1 si ricava
−1 3 h2
An e = e s − (n + 2 )he p che ha elementi 2 (n + 1 − i)2 − (n + 23 )h2 (n + 1 − i).
La componente più grande in valore assoluto si ottiene per i = 0 e vale 12 + h2 .
Da cui si ricava kA−1 −1
n k∞ = kAn ek∞ = 2 + 2 .
1 h
33
Osservazione 14 Anche in questo caso si può vedere che una perturbazione
dell’ordine di δ nell’ultima componente del termine noto produce una variazione
dell’ordine di δh2 nelle componenti della soluzione del sistema lineare. Infatti
dalla prima delle (27) si ricava che A−1 2
n en = −h e. Inoltre una perturbazione
dell’ordine di δ nella prima componente del termine noto produce una variazione
della soluzione dell’ordine di δh. Infatti dalla seconda delle (27) si ha A−1
n e1 =
hp + (n + 1)2 A−1n e n = h(p + e).
Per cui Kn−1 = L−T L−1 , L−1 è la matrice triangolare inferiore con tutti elementi
uguali a 1, quindi kL−1 k∞ = kL−T k∞ = n + 1. Si deduce allora che
1
k( Kn )−1 k∞ ≤ h2 kL−1 k∞ kL−T k∞ = 1.
h2
Inoltre, per quanto riguarda la parte di errore globale dato dalla condizione di
Neuman, si ha
1 n+1
1 1 n
( 2 Kn )−1 hσ0 e1 = h3 σ0 L−T L−1 e1 = h3 σ0 L−T . = h3 σ0
..
h ..
.
1 1
Da cui
1
k( Kn )−1 )hσ0 e1 k = h3 |σ0 |(n + 1) = h2 |σ0 |.
h2
A = B + UV T
S = Im + V T B −1 U
34
è non singolare e vale la formula di Sherman-Woodbury-Morrison per l’inversa
di A
A−1 = B −1 − B −1 U S −1 V T B −1 .
Per una analisi in norma infinito si usa l’espressione di Kn−1 in termini del-
l’inversa di H = tridn+1 (−1, 2 − 1) data dalla formula di Sherman-Woodbury-
Morrison (SWM). Infatti, poiché Kn = H − e1 eT1 , si ha
1
Kn−1 = H −1 + H −1 e1 eT1 H −1 . (28)
1 − eT1 H −1 e1
Ora esaminiamo separatamente le due quantità (− h12 Kn )−1 hσ0 e1 e (− h12 Kn )−1 h2 τ (n)
che compongono l’errore globale (n) in (26).
Per la prima, usando la formula di SWM (28), si ha
1 eT1 H −1 e1
(− Kn )−1 hσ0 e1 = − h3 σ0 Kn−1 e1 = −h3 σ0 (1 + )H −1 e1
h2 1 − eT1 H −1 e1
1
= − h3 σ0 T
H −1 e1 .
1 − e1 H e1 H −1 e1
−1
Essendo
1
H −1 e1 = (n + 1, n, . . . , 2, 1)T , (29)
n+2
risulta
n+1
eT1 H −1 e1 = , (30)
n+2
da cui (− h12 Kn )−1 hσ0 H −1 e1 = −h3 σ0 (n + 2)H −1 e1 = −h2 σ0 n+1
n+2
e1 , cioè
1 n+2
k(− 2
Kn )−1 hσ0 e1 k∞ ≤ |σ0 |h2 .
h n+1
Per quanto riguarda la seconda quantità vale
1 1
k(− 2
Kn )−1 h2 τ (n) k∞ ≤ k(− 2 Kn )−1 k∞ h2 kτ (n) k∞ .
h h
Inoltre una analisi in norma infinito ci fornisce
1 1 1 1 5
k(− Kn )−1 k∞ = h2 kKn−1 k∞ ≤ h2 (kH −1 k∞ + (n + 1)2 ) ≤ + = ,
h2 2 8 2 8
dove abbiamo usato (28), (29), (30) e (20). Per cui si ha stabilità del metodo,
inoltre anche il secondo addendo è limitato superiormente da una costante per
h2 . Questo dimostra la convergenza dello schema alle differenze con ordine h2 .
35
Listing 5: Risoluzione del problema modello con condizioni al contorno miste
mediante differenze finite
function [v,x] = miste(f,alfa,beta)
% [v,x] = miste(f,alfa,beta)
% risolve l’equazione u’’(x)=f(x), u’(0)=alfa, u(1)=beta
% col metodo delle differenze finite sulla griglia x_i=ih, h=1/(n+1)
% f=(f_1,f_2,...,f_n), f_i=f(x_i),i=1,...,n
% v=(v_0,...,v_{n+1}) approssimazione della funzione u in x_0,...,x_{n+1}
% x=(x_0,...,x_{n+1})
n = length(f);
h = 1/(n+1);
d = sparse(ones(n-1,1));
A = speye(n);
A = diag(d,1)+diag(d,-1)-2*A;
A(1,1) = -1;
f(1) = f(1)+alfa/h;
f(n) = f(n)-beta/h^2;
w = h^2*(A\f);
v = [w;beta];
x = [1:n+1]/(n+1);
end
36
4.11 Implementazione Matlab
La function riportata nel Listing 5 fornisce una implementazione per il metodo
delle differenze finite applicato al problema u00 (x) = f (x) con le condizioni miste
u0 (0) = α, u(1) = β.
La figura 10 riporta il grafico della soluzione calcolata con α = 0, β = 0.2 e
con f (x) = 1 per x < 1/2, f (x) = 0 per x ≥ 1/2.
Si noti la tangente orizzontale nell’estremo sinistro data dalla condizione
u0 (0) = 0.
37
con ξˆ ∈ (x, x + h2 ), η̂ ∈ (x − h2 , x). Componendo le due relazioni cosı̀ ottenute si
ottiene
0 0 1 h u(x + h) − u(x) h u(x) − u(x − h)
(c(x)u (x)) = c(x + ) − c(x − )
h 2 h 2 h (31)
+ h2 τ (x)
dove
1 h h h h 1 000 000
τ (x) = (c(x + )σ(x + ) − c(x − )σ(x − )) + (u (ξ) + u (η))
h 2 2 2 2 48
per cui, essendo c(x)σ(x) derivabile con continuità ne segue che |τ (x)| è limitato
superiormente da una costante indipendente da n.
Quindi, applicando la formula (31) nei punti xi = ih e denotando ci =
c(xi + h/2), si arriva alla discretizzazione
c0 −(c0 + c1 ) c1
1 c1 −(c1 + c2 ) c2
Ln = 2
h . .. . .. . ..
cn−1 −(cn−1 + cn ) cn
−(c0 + c1 ) c1
c1 −(c1 + c2 ) c2
1 .. .. ..
An = 2
h . . .
cn−2 −(cn−2 + cn−1 ) cn−1
cn−1 −(cn−1 + cn )
38
1
Per cui, denotando con An = h2 tridn (ci , −(ci + ci+1 ), ci+1 ) la parte centrale di
Ln e s = (wi )i=1,n , si ha
1
An s = e − cn wn+1 en . (32)
h2
Pi 1
In modo analogo si vede che, posto v = (vi )i=0,n+1 , v0 = 0, vi = h2 j=1 cj−1
per i = 1, . . . , n + 1, vale vi+1 − vi = h2 /ci per i = 0, . . . , n, da cui
1
(Ln v)i = (ci−1 (vi−1 − vi ) + ci (vi+1 − vi )) = 0.
h2
Quindi denotando p la parte centrale di v si ha
1
An p = − cn vn+1 en . (33)
h2
Combinando (32) e (33) si ottiene
wn+1
A−1
n e=s− p.
vn+1
Pn+1 Pn+1
Infine, posto γ = wvn+1
n+1
, si ha γ = ( j=1 j/cj−1 )/( j=1 1/cj−1 ) che è la media
pesata degli interi da 1 a n + 1 per cui γ < n + 1. Quindi prendendo le norme,
si ottiene
i
X j+γ 2
kA−1 2
n ek∞ = max |wi − vi γ| ≤ h max ≤ .
i i
j=1
cj−1 minx c(x)
39
5.3 Analisi mediante fattorizzazione LU
Un modo diverso di studiare kA−1 n k∞ si basa su un’analisi matriciale.
Si verifica facilmente che −An = Bn + h12 cn en eTn , dove
c0 + c1 −c1
−c1 c1 + c2 −c2
1 .. .. ..
Bn = 2
h . . .
−cn−2 cn−2 + cn−1 −cn−1
−cn−1 cn−1
Inoltre, una verifica diretta mostra che Bn si può fattorizzare come
1 −1
c0 1
.. c1 −1 1
1 1 .
Bn = .
h2
..
.. .. ..
. . .
.
−1
1 cn−1 −1 1
(34)
Si osserva infine che, poiché ci > 0, −An e Bn sono M-matrici non singolari
essendo dominanti diagonali e irriducibili. Quindi le loro inverse hanno elementi
positivi. Inoltre, dalla formula di Sherman-Woodbury-Morrison e dalle proprietà
delle M-matrici segue che 0 ≤ −A−1 n ≤ Bn−1 . Quindi per la stabilità basta
dimostrare che kBn k∞ è limitata superiormente da una costante indipendente
da n.
Poiché −1
1 −1 1 1 ... 1
.. .. .. . .
. . . ..
. . =
1 −1 1 1
1 1
2
n 1
si ha che kBn k∞ ≤ (n+1)2 min c < 1/ min ci che è limitato superiormente da una
i
costante indipendente da n.
40
Figura 11: Soluzione del problema (p(x)u0 (x))0 = f (x), u(0) = u(1) = 0 con
f (x) = 1 e p(x) = x + 1/100
h2
vale kBn−1 k2 ≤ min ci kK
−1
k2 dove
2 −1
.. ..
−1 . .
K = tridn (0, 1, −1)tridn (−1, 1, 0) =
..
. 2 −1
−1 1
2π
Per il teorema 5 gli autovalori della matrice K sono 2 − 2 cos(j n+1/2 ), j =
2π
1, . . . , n e corrispondono agli autovettori v j = (sin(ij n+1/2 )). Il più piccolo
2π 4π 2
autovalore è 2 − 2 cos( n+1/2 )= (n+1/2)2 + O(h4 ), per cui
(n + 1/2)2 4 2 4
kK −1 k2 = 2
< 2 + O(h2 ).
(n + 1) π π
41
Listing 6: Risoluzione del problema di Sturm-Liouville
42
6 Il problema agli autovalori
Si consideri il “problema modello”
in cui occorre determinare gli scalari λ e le funzioni u(x) : [0, 1] → R, u(x) non
identicamente nulle, che verifichino (35). Gli scalari λ sono chiamati autovalori
e le corrispondenti funzioni u(x) autofunzioni. In questo caso speciale esiste
una infinità numerabile di soluzioni date da ui (x) = sin(πix) e λi = i2 π 2 ,
i = 1, 2, . . ., per cui il problema della loro approssimazione di fatto non si pone.
Usiamo però questo problema modello come paradigma per descrivere il suo
trattamento numerico.
Discretizzando l’intervallo [0, 1] con i punti xi = ih, i = 0, . . . , n + 1, h =
1/(n + 1), e utilizzando l’operatore discreto Ln si arriva alla seguente relazione
2 −1
..
1 −1 2 . u = λu + h2 τ (n)
(36)
2
h .. ..
. . −1
−1 2
(n) (n) 1
dove τ (n) = (τi ) è tale che |τi | ≤ 12 max |u(4) (x)|, valida nel caso in cui u(x)
sia di classe C 4 [0, 1].
Si considera allora il problema
2 −1
..
1 −1 2 .
v = µv (37)
h2 .. ..
. . −1
−1 2
|λ − µ| ≤ kF k · kSk · kS −1 k
43
Dim. Sia Bu = λu per cui (A − λI)u = −F u. Se λ è autovalore di A allora la
tesi è vera. Se λ non è autovalore di A allora A − λI è non singolare e possiamo
scrivere
u = −(A − λI)−1 F u.
Questo implica che k(A − λI)−1 F k ≥ 1 da cui, poiché (A − λI)−1 = S(D −
λI)−1 S −1 , si ha
1 ≤ kF k · kSk · kS −1 k · k(D − λI)−1 k.
Poiché k · k è una norma assoluta, si ha che k(D − λI)−1 k = 1/|µ − λ| dove µ è
un autovalore di A che ha distanza minima da λ.
|λ − µ| ≤ kF k2
Per quanto riguarda lo studio della distanza tra l’autovettore v della matrice
A e l’autovettore vettore u della matrice B premettiamo la definizione di de-
composizione ai valori singolari (SVD) è la definizione di inversa generalizzata.
Vale il seguente
44
Teorema 19 Dato il sistema Ax = b con A ∈ Rm×n , b ∈ Rm , il vettore x∗ =
A+ b è il vettore di minima norma 2 che minimizza kAx − bk2 .
Dim. Vale
(A + F − λI)u = 0
Av − µv = 0
Sottraendo entrambi i membri delle precedenti equazioni si ottiene
Da cui
(A − µI)(u − v) = −F u + (λ − µ)u.
Quindi F u+(λ−µ)u sta nell’immagine di A−µI e per il teorema 19 la soluzione
u − v di minima norma può essere scritta come
inoltre vale
ku − vk ≤ k(A − µI)+ k(kF k + |λ − µ|)kuk.
Da cui la prima parte della tesi. Se A è simmetrica, con autovalori αi , si ha
kSk2 · kS −1 k2 = 1, per cui la tesi discende dall’osservazione 18; infatti i valori
singolari di (A − µI)+ , per definizione di inversa generalizzata, sono 1/(αi − µ)
se αi − µ 6= 0 e 0 altrimenti.
Siamo pronti per confrontare le soluzioni del problema continuo (35) con
quelle del problema discreto (37). Infatti possiamo riscrivere (36) come
(A + F )u = λu
45
si ha
kτ k
|λ − µ| ≤ h2 . (38)
kuk
1
Poiché τi = 24 (u(4) (ξi ) + u(4) (ηi )) con ξ ∈ (xi , xi+1 ) e ηi ∈ (xi−1 , xi ), se
1 1 1
M = maxx∈[0,1] |u(4) (x)|, allora √n+1 kτ (n) k2 ≤ 12 M , inoltre limn √n+1 kuk2 =
1/2
τ k2 è limitato superiormente da una
R
1
0
u(x)2 dx per cui il quoziente kku k2
costante θ.
Inoltre, poiché gli autovalori di A sono αi = (n + 1)2 (2 − 2 cos πi/(n + 1)) =
i π + O(h2 ), se µ = αj allora 1/ mini6=j |αi − µ| = 1/((2j − 1)π 2 ) + O(h2 ) dove
2 2
kv − uk2 1
≤ γh2 θ
kuk2 (j − 1/2)π 2
per una costante γ > 0. Questo dimostra la convergenza della soluzione del
problema discreto alla soluzione del problema continuo.
7 Il caso multidimensionale
Si consideri il problema di Poisson con condizioni al contorno di Dirichlet su un
dominio quadrato
∂2u ∂2u
+ 2 = f (x, y), (x, y) ∈ Ω = (0, 1) × (0, 1)
∂x2 ∂y (39)
u(x, y) = g(x, y), (x, y) ∈ ∂Ω
46
Listing 7: mediante differenze finite.]Soluzione del problema agli autovalori
(c(x)u0 (x))0 = λu(x) sull’intervallo [0,1] mediante differenze finite.
function [v,lambda]=eig_generale(c)
% [v,lambda]=eig_generale(c)
% risolve il problema agli autovalori (u’(x)c(x))’=lambda u(x), u(0)=u(1)
=0
% col metodo delle differenze finite sulla griglia x_i=ih, h=1/(n+1)
% v matrice le cui colonne approssimano le autofunzioni
% lambda vettore degli autovalori corrispondenti
n = length(c)-1;
h = 1/(n+1);
d0 = sparse(c(1:n)+c(2:n+1));
d1 = sparse(c(2:n));
A = -diag(d0)+diag(d1,1)+diag(d1,-1);
A = A*(1/h^2);
[v,ei] = eig(A);
v = [zeros(1,n);v;zeros(1,n)];
lambda = diag(ei);
end
Figura 12: Autovalori del problema (c(x)u0 (x))0 = λu(x), su [0,1] con u(0) =
u(1) = 0 con e c(x) = x + 1/100
47
Figura 13: Prime 6 autofunzioni di L[x] = (c(x)u0 (x))0 su [0, 1], con c(x) =
x + 1/100, calcolate mediante differenze finite.
48
j y
(xi , y)j
1
Lm,n (U (m,n) ) = (ui−1,j + ui+1,j + ui,j−1 + ui,j+1 − 4ui,j )i=1:m,j=1:n
h2
dove abbiamo indicato U (m,n) = (ui,j )i=0:m+1,j=0:n+1 .
49
Un modo per descrivere sinteticamente questa formula, nota come formula
dei cinque punti, è quello di usare la matrice 3 × 3 dei coefficienti di ui+r,j+s
per r, s = −1, 0, 1 detta stencil
0 −1 0
1
− 2 −1 4 −1
h
0 −1 0
dove abbiamo posto Am = − h12 tridm (−1, 2, −1), An = − h12 tridn (−1, 2, −1),
x y
U = (ui,j )i=1,m, j=1,n , B = F + h12 (g :0 eT1 + g :n+1 eTn ) + h12 (e1 g T0: + em g Tm+1: ),
x y
F = (fi,j )i=1:m,j=1:n , fi,j = f (xi , yj ) e abbiamo denotato g :0 = (g(xi , 0))i=1:m ,
g :1 = (g(xi , 1))i=1:m , g 0: = (g(0, yi ))i=1:n , g 1: = (g(1, yi ))i=1:n .
Rimuovendo la componente dell’errore locale si ottiene il sistema
la cui incognita è V .
È possibile scrivere tale sistema in forma standard Am,n u = b se ordiniamo
le componenti incognite (ui,j ) come un vettore u = u(m,n) di mn componenti.
Per questo utilizziamo l’operatore vec definito nel seguente modo
Definizione 21 Data la matrice A di dimensione m × n, il vettore v = vec(A)
è formato dagli elementi di A ordinati per colonne, cioè v(j−1)m+i = ai,j .
50
Il vettore vec(A) è naturale vederlo come un vettore “a blocchi” dove il
generico blocco in posizione j ha per elementi gli elementi della colonna j-esima
di A. Ad esempio, se
a11 a12 a13
A=
a21 a22 a23
allora
a11
a21
a12
a=
a22
a13
a23
Introduciamo il prodotto di Kronecker. Date la matrice A di dimensione
m × n e la matrice B di dimensione p × q, definiamo la matrice A ⊗ B come
la matrice di dimensioni mp × nq che partizionata in blocchi p × q ha elementi
(ai,j B). In particolare,
Im ⊗ B = diagm (B, B, . . . , B)
mentre
a11 I ... a1,n I
.. ..
A ⊗ Ip = . .
.
am1 I ... am,n I
Formalmente se H = A ⊗ B, allora h(i−1)m+r,(j−1)n+s = ai,j br,s , per i =
1, . . . , m, j = 1, . . . , n, r = 1, . . . , p, s = 1, . . . , q.
Si riportano le principali proprietà del prodotto di Kronecker la cui dimo-
strazione si lascia come esercizio:
vec(AB) = (I ⊗ A)vec(B)
vec(AB) = (B T ⊗ I)vec(A)
(A ⊗ C)(B ⊗ D) = (AB) ⊗ (CD)
det(Am ⊗ Bn ) = (det Am )n (det Bn )m
(45)
(Am ⊗ Bn )−1 = A−1 −1
m ⊗ Bn
51
Denotiamo con Am,n = In ⊗ Am + An ⊗ Im . È facile vedere che la ma-
trice Am,n ha una struttura tridiagonale a blocchi con blocchi tridiagonali.
Precisamente, supponendo per semplicità m = n per cui hx = hy , vale
1
Am,n = − tridn (−Im , Hm , −Im ), Hm = tridm (−1, 4, −1).
h2
Se vi,j fosse un punto di massimo, sarebbe maggiore o uguale ai valori nei punti
contigui e quindi alla loro media, cioè
Le due relazioni danno vi,j = vi−1,j = vi1,j = vi,j−1 = vi,j+1 , cioè i valori di V
nei punti contigui sono anch’essi di massimo. Ripetendo il ragionamento per i
punti contigui si conclude che il massimo è preso sul bordo.
Ci basta ora far vedere che esiste una matrice W = (wi,j )i=0:m+1,j=0:n+1 ≥ 0
tale che Lm,n (W ) ha tutte componenti uguali a 1 per poi procedere come si è
fatto nella dimostrazione del teorema 9. Basta allora scegliere W = weT , dove
w = ( 21 (hm i)2 )i=0:m+1 e e ∈ Rn+2 . Infatti, dalla (43) e dal fatto che Lm (w) = e
e Ln (e) = 0 segue immediatamente la tesi.
Si osservi che la matrice W non è altro che la discretizzazione della funzione
w(x, y) = 21 x2 sul reticolo di punti (xi , yj ).
52
Ora possiamo procedere come nella dimostrazione del teorema 9. Quindi
consideriamo la matrice Y = (yi,j ),
(m,n) (m,n)
yi,j = ±i,j + h2 max |τi,j |wi,j
(m,n)
dove abbiamo denotato τi,j le componenti dell’errore locale di discretizzazio-
(m,n)
ne, e i,jle componenti dell’errore globale estese sul bordo con zeri. Per co-
struzione vale Lm,n (Y ) ≥ 0 per cui maxi,j yi,j = maxi,j (y0,j , ym+1,j , yi,0 , yi,n+1 ).
Si deduce quindi che
(m,n) 1
±i,j ≤ h2 kτ (m,n) k∞ .
2
1 1
−A−1 (e ⊗ e) = e ⊗ ( p − s) − (n + 1)2 A−1 ((e1 + en ) ⊗ (s − p)) (48)
2 2
Poiché 0 ≤ 21 p − s ≤ 18 e e poichè −A−1 ≥ 0 dalla (48) si ottiene
1 1
0 ≤ −A−1 (e ⊗ e) ≤ e ⊗ ( p − s) ≤ e ⊗ e.
2 8
Poiché k − A−1 (e ⊗ e)k∞ = kA−1 k∞ , si deduce che
1
kA−1 k∞ ≤
8
53
da cui la stabilità dello schema alle differenze e la convergenza.
Analogamente a quanto riportato nell’osservazione 7 si può dimostrare che
anche nel caso bidimensionale eventuali perturbazioni del termine noto del si-
stema Am,n x = b relative ai valori sul bordo non si ritrovano amplificate nella
soluzione.
1 h h2
f 0 (x) = (f (x + h) − f (x)) − f 00 (x) − f 000 (ξ). (50)
h 2 6
Dalla (50) applicata a u(x, y) come funzione di x con incremento h = hx e come
funzione di y con incremento h = hy si ottiene
∂2u 1
= (u(x + hx , y + hy ) − u(x + hx , y) − u(x, y + hy ) + u(x, y))
∂x∂y hx hy
(51)
hx ∂ 3 u hy ∂ 3 u
− 2
− + O(h2 ).
2 ∂x∂ y 2 ∂ 2 x∂y
54
E C D
2 1
F B
A
3 4
G H I
Applicando la formula (51) nel punto A con incrementi hx = ±h e hy = ±h,
tenendo conto che l’asse x è verticale, orientato verso il basso mentre l’asse y
è orizzontale orientato verso destra, si ottengono le quattro diverse formule per
∂2u
approssimare la derivata mista ∂x∂y
1 ∂2u h ∂3u ∂3u
1. 2
(−u(D) + u(C) − u(A) + u(B)) = − (− 2
+ 2 ) + O(h2 )
h ∂x∂y 2 ∂x∂y ∂x ∂y
1 ∂2u h ∂3u ∂3u
2. 2
(−u(C) + u(E) − u(F) + u(A)) = + ( 2
+ 2 ) + O(h2 )
h ∂x∂y 2 ∂x∂y ∂x ∂y
1 ∂2u h ∂3u ∂3u
3. (−u(A) + u(F) − u(G) + u(H)) = + (− + ) + O(h2 )
h2 ∂x∂y 2 ∂x∂y 2 ∂x2 ∂y
1 ∂2u h ∂3u ∂3u
4. (−u(B) + u(A) − u(H) + u(I)) = − ( + ) + O(h2 )
h2 ∂x∂y 2 ∂x∂y 2 ∂x2 ∂y
Una qualsiasi combinazione
P lineare delle quattro espressioni con coefficienti
α1 , α2 , α3 , α4 tali che αi = 1, fornisce una formula generale per approssimare
∂2u
la derivata mista ∂x∂y con errore O(h). Scegliendo però in modo opportuno i
coefficienti è possibile annulare la componente O(h) dell’errore e ottenere quindi
un errore locale O(h2 ); questo si realizza scegliendo α1 = α3 , α2 = α4 . La
formula generica con errore locale O(h2 ) può essere descritta con la matrice
3 × 3 dei coefficienti di ui+r,j+s per r, s = −1, 0, 1 (stencil)
0 0 0 α2 α1 − α2 −α1 0 1 0
a b c
2
1 −2 1 + 2 2 α1 − α2 2(α2 − α1 ) α1 − α2 + 2 0 −2 0
h h h
0 0 0 −α1 α1 − α2 α2 0 1 0
55
convergenza con ordine O(h2 ) di questo schema. Per questo è sufficiente deter-
minare una matrice W ≥ 0 tale che Lm,n (W ) ≥ γ > 0, dove γ è indipendente
da m e da n. Basta allora scegliere w(x, y) = 21 x2 , in modo che L[w] = a(x, y),
γ = min a(x, y), e porre W = (wi,j ), wi,j = w(xi , yj ).
Si osservi ancora che se 0 < b < min(a, c) allora b2 < ac ma non viceversa.
56
7.5 Condizioni al contorno di tipo misto
Si consideri il problema di Poisson (39) con le seguenti condizioni al contorno
miste
∂u(x, 1)
u(x, 0) = g1 (x), = g2 (x)
∂~n
∂u(1, y)
u(0, y) = g3 (y), = g4 (y)
∂~n
Si proceda come fatto nel caso monodimensionale e si dimostri che l’operatore
discreto Am,n ha la forma
Am,n = Im ⊗ An + Am ⊗ In
dove Am e An sono le matrici che discretizzano u00 (x) con condizioni al contorno
miste ottenute nel paragrafo 4.6.
57
Ad esempio, nel caso in figura, ordinando le incognite per colonne, la matrice
risulterà ancora tridiagonale a blocchi con blocchi diagonali che sono tridiagonali
con valori (1,-4,1). I primi 5 blocchi diagonali hanno dimensione 14, mentre i
restanti 9 blocchi diagonali hanno dimensione 7; i primi 4 blocchi sopra e sotto
diagonali hanno dimensione 14, il sesto ha dimensione 14 × 7, i rimanenti hanno
dimensione 7.
La stabilità del metodo in norma 2 si ottiene applicando il teorema di
Courant-Fischer e la definita positività di A. Infatti, una volta dimostrato che
gli autovalori di A sono limitati dal basso da una costante positiva indipendente
dalle dimensioni di A, allora per il teorema di Courant-Fischer anche gli auto-
valori di ogni sottomatrice principale A b di A sono limitati dal basso dalla stessa
−1
costante e quindi A ha norma 2 limitata superiormente da una costante.
b
Più in generale possiamo dimostrare una proprietà analoga valida per le
M-matrici. Premettiamo il seguente risultato.
Osserviamo prima che se A1 = I − B1 , A2 = I − B2 sono due M-matrici
n × n e quindi B1 , B2 ≥ 0. Allora vale il seguente risultato
P∞ P∞
Dim. Discende dal fatto che A−1
1 =
i −1
i=0 B1 , A2 =
i k k
i=0 B2 , poiché B1 ≥ B2
per k = 1, 2, . . ..
e ≤ B quindi P∞ B
Vale allora B e i ≤ P∞ B i e la serie P∞ B e i è convergente
i=0 i=0 i=0
e vale
X∞ ∞
X
−1
(I − B) =
e i
B ≤
e B i = A−1 .
i=0 i=0
58
Inoltre per la struttura diagonale a blocchi di B
e risulta
−1
e −1 = (I − B11 )
(I − B)
0
0 (I − B22 )−1
1 2 ∂ 2 u
∂u
u(A) = u(O) + hA + h + O(h3A )
∂x O 2 A ∂x2 O
1 2 ∂ 2 u
∂u
u(E) = u(O) + hE + h + O(h3E )
∂x O 2 E ∂x2 O
∂ 2 u
1 2 2
hE u(A) − hA u(E) = (hE − hA )u(O) + (hE hA − hA hE ) + O(h4 )
2 ∂x2 O
1 2 ∂ 2 u
∂u
u(D) = u(O) + hD + h + O(h3D )
∂y O 2 D ∂y 2 O
1 2 ∂ 2 u
∂u
u(F ) = u(O) + hF + h + O(h3F )
∂y O 2 F ∂y 2 O
∂ 2 u
1 2 2
hF u(A) − hA u(F ) = (hF − hD )u(O) + (hF hD − hD hF ) + O(h4 )
2 ∂y 2 O
59
D
A O E B
F
C
Figura 15: Bordo che non passa per i punti del reticolo: si conoscono i valori di
u(E) e u(F ) ma non quelli di U (B) e u(C) necessari per applicare la formula
dei 5 punti in O.
2 2
pesi si ottiene il laplaciano ∂ u(x,y)
∂x2 + ∂ u(x,y)
∂y 2 nel punto O con errore locale O(h).
Si ottiene una equazione che lega i valori incogniti di u(O), u(A), u(D) ai valori
noti di u(E) e u(F ) con errore locale O(hx + hy ).
Un approccio diverso consiste nel dare una approssimazione dei valori di
u(B) e di u(C) in funzione di u(E), u(F ) e u(O) mediante estrapolazione, e poi
applicare la formula dei 5 punti in O. Ad esempio, per approssimare u(B) con
estrapolazione lineare possiamo costruire la retta che passa per i punti (0, u(O))
e (hE , u(E)) e valutare il valore in hB . Oppure possiamo costruire la parabola
che passa per (hA , u(A)), (0, u(O)), e (hE , u(E)) e valutarne il valore in hB .
Manipolazioni simili possono essere fatte con le condizioni di Neumann.
60
Listing 8: Risoluzione del problema di Poisson ∆u = f su un quadrato mediante
differenze finite utilizzando il comando backslash di Matlab.
function v = poisson(f)
% function v = poisson(f)
% risolve il problema di Poisson su [0,1]x[0,1] con termine noto f(x,y)
% col metodo delle differenze finite
% f e’ matrice (m+2)x(n+2), sulla prima e utima riga e colonna contiene
% le condizioni al bordo, nella parte rimanente contiene i valori di
% f(x,y) nei punti della griglia
% v e’ una matrice (m+2)x(n+2) con i valori della soluzione, bordo
incluso
% Il sistema lineare e’ risolto col backslash \ di Matlab
[mm,nn] = size(f);
g = f(2:mm-1,2:nn-1);
m = mm-2; n = nn-2;
hy = 1/(m+1);
hx = 1/(n+1);
% completo il termine noto con le condizioni al contorno
g(1,:) = g(1,:)-f(1,2:nn-1)/hy^2;
g(m,:) = g(m,:)-f(mm,2:nn-1)/hy^2;
g(:,1) = g(:,1)-f(2:mm-1,1)/hx^2;
g(:,n) = g(:,n)-f(2:mm-1,nn)/hx^2;
% costruisco la matrice
dm = sparse(ones(m,1));
dn = sparse(ones(n,1));
dm1 = sparse(ones(m-1,1));
dn1 = sparse(ones(n-1,1));
Hn = (1/hx^2)*(-2*diag(dn)+diag(dn1,1)+diag(dn1,-1));
Hm = (1/hy^2)*(-2*diag(dm)+diag(dm1,1)+diag(dm1,-1));
A = kron(diag(dn),Hm)+kron(Hn,diag(dm));
% risolvo il sistema
v = A\vec(g);
v = reshape(v,m,n);
% completo alla dimensione originale
v = [f(1,:);f(2:m+1,1),v,f(2:m+1,n+2);f(m+2,:)];
% traccio il grafico
mesh(v);
% per salvare la figura scommentare l’istruzione che segue
% print ’bolla.jpg’ -djpg
end
61
Figura 16: Configurazione di equilibrio ottenuta dall’equazione ∆u = 0 con
valori al contorno dati da tre segmenti di retta sghembi
62
Figura 17: Configurazione di equilibrio ottenuta dall’equazione ∆u = f
f (x, y) = 1 e con valori al contorno nulli.
8.2 Introduzione
I metodi alle differenze finite hanno due difetti:
1. Funzionano bene su griglie quadrate regolari, ma si adattano male a do-
mini di forma più strana, per problemi in 2 o più dimensioni, che invece
spesso capitano nelle applicazioni.
2. Richiedono un’alta regolarità della soluzione: per dimostrarne il funzio-
namento, abbiamo usato sviluppi di
Taylor
fino al IV ordine, richiedendo
quindi che la funzione sia C 4 (e che
u(4)
∞ non sia troppo grossa).
63
dove l’operatore L è definito come
0
L[v] := − [p(x)v 0 (x)] + q(x)v(x)
per due funzioni p(x) > 0, p ∈ C 1 , e q(x) > 0, q ∈ C 0 date. Nel seguito, quando
possibile ometteremo i (x) dalle funzioni: per esempio l’equazione qui sopra sarà
scritta in modo più compatto
L[v] = −[pv 0 ]0 + qv.
Innanzitutto mi tolgo dai piedi le condizioni al contorno, cercando di rim-
piazzarle con u(a) = u(b) = 0: per questo, scelgo una qualunque funzione
l(x) ∈ C 2 che soddisfi l(a) = α, l(b) = β (per esempio c’è un polinomio di grado
1 che va bene), e noto che ũ = u − l soddisfa
L[ũ] = f − L[l]
ũ(a) = 0
ũ(b) = 0
che è un problema dello stesso tipo ma con condizioni al bordo omogenee. Con
qualche altro trucco (che non vediamo) è possibile trattare più o meno tutte le
condizioni al contorno, incluse quelle di Neumann.
64
8.5 Proprietà di L
Su H01 , l’operatore L è simmetrico rispetto al prodotto scalare h·, ·i (ovvio dalla
(55)); possiamo anche provare che è definito positivo (in un certo senso).
Lemma 25 (versione 1D del lemma di Poincaré) Esiste una costante C
(che dipende solo dal dominio [a, b]) tale che per ogni u ∈ H01 si ha
Teorema 26 Esistono costanti m, M che dipendono solo dal dominio tali che
per ogni u ∈ H01 si ha
2 2
m kukN ≤ hL[u], ui ≤ M ku0 kN
Dim. Z b Z b Z b
hL[u], ui = pu02 dx + qu2 dx ≥ (min p) u02 dx
a a a
2 2
≥(min p) ku0 kL2 ≥ (min p)C −2 kukN
Z b Z b
2 2
hL[u], ui = pu02 dx + qu2 dx ≤ (max p) ku0 kL2 dx + (max q) kukL2
a a
2 2
≤(max p) ku0 kL2 dx + (max q)C 2 ku0 kL2
65
8.6 Formulazione variazionale
Teorema 27 Se u soddisfa (54), allora u è un punto di minimo (stretto) in
H01 del funzionale F (v) := hL[v], vi − 2 hf, vi. In particolare, (54) ha al più una
soluzione.
8.7 Discretizzazione
Finora abbiamo dimostrato tante belle proprietà ma non abbiamo enunciato
algoritmi per risolvere la (53). Lo facciamo ora: nella (54), rimpiazziamo H01
con un suo sottospazio S con dim S = n < ∞: cioè, cerchiamo uS ∈ S tale che
ku − uS kN ≤ D ku0 − v 0 kN
per le norme N = 2, N = ∞.
Dim.
m ku − uS kN ≤ hL[u − uS ], u − uS i = hu, L[u]i + F (us )
≤ hu, L[u]i + F (v) = hL[u − v], u − vi ≤ M ku0 − v 0 kN
66
dove nel ≤ a cavallo dell’andata a capo abbiamo usato l’osservazione appena
fatta che uS è il minimo di F su S, e quindi F (uS ) ≤ F (v).
67
8.11 Curiosità: cosa succede in più dimensioni
Tutti i risultati enunciati finora non richiedono particolari proprietà di R, e
infatti funzionano anche quando le funzioni sono definite su un aperto Ω di R2 ,
per ogni operatore L per cui si riesce a dimostrare il teorema 26. Non serve che
L sia simmetrico, ma se non lo è le dimostrazioni si complicano un po’. Nel caso
simmetrico, quasi tutte le dimostrazioni che abbiamo visto funzionano pari pari
(eccezione: lemma di Poincaré).
Sono possibili diverse scelte dello spazio S, a seconda del problema; la più
comune è prendere una triangolazione del dominio, cioè una suddivisione di Ω
in tanti piccoli triangoli, e considerare le funzioni che sono continue globalmente
e lineari su ognuno dei triangoli. Con la base opportuna (le funzioni che valgono
1 in un vertice della triangolazione e 0 altrove), la matrice del sistema non ha
più una struttura particolare come nel caso 1D, ma è comunque molto sparsa.
Le operazioni da fare nella pratica sono:
• Costruire la triangolazione del dominio. Non è difficile, ci sono algoritmi
dedicati, ma talvolta non serve neppure applicarli perché molte applicazio-
ni partono da programmi di progettazione al computer in cui il risultato è
già naturalmente suddiviso in triangoli (o tetraedri nel caso 3D)—se qual-
cuno si interessa di computer-grafica 3D o di CAD ha già capito di cosa
parliamo.
• Costruire la matrice e il termine noto del sistema (58). Qui ci sono molti
integrali da fare. Nella pratica, questi integrali vengono calcolati uti-
lizzando su ogni triangolo (o su ogni segmento [xi , xi+1 ] di suddivisione
dell’intervallo [a, b] nel caso 1D) una formula di quadratura. Solitamente
questa è la parte che porta via più tempo.
• Risolvere il sistema. Visto che di solito la matrice è molto sparsa, si usa
un metodo iterativo (Jacobi, gradiente coniugato, GMRES), spesso ac-
coppiato con precondizionatori sofisticati. Di solito si arresta il metodo
iterativo con un residuo abbastanza alto: = 10−3 , per esempio. Difatti,
spesso, a causa degli errori già commessi “a monte” (nei dati sperimentali,
nel modello, nella quadratura, errore globale nella soluzione dell’equazio-
ne differenziale), la precisione del risultato è già limitata a poche cifre
significative.
9 Equazioni paraboliche
Si consideri l’equazione del calore
∂u ∂ 2 u
γ − = 0, γ > 0. (59)
∂t ∂x2
con condizioni
u(x, 0) = f (x), 0 ≤ x ≤ `,
(60)
u(0, t) = a(t), u(`, t) = b(t), t ≥ 0.
68
Il dominio [0, `] × [0, tmax ], si discretizza con ui,j = u(xi , tj ), xi = i∆x , ∆x =
`/(n + 1), tj = j∆t , ∆t = tmax /(m + 1), i = 0, 1, . . . , n + 1, j = 0, 1, 2, . . . , m + 1.
69
La presenza di T m nel blocco in basso a sinistra ci dice che condizione neces-
saria di stabilità è che ρ(T ) ≤ 1 altrimenti T m divergerebbe esponenzialmente.
Quindi condizione necessaria di stabilità è che gli autovalori di T siano in valore
assoluto minori o uguali a 1. Cioè |1−2r +2r cos iπ/(n+1)| ≤ 1. Ciò è verificato
per ogni n se e solo se r ≤ 1/2, cioè ∆t /∆2x ≤ γ/2. La stabilità e la convergenza
sono subordinate ad una condizione sul rapporto ∆t /∆2x . Si parla per questo di
stabilità condizionata.
È interessante osservare che per avere stabilità il numero di punti della
discretizzazione temporale deve essere dell’ordine del quadrato del numero di
punti della discretizzazione spaziale. Questo conduce a bassi livelli di efficienza
computazionale.
Si osservi che se r ≤ 1/2 la matrice T è non negativa e Am,n è una M-matrice
per cui A−1 −1
m,n ≥ 0. Vale allora kAm,n k∞ = kAm,n e
−1 (n(m+1))
k∞ dove e(n(m+1)) è
il vettore con n(m + 1) componenti uguali a 1. Inoltre vale T e(n) ≤ e(n) per cui
T j e(n) ≤ e(n) quindi
m
X
kA−1 −1 (n(m+1))
m,n k∞ = kAm,n e k∞ ≤ ∆t kT j e(n) k∞ ≤ ∆t (m + 1) = 1
j=0
70
Si arriva quindi alla equazione alle differenze
1 1
(ui,j+1 − ui,j ) = (ui−1,j − 2ui,j + ui+1,j + ui−1,j+1 − 2ui,j+1 + ui+1,j+1 )
∆t 2γ∆2x
+ O(∆2x ) + O(∆2t )
Il sistema lineare ottenuto rimuovendo i termini con gli errori locali è dunque
1 1
((1 + 2r)vi,j+1 − rvi−1,j+1 − rvi+1,j+1 ) = ((1 − 2r)vi,j + rvi−1,j + rvi+1,j )
∆t ∆t
v0,j = a(tj ), vn+1,j = b(tj ), vi,0 = f (xi ).
dove
A
1 −B A
Am,n =
∆t
.. ..
. .
−B A
in cui A = tridm (−r, 1 + 2r, −r), B = tridm (r, 1 − 2r, r).
La convergenza del metodo in qualche norma si studia dando maggiorazioni
alla norma di A−1
m,n . Si osserva che, posto V = A
−1
B, risulta
I
V I
A−1 = ∆ (I ⊗ A−1 ).
m,n t .. .. ..
. . .
Vm ... V I
71
Questa proprietà può essere usata per dimostrare la convergenza incondizio-
nata in norma 2. Infatti, partizionando (n(m+1)) in blocchi i di lunghezza n,
e denotando con c = (ci ) il vettore a destra nel sistema (61), risulta
k−1
X
k = ∆t V i A−1 ck−i .
i=0
k−1
X
kk k ≤ ∆t kV ki2 kA−1 k2 kck−i k
i=0
da cui
∆t
kk k ≤ kA−1 k2 max kci k.
1 − kV k2 i
A−1 e ≤ e
Be ≤ e
A−1 Be ≤ e
Xm
(A−1 B)j A−1 e ≤ (m + 1)e
j=0
da cui kA−1
m,n k∞ ≤ 1.
72
Dal punto di vista implementativo il metodo di Crank-Nicolson conviene
scriverlo nella forma più semplice
9.3 Il metodo θ
Si chiama metodo θ il metodo alle differenze finite che si ottiene combinando
linearmente le approssimazioni della derivata seconda di u rispetto ad x al tempo
tj e tj+1 con peso θ e 1 − θ. Col parametro θ = 1/2 si ottiene il metodo di
Crank-Nicolson, per cui il metodo θ ne costituisce una generalizzazione.
∂u(x, t) 1
= (u(x, t + ∆x ) − u(x, t − ∆t )) + ∆2t σ̂(x, η̂).
∂t 2∆t
Si dimostri che la norma infinito dell’inversa della matrice che discretizza l’ope-
ratore diverge per ∆t → 0 indipendentemente dal valore di r = ∆t /(γ∆2x ).
73
9.5 Caso tridimensionale
Nel modello in cui si studia la propagazione della temeperatura u(x, y, t) dei
punti (x, y) di una piastra Ω di cui si conosce ad ogni istante la temperatura g
sul bordo ∂Ω e i valori iniziali della temperatura della piastra, l’equazione del
calore prende la forma
Anche in questo caso si possono applicare gli analoghi dei metodi alle differenze
finite esaminati nel paragrafo precedente.
Questo sistema può essere risolto numericamente con i metodi numerici classici
per equazioni differenziali ordinarie.
Un approccio particolare può essere applicato nel caso più semplice in cui le
condizioni al bordo sono u(0, t) = u(`, t) = 0. In questo caso il sistema prende
la forma
v 0 = Av, v(0) = f
per cui la soluzione ammette una scrittura esplicita data da
v = eAt f .
74
e di facile implementazione in Matlab mediante la funzione expm che calcola
l’esponenziale di matrici.
Rimane il problema di valutare quanto l’errore locale ∆2x τ influisca sull’er-
rore globale = u − v. È facile verificare che questo errore soddisfa l’equazione
0 = A + ∆2x τ , (0) = 0.
10 Equazioni iperboliche
Consideriamo ora l’equazione delle onde
∂2u ∂2u
2
= γ 2 , 0 < x < 1, 0 < t < tmax , (62)
∂t ∂x
con le condizioni
u(x, 0) = f (x), 0 < x < 1
∂u(x, t)
|t=0 = g(x), 0 < x < 1 (63)
∂t
u(0, t) = 0, u(1, t) = 0.
cioè, F (x) = 12 (f (x) + ĝ(x)), G(x) = 12 (f (x) − ĝ(x)) con ĝ(x)0 = 1c g(x).
Si osserva che il valore u(x∗ , t∗ ) della soluzione (x, t) nel punto (x∗ , t∗ ) di-
pende unicamente dai valori f (x∗ + ct∗ ), f (x∗ − ct∗ ) e dai valori della funzione
75
Figura 18: Dominio di dipendenza della soluzione dell’equazione delle onde
10.2 Discretizzazione
Adottiamo l’equazione (62) come esempio per mostrare la risoluzione alle diffe-
renze finite di un problema iperbolico.
Discretizzando il dominio con i punti (xi , tj ), xi = i∆x , tj = j∆t , i =
0, . . . , n + 1, j = 0, 1, . . . , m + 1, δx = 1/(n + 1), ∆t = tmax /(m + 1) e
approssimando le due derivate seconde con la formula (5) si ottiene
1 1
(ui,j+1 − 2ui,j + ui,j−1 ) = 2 r(ui+1,j − 2ui,j + ui−1,j ) + O(∆2t ) + O(∆2x ).
∆2t ∆t
2
∆t
con r = γ ∆x e con le condizioni al bordo
u0,j = un+1,0 = 0 j = 0, 1, . . . , m + 1
ui,0 = f (xi ), i = 1, . . . , n (64)
∆2t 00 3
ui,1 = f (xi ) + ∆t g(xi ) + 2 γf (xi ) + O(∆t ) i = 1, . . . , n
76
La terza condizione si ottiene nel seguente modo mediante uno sviluppo in serie
essendo ∂u(x, 0)/∂x = g(x):
0 1 0
r 2 − 2r r
0 1 0
e la soluzione nel punto (xi , tj ) dipende dai valori delle soluzioni nei pun-
ti (xi−1 , tj−1 ), (xi , tj−1 ), (xi+1 , tj−1 ) e (xi , tj−2 ). In figura 19 viene riporta-
ta in forma grafica questa dipendenza assieme alpdominio di dipendenza per
l’operatore discreto dove si è posto δ = ∆x /∆t = γ/r.
Si osservi che la soluzione discreta dipende dai valori delle funzioni f (x) e
g(x), che danno le condizioni iniziali, nell’intervallo [xi − δtj , xi + δtj ], mentre la
77
Figura 19: Dominio p
di dipendenza dell’operatore discreto per l’equazione delle
onde, δ = ∆x /∆t = γ/r
soluzione del problema continuo in (xi , tj ) dipende dai valori nell’intervallo [xi −
ctj , xi + ctj ]. Se δ < c il secondo intervallo include strettamente il primo per cui
esistono valori delle condizioni iniziali che alterano la soluzione della equazione
differenziale ma non alterano la soluzione dell’equazione alle differenze. Questo
fatto ci fa capire che se r > 1 non ci può essere convergenza. Infatti dimostriamo
ora che questa condizione è necessaria per la stabilità.
La stabilità e la convergenza dello schema dipendono dalla limitatezza della
norma dell’inversa della matrice Am,n del sistema (65). Supponiamo per sem-
plicità m pari e si partizioni Am,n in blocchi di dimensione 2n × 2n in modo che
risulti bidiagonale a blocchi. Vale allora
I2n
−H I2n
1 In 0 2n
An = 2 Im/2 ⊗ (
∆t −Vn In
. .. . ..
−H2n I2n
dove −1
I 0 I −Vn I −Vn
H2n = =
−Vn I 0 I Vn I − Vn2
n/2−1
Poiché nell’inversa di Am,n compare la matrice H2n , una condizione necessa-
ria di stabilità è ρ(H2n ) ≤ 1. Si ha che ρ(H2n ) ≤ 1 se e solo se gli autovalori λ di
Vn sono tali che −2 ≤ λ ≤ 2. Usando il teorema 5 si deduce che tale condizione
equivale a r(1 − cos(πi/(n + 1))) ≤ 2, per i = 1, . . . , n e per ogni n, cioè r ≤ 1.
Si può verificare che questa condizione di stabilità è anche sufficiente.
78
Un esempio di equazione differenziale classificata come iperbolica è data
dall’equazione di trasporto lineare
∂u ∂u
+a =0
∂t ∂x
dove a è una costante. Si può verificare che
risolve l’equazione di trasporto lineare dove u(x, 0) = g(x). Inoltre ogni soluzio-
ne è di questo tipo.
Si osservi che u(x, t) è costante lungo le rette di equazione x−at = γ. Quindi,
dato il punto (x∗ , t∗ ), vale u(x∗ , t∗ ) = u(x, t) per x − at = x∗ − at∗ . Queste rette
sono dette rette caratteristiche.
I punti di coordinate (x∗ + a(t − t∗ ), t) per 0 ≤ t ≤ t∗ , in cui la funzione vale
u(x∗ , t), formano il dominio di dipendenza continuo di u(x∗ , t∗ ).
La versione non omogenea è data da
∂u ∂u
+a = f (x, t)
∂t ∂x
dove f (x, t) è funzione sufficientemente regolare.
Il problema può essere formulato sul dominio rettangolare [0, `] × [0, T ] con
le condizioni u(x, 0) = α(x) per x ∈ [0, `] e u(0, t) = β(t) per t ∈ [0, T ].
Si possono dare varie discretizzazioni di questa equazione usando per ap-
prossimare le derivate spaziali e temporali differenze in avanti, all’indietro o
centrate in tutte le loro combinazioni. Posto ui,j = u(xi , tj ) dove tj = ∆t j e
xi = i∆x , con ∆x = `/n, ∆t = T /m, per i = 0, . . . , n, j = 0, . . . , m, l’operatore
differenziale può essere discretizzato dai seguenti schemi
a 1
(ui+1,j − ui,j ) + (ui,j+1 − ui,j ),
∆x ∆t
a 1
(ui+1,j − ui,j ) + (ui,j − ui,j−1 ),
∆x ∆t
a 1
(ui+1,j − ui,j ) + (ui,j+1 − ui,j−1 ),
∆x 2∆t
a 1
(ui+1,j − ui−1,j ) + (ui,j+1 − ui,j−1 ),
2∆x ∆t
a 1 1
(ui+1,j − (ui,j+1 + ui,j−1 )) + (ui,j+1 − ui,j−1 ).
∆x 2 2∆t
Questi schemi sono detti rispettivamente forward-forward, forward-backward,
forward-central, central-central o leapfrog. L’ultimo è invece lo schema di Lax-
Friedrichs.
Analizziamo ad esempio il primo schema e assumiamo per semplicità a < 0.
Si ordinano le incognite secondo l’ordinamento lessicografico
79
in modo che il vettore cosı̀ ottenuto può essere partizionato in m blocchi u(j) =
(ui,j )i=1,n per j = 1, . . . , n. Ponendo r = a∆∆x , la matrice del sistema allora
t
diventa
I
−S I
1 −S I
A=
∆t
. . . .
. .
−S I
dove
1+r −r
1+r −r
S=
.. ..
. .
1+r −r
1+r
è una matrice n × n. La matrice inversa è dunque
I
S I
2
−1 S S I
A = ∆t
.. . .. .. ...
.
.
S m−1 ... S2 S I
Se r ∈ (−1, 0), la matrice S è non negativa per cui anche l’inversa A−1 è non
negativa e la sua norma infinito è data da
m
X ∞
X
∆t k S i ek∞ ≤ ∆t k S i ek∞ = ∆t k(I − S)−1 ek∞
i=0 i=0
Ma vale
1 −1
1 −1
I − S = −r
.. ..
. .
1 −1
1
per cui
1 1 ... 1
.. ..
1 . .
(I − S)−1 = −r−1
..
. 1
1
Quindi k(I − S)−1 ek∞ = −r−1 n da cui,
∆x `
kA−1 k∞ ≤ −r−1 n∆t = − ∆t = −`/a
a∆t ∆x
80
essendo r−1 = ∆x /(a∆t ) e n = `/∆x . Cioè la norma dell’inversa è limitata
uniformemente da una costante. Questo garantisce stabilità e convergenza.
Nel caso a > 0 non ci sarebbe stata stabilità.
Lo stencil del caso forward-forward è il seguente dove l’asse orizzontale è
l’asse x, indicizzato da i e quello verticale è quello del tempo indicizzato da j.
Si osservi che, come risulta dallo stencil, il valore di ui,j dipende da ui,j−1
e da ui+1,j−1 cioè da (xi , tj−1 ) e (xi+1 , tj−1 ). Per cui il dominio di dipendenza
discreto per ui,j è formato da (xh , tk ) dove k ≤ j, h = i, . . . , i + k. Il dominio
di dipendenza discreto è mostrato in figura
81
sistema ottenuto rimuovendo l’errore locale e si ha
Si osservi che, come nel caso parabolico, la matrice A ha inversa con norma
limitata e etA ha norma limitata essendo gli autovalori di A numeri immaginari
puri. Questo fatto garantisce la stabilità del metodo.
Il metodo di semi-discretizzazione si applica efficacemente anche in presenza
di attrito viscoso nel modello. In questo caso l’equazione delle onde è del tipo
∂2u ∂2u ∂u
2
=γ 2 −a
∂t ∂x ∂t
dove il termine in cui compare la derivata prima rispetto al tempo esprime
l’azione resistente della forza di attrito di coefficiente a ≥ 0.
Nella versione semi-discreta il sistema di equazioni ordinarie diventa
v 00 = Av − av 0
82
La costruzione della matrice A in matlab si realizza facilmente col comando
AA = [zeros(n), eye(n); A, -a*eye(n)];
dove A è la matrice tridiagonale che discretizza la derivata seconda, su un reti-
colo di n punti, moltiplicata per γ. Nel caso di problemi multidimensionali A è
la matrice che discretizza il laplaciano sul dominio.
Si osserva che, poiché A è diagonalizzabile con autovalori λi negativi, gli
autovalori di A coincidono con l’unione degli autovalori di
0 1
λi −a
x2 + ax − λi = 0.
Queste soluzioni hanno parte reale negativa, per cui la matrice etA ha norma
limitata. Inoltre poiché −1
A−1
aA
A−1 =
I 0
e A ha norma limitata, ne segue che anche A−1 ha norma limitata. Quindi c’è
stabilità.
11 Note computazionali
I sistemi lineari ottenuti discretizzando equazioni differenziali alle derivate par-
ziali col metodo delle differenze finite sono generalmente a banda (a blocchi)
e sparsi. Nel caso in cui tali sistemi non siano triangolari (a blocchi) per cui
un metodo di sostituzione può risolvere in modo efficiente il sistema, è preferi-
bile usare un metodo iterativo. Nel caso delle equazioni di tipo ellittico in cui
la matrice del sistema è una M-matrice simmetrica, e quindi definita positiva,
il metodo iterativo più indicato è il metodo del gradiente coniugato (precon-
dizionato). Tale metodo, cosı̀ come molti altri, richiede ad ogni passo come
operazione più costosa il calcolo del prodotto matrice vettore. Ad esempio, nel
caso della matrice Am,n che discretizza il laplaciano cambiato di segno su un ret-
tangolo, il prodotto y = h2 Am,n x si realizza con le seguenti semplici istruzioni
nella sintassi tipo Matlab.
for i=1:m
for j=1:n
y(i+1,j+1)=4*x(i+1,j+1)-x(i,j+1)-x(i+2,j+1)-x(i+1,j)-x(i+1,j+2);
end
end
Si osservi che nel doppio ciclo for abbiamo dovuto aumentare di 1 i valori
degli indici delle variabili x e y. Infatti, Matlab richiede indici positivi. In
altri termini il valore di ui,j è memorizzato nella variabile x(i + 1, j + 1) per
i = 0, . . . , m + 1, j = 0, . . . , n + 1.
83
Si osservi ancora che nel doppio cilco for intervengono punti che stanno
sul bordo del dominio. Questi possono essere rimossi assegnando il valore zero
alle componenti di bordo di x. Nel caso in cui il metodo iterativo richieda il
calcolo del residuo Am,n x − b è conveniente assegnare ai valori di bordo della
variabile x i valori al contorno del problema. In questo modo il calcolo svolto
nel doppio cilco for non corrisponde alla sola moltiplicazione di hAm,n per il
vettore incognito ma include anche la parte del termine noto che contiene le
condizioni al bordo.
Poiché Matlab è un linguaggio interpretato, l’esecuzione di due cicli for an-
nidati può richiedere un tempo di esecuzione elevato se i valori di m e n sono
“moderatamente grandi”. Un modo per ovviare a questo inconveniente è scrivere
il doppio ciclo in forma “vettoriale” nel modo seguente:
Nel caso in cui il dominio Ω non coincide col rettangolo ma è un suo sottoin-
sieme proprio, ad esempio un dominio di forma ad L o un quadrato con un foro
al suo interno di forma quadrata, è possibile modificare leggermente il program-
ma per il calcolo del prodotto matrice-vettore. Conviene introdurre una nuova
variabile dominio tale che dominio(i+1,j+1) vale 1 se il punto (xi , yj ) sta nel
dominio e vale 0 altrimenti. Il doppio ciclo for si trasforma in modo semplice in
for i=1:m
for j=1:n
if dominio(i+1,j+1)
y(i+1,j+1)=4*x(i+1,j+1)-x(i,j+1)-x(i+2,j+1)-x(i+1,j)-x(i+1,j+2);
end
end
end
84
Figura 20: Configurazione di equilibrio di una membrana elastica (bolla di sa-
pone) calcolata col metodo del gradiente coniugato applicato al sistema linea-
re ottenuto discretizzando l’equazione di Laplace su un dominio “bucato” con
condizioni di Dirichlet
85
Figura 21: Configurazione di equilibrio di una membrana elastica a supporto
quadrato con condizioni nulle su due lati opposti e pari a x(1 − x) sui rimanenti
due lati.
86
Listing 9: Risoluzione del problema ∆u = 0 su un rettangolo mediante differenze
finite utilizzando il metodo iterativo di Richardson.
function v = poisson_richardson(f)
% function v = poisson_richardson(f)
% risolve il problema di Poisson su [0,1]x[0,1] con termine noto f(x,y)
% col metodo delle differenze finite
% f e’ matrice (m+2)x(n+2), sulla prima e utima riga e colonna contiene
% le condizioni al bordo, nella parte rimanente contiene i valori di
% f(x,y) nei punti della griglia
% v e’ una matrice (m+2)x(n+2) con i valori della soluzione, bordo
incluso
% Il sistema lineare Av = f e’ risolto con l’iterazione di
% Richardson: v_{k+1}=v_k-alfa*(Av_k-f) dove 0 < alfa <= 2/||A||
% Il residuo Av-f viene calcolato in ’modo vettoriale’
% Il termine noto appare implicitamente attraverso le condizioni al
% contorno date dalle righe e colonne estreme della matrice di input v
maxit = 2000; epsi = 1.e-6;
m = size(f,1); n = size(f,2);
n = n-2; m = m-2;
hy = 1/(m+1); hx = 1/(n+1);
rhx = 1/hx^2; rhy = 1/hy^2;
alpha = 2/(4*rhy+4*rhx);
v = f;
% risolvo il sistema -A v = -f
f(2:m+1,2:n+1) = -f(2:m+1,2:n+1);
for it=1:maxit
sy = (2*v(2:m+1,2:n+1)-v(1:m,2:n+1)-v(3:m+2,2:n+1))*rhy;
sx = (2*v(2:m+1,2:n+1)-v(2:m+1,1:n)-v(2:m+1,3:n+2))*rhx;
r = sx + sy - f(2:m+1,2:n+1);
r = r*alpha;
err = max(max(abs(r)));
disp([it err]);
v(2:m+1,2:n+1) = v(2:m+1,2:n+1)-r;
if err<epsi
break
end
end
mesh(v); % disegna la posizione di equilibrio della membrana
% per salvare la figura scommentare l’istruzione che segue
% print ’bolla.jpg’ -djpg
end
87
Figura 23: Configurazione di equilibrio di una membrana elastica pesante vin-
colata ad un bordo circolare a quota 0 e ad un bordo circolare interno a quota
più elevata.
problema è individuato dalla matrice dominio i cui elementi valgono 1 nei punti
interni al dominio, valgono 0 altrove. L’iterazione di Richardson si ripete in
modo analogo al caso del dominio rettangolare con la differenza che l’iterazione
non viene aggiornata nei punti fuori dal dominio e che i punti esterni al dominio
non contribuiscono al prodotto matrice vettore se non quelli di bordo. Ciò si
realizza moltipicando
La function riportata nel listing 11 risolve l’equazione del calore col metodo
del paragrafo 9.1 che è stabile se r < 1/2.
Calcolando la soluzione con T = 1, γ = 32.4, u(0, t) = u(1, t) = 1, u(x, 0) =
0, e scegliendo n = 40, m = 100 si ha instabilità essendo r = 0.51883 e si ottiene
la figura 24.
Scegliendo invece γ = 34 si ha r < 1/2 per cui il metodo è stabile. La
soluzione calcolata in questo caso è mostrata in figura 25.
Le function riportate nei listati seguenti sono prive di commento. Il comm-
neto è lo stesso riportato nella function 11.
Il listato 12 riporta lo stesso metodo implementato però in forma vettoriale.
Il codice in questa forma è più efficiente.
La function riportata nel listato 13 risolve l’equazione del calore col metodo
ottenuto discretizzando la derivata prima con una differenza all’indietro. Il
metodo è incondizionatamente stabile.
88
Listing 10: Risoluzione del problema di Poisson ∆u = f in un dominio contenuto
in un quadrato mediante differenze finite e iterazione di Richardson.
function v = poisson_richardson2(f,dominio)
% function v = poisson_richardson2(f)
% risolve il problema di Poisson su un dominio contenuto in [0,1]x[0,1]
con
% termine noto f(x,y) col metodo delle differenze finite
% f e’ matrice (m+2)x(n+2), sul bordo del dominio contiene
% le condizioni al contorno, nella parte rimanente contiene i valori di
% f(x,y) nei punti della griglia
% dominio e’ una matrice (m+2)x(n+2) che vale 1 nei punti interni al
dominio
% vale 0 nei punti esterni o di bordo
% v e’ una matrice (m+2)x(n+2) con i valori della soluzione nei punti del
% dominio, bordo incluso, mentre vale 0 fuori del dominio
% Il sistema lineare Av = f e’ risolto con l’iterazione di
% Richardson: v_{k+1}=v_k-alfa*(Av_k-f) dove 0 < alfa <= 2/||A||
% Il residuo Av-f viene calcolato in ’modo vettoriale’
% Il termine noto appare implicitamente attraverso le condizioni al
% contorno date dalle righe e colonne estreme della matrice di input v
maxit = 2000; epsi = 1.e-6;
m = size(f,1); n = size(f,2);
n = n-2; m = m-2;
hy = 1/(m+1); hx = 1/(n+1);
rhx = 1/hx^2; rhy = 1/hy^2;
alpha = 2/(4*rhy+4*rhx);
v = f;
% risolvo il sistema -A v = -f
f(2:m+1,2:n+1) = -f(2:m+1,2:n+1);
for it=1:maxit
sy = (2*v(2:m+1,2:n+1)-v(1:m,2:n+1)-v(3:m+2,2:n+1))*rhy;
sx = (2*v(2:m+1,2:n+1)-v(2:m+1,1:n)-v(2:m+1,3:n+2))*rhx;
r = sx + sy - f(2:m+1,2:n+1);
r = r*alpha;
r = r.*dominio(2:end-1,2:end-1);
err = max(max(abs(r)));
disp([it err]);
v(2:m+1,2:n+1) = v(2:m+1,2:n+1)-r;
if err<epsi
break
end
end
mesh(v); % disegna la posizione di equilibrio della membrana
% per salvare la figura scommentare l’istruzione che segue
% print ’bolla.jpg’ -djpg
end
89
Listing 11: Risoluzione dell’equazione del calore mediante differenze finite con
la derivata prima approssimata da una differenza in avanti. Il metodo è stabile
se r ≤ 1/2.
function u = calore_fw(a, b, u0, g, T)
% function u = calore_fw(a, b, u0, T)
% calcola la soluzione u(x,t) dell’equazione del calore
% g*u_t-u_xx = 0 su [0,1]x[0:T]
% con valori al bordo u(0,t)=a(t), u(1,t)=b(t), u(x,0) = u0(x)
% la soluzione u(x,t) viene data come matrice (n+2)xm
% dove u_{i,j}=u(x_i,t_j)
% metodo usato: differenze finite con differenza in avanti
n = length(u0); m = length(a);
Dx = 1/(n+1); Dt = T/m;
r = Dt/(g*Dx^2);
u = zeros(n+2,m); u(2:n+1,1) = u0; u(1,:) = a; u(n+2,:) = b;
if r>1/2
disp(’WARNING: il metodo non e’ stabile’)
r
end
% risolvo
for j=1:m-1
for i=2:n+1
u(i,j+1)=r*(u(i+1,j)+u(i-1,j))+(1-2*r)*u(i,j);
end
end
mesh(u);
end
90
Figura 24: Soluzione dell’equazione del calore: caso instabile
91
Listing 12: Risoluzione dell’equazione del calore mediante differenze finite con
la derivata prima approssimata da una differenza in avanti. Versione vettoriale.
function u = calore_fwv(a, b, u0, g, T)
% metodo usato: differenze finite con differenza in avanti
n = length(u0); m = length(a);
Dx = 1/(n+1); Dt = T/m; r = Dt/(g*Dx^2);
u = zeros(n+2,m); u(2:n+1,1) = u0; u(1,:) = a; u(n+2,:) = b;
if r>1/2
disp(’WARNING: il metodo non e’ stabile’); disp(r)
end
% risolvo
for j=1:m-1
u(2:n+1,j+1)=r*(u(3:n+2,j)+u(1:n,j))+(1-2*r)*u(2:n+1,j);
end
mesh(u);
La function riportata nel listato 13 risolve l’equazione del calore col metodo
di Crank-Nicolson.
La function riportata nel listato 15 risolve l’equazione del calore col meto-
do di semi-discretizzazione usando l’esponenziale di matrici. In questo caso le
condizioni al bordo devono essere nulle.
Nella figura 26 si riporta la soluzione ottenuta col metodo di Crank-Nicolson
scegliendo n = m = 400, a = b = 1, g = 1, t = 1/4, con una rappresentazione
data mediante colori.
92
Listing 13: Risoluzione dell’equazione del calore mediante differenze finite con
la derivata prima approssimata da una differenza all’indietro. Il metodo è
incondizionatamente stabile.
function u = calore_bw(a, b, u0, g, T)
% metodo usato: differenze finite con differenza all’indietro
n = length(u0); m = length(a);
Dx = 1/(n+1); Dt = T/m; r = Dt/(g*Dx^2);
u = zeros(n+2,m); u(2:n+1,1) = u0; u(1,:) = a; u(n+2,:) = b;
% costruisco blocco diagonale
vn = sparse(ones(n,1)); vn1 = sparse(ones(n-1,1));
A = (1+2*r)*diag(vn) - r*diag(vn1,1) - r*diag(vn1,-1);
% vettori e1, en della base canonica
e1 = zeros(n,1); en = e1; e1(1) = 1; en(n) = 1;
% risolvo
for j=1:m-1
u(2:n+1,j+1) = A\(u(2:n+1,j) + r*a(j+1)*e1 + r*b(j+1)*en);
end
mesh(u);
Listing 14: Risoluzione dell’equazione del calore mediante differenze finite con
il metodo di Crank-Nicolson.
function u = calore_CN(a, b, u0, g, T)
% metodo usato: Crank-Nicolson
n = length(u0); m = length(a);
Dx = 1/(n+1); Dt = T/m; r = Dt/(2*g*Dx^2);
u = zeros(n+2,m); u(2:n+1,1) = u0; u(1,:) = a; u(n+2,:)=b;
% costruisco matrice diagonale A e sottodiagonale B
vn = sparse(ones(n,1)); vn1 = sparse(ones(n-1,1));
A = (1+2*r)*diag(vn) - r*diag(vn1,1) - r*diag(vn1,-1);
B = (1-2*r)*diag(vn) + r*diag(vn1,1) + r*diag(vn1,-1);
% risolvo
u(2:n+1,2)=A\(B*u(2:n+1,1));
for j=2:m-1
w = r*(a(j+1) + a(j))*e1 + r*(b(j + 1) + b(j))*en;
u(2:n+1,j+1) = A\(B*u(2:n+1,j) + w);
end
mesh(u);
93
Listing 15: Risoluzione dell’equazione del calore mediante semi-discretizzazione
e uso della funzione esponenziale di matrice.
function u = calore_exp(a, b, u0, g, T)
% metodo usato: funzione expm
n = length(u0); m = length(a); dt = T/m;
a = zeros(n,1); a(1)=-2; a(2)=1; a=a*(n+1)^2/g;
A = toeplitz(a); B = expm(dt*A);
u = zeros(n+2,m); u(2:n+1,1) = u0;
for i=2:m
u0 = B*u0; u(2:n+1,i) = u0;
end
Figura 26: Soluzione dell’equazione del calore ottenuta col metodo di Crank-
Nicolson con n = m = 400. I colori danno il livello di temperatura.
94
nei punti di un reticolo, e sostituire alle derivate prime e seconde degli operatori
discreti dati dalle matrici tridiagonali o bidiagonali come già fatto per i problemi
standard.
In questo modo il residuo r(ui,j ) è una applicazione non lineare dallo spazio
delle matrici m × n in sé. E possiamo utilizzare l’iterazione di Richardson nella
forma discreta.
Una trattazione adeguata di questo problema non lineare comporta una ana-
lisi di stabilità, e una analisi di convergenza del metodo di Richardson. Que-
st’ultima in particolare è agevole se lo Jacobiano J di r(ui,j ) è definito positivo
(scegliendo α > 0) o negativo (scegliendo α < 0) con |α| sufficientemente pic-
colo. Infatti in questo caso lo jacobiano dell’iterazione discreta non lineare di
Richardson è I − αJ e ha raggio spettrale minore di 1 per |α| sufficientemente
piccolo ma non zero.
Possiamo provare a implementare questa iterazione e a controllare la conver-
genza. Ottenere una soluzione discreta in cui il residuo ha una norma piccola
ci garantisce una approssimazione della soluzione del problema discreto. Nel
caso ci sia stabilità, questa garantisce una buona approssimazione del probema
continuo.
Le due function che seguono implementano il metodo di Richardson. Nella
prima il residuo è il membro sinistro dell’equazione di Eulero-Lagrange e per
convergere richiede valori numerici di alpha molto piccoli che comportano un
numero elevato di iterazioni.
La seconda function usa come residuo una espressione diversa che ora de-
scriviamo. Riformuliamo l’equazione di Eulero-Lagrange nel modo seguente
2 2 2 2
∂2u ∂2u ∂u ∂ u ∂u ∂ u ∂u ∂u ∂ 2 u
+ = − − + 2 =: f (x, y)
∂x2 ∂y 2 ∂y ∂x2 ∂x ∂y 2 ∂x ∂y ∂x∂y
Denotiamo con v(x, y) la soluzione de problema di Laplace
∆v = f (x, y)
2 2
∂2u ∂2u ∂u ∂u ∂ 2 u
∂u ∂u
(1 + )+ (1 + )=2 =: f (x, y)
∂x2 ∂y ∂y 2 ∂x ∂x ∂y ∂x∂y
definire v la soluzione del problema lineare
2 2
∂2v ∂v ∂2v ∂v
(1 + ) + 2 (1 + ) = f (x, y)
∂x2 ∂y ∂y ∂x
95
Listing 16: Risoluzione dell’equazione di Eulero-Lagrange col metodo di
Richardson: prima versione.
function [u,b,A] = EuleroLagrange1(f, k, alpha)
% risolve equazione uxx(1+uy^2)+uyy(1+ux^2)-2ux*uy*uxy=f(x,y)
% con iterazione di richardson
% u = u +alpha*(uxx(1+uy^2)+uyy(1+ux^2)-2ux*uy*uxy-f(x,y))
% f e’ (m+2)x(n+2) sul bordo ha le condiz al contorno
% nella parte interna il termine noto
[mm,nn] = size(f); m = mm-2; n = nn-2;
% m; n; dimensioni parte interna
hx = 1/(m+1); hy = 1/(n+1);
% costruisco le matrici delle derivate seconde
aux1 = ones (mm-2,1)*[1,-2,1]/hx^2;
D2x = spdiags(aux1,[0,1,2],mm-2,mm);
aux1 = ones (nn-2,1)*[1,-2,1]/hy^2;
D2y = spdiags(aux1,[0,1,2],nn-2,nn);
% costruisco le matrici delle derivate prime
aux1 = ones (mm-2,1)*[-1,0,1]/(2*hx);
Dx = spdiags(aux1,[0,1,2],mm-2,mm);
aux1 = ones (nn-2,1)*[-1,0,1]/(2*hy);
Dy = spdiags(aux1,[0,1,2],nn-2,nn);
% valore iniziale u
u = poisson(f);
% itero
for i = 1 : k
% costruisco residuo
r = -f(2:end-1,2:end-1);
ay = ones(mm-2,nn)+(Dx*u).^2; ay=ay(:,2:nn-1);
ax = ones(mm,nn-2)+(u*Dy’).^2; ax=ax(2:mm-1,:);
sxu = Dx*u; syu = u*Dy’;
sxu = sxu(:,2:end-1); syu =syu(2:end-1,:);
axy = 2*sxu.*syu;
uxy = Dx*u*Dy’;
uxx = D2x*u; uyy = u*D2y’;
uxx = uxx(:,2:end-1); uyy = uyy(2:end-1,:);
r = r-axy.*uxy+uxx.*ay+uyy.*ax;
err = norm(r,inf)
u(2:end-1,2:end-1) = u(2:end-1,2:end-1)+alpha*r;
if err<1.e-13
disp(’numero iterazioni’); i
break
end
end
end
96
Listing 17: Risoluzione dell’equazione di Eulero-Lagrange col metodo di
Richardson: seconda versione.
function [u,b,A] = Eulero-Lagrange2(f, k,alpha)
% risolve equaz uxx(1+uy^2)+uyy(1+ux^2)-2ux*uy*uxy=f(x,y)
% con iterazione u=u-alpha*r
% dove il residuo r e’ dato da r=u-w con
% w= Laplaciano^{-1}( 2ux*uy*uxy-uxx*(uy)^2-uyy*(ux)^2 +f(x,y))
% f e’ (m+2)x(n+2) sul bordo ha le condiz al contorno
% nella parte interna il termine noto
[mm,nn] = size(f); m = mm-2; n = nn-2;
% m; n; dimensioni parte interna
hx = 1/(m+1); hy = 1/(n+1);
% costruisco matrici derivata seconda
aux1 = ones (mm-2,1)*[1,-2,1]/hx^2;
D2x = spdiags(aux1,[0,1,2],mm-2,mm);
aux1 = ones (nn-2,1)*[1,-2,1]/hy^2;
D2y = spdiags(aux1,[0,1,2],nn-2,nn);
% costruisco matrici derivata prima
aux1 = ones (mm-2,1)*[-1,0,1]/(2*hx);
Dx = spdiags(aux1,[0,1,2],mm-2,mm);
aux1 = ones (nn-2,1)*[-1,0,1]/(2*hy);
Dy = spdiags(aux1,[0,1,2],nn-2,nn);
% valore iniziale u
u = poisson(f);
% itero
for i = 1 : k
% costruisco termine noto
B = f;
ay = ones(mm-2,nn)+(Dx*u).^2; ay=ay(:,2:nn-1);
ax = ones(mm,nn-2)+(u*Dy’).^2; ax=ax(2:mm-1,:);
sxu = Dx*u; syu = u*Dy’;
sxu = sxu(:,2:end-1); syu =syu(2:end-1,:);
axy = 2*sxu.*syu; uxy = Dx*u*Dy’;
uxx = D2x*u; uyy = u*D2y’; uxx = uxx(:,2:end-1);
uyy = uyy(2:end-1,:);
B(2:end-1,2:end-1) = B(2:end-1,2:end-1)+axy.*uxy-uxx.*ay-uyy.*ax;
% risolvo problema di Poisson
v = poisson(B);
err = norm(u-v,inf)
res = u-v;
u = u-alpha*res;
if err<1.e-13
disp(’numero iterazioni’); i
break
end
end
end
97
Figura 27: Soluzione dell’equazione non lineare di Eulero-Lagrange.
e porre r(u) = u − v.
Ad esempio, con i dati forniti dallo script seguente
m = 40; n = 40;
f = zeros(m,n);
f(1:end,1) = sin(pi*[0:m-1]’/(m-1));
f(1,1:end) = sin(pi*[0:n-1]/(n-1));
occorrono 41098 iterazioni col primo metodo con α = 1.9 · 10−5 e 65 iterazioni
col secondo metodo con α = 1.4 · 10−1 per avere un residuo di norma inferiore
a 10−10 .
le figure 27 e 28 riportano il grafico della superficie minima e il grafico della
differenza tra la superficie minima e quella fornita dalla linearizzazione ottenuta
col laplaciano.
È abbastanza facile realizzare una function che simula la propagazione di
un’onda in un dominio bidimensionale risolvendo numericamente l’equazione
delle onde con attrito viscoso
∂2u ∂2u ∂u
2
= g 2
−a .
∂t ∂x ∂t
su un dominio rettangolare. La function del listato 18 realizza questo.
Con un po’ più di impegno si riesce a modificare la function per animare
un’onda che si propaga in un dominio arbitrario contenuto in un rettangolo. Un
esempio di function è riportata nel listato 19.
98
Listing 18: Animazione di un’onda che si propaga su un dominio bidimensionale.
function animazione_rettangolo(g, a, p, v, s)
% traccia l’animazione di un’onda su un dominio rettangolare
% risolvendo l’equazione delle onde u_tt = g*u_xx - a*u_x
% mediante l’esponenziale di matrice con Delta_t=1/16000
% In INPUT
% g: rapporto costante elastica/massa (valore costante)
% a: rapporto costante di attrito/massa (valore costante)
% p, v: posizione e velocita’ iniziale
% s: numero di secondi
% costruisco la matrice A
n = size(p,1); n2=n^2;
S = 2*eye(n)- diag(ones(n-1,1),1)-diag(ones(n-1,1),-1);
K = kron(eye(n),S)+kron(S,eye(n)); Dx = 1/(n+1);
K =(1/Dx^2)*K;
A = [zeros(n2),eye(n2); -g*K, -a*eye(n2)];
% formo il vettore delle condizioni iniziali
p=vec(p); v=vec(v); y = [p;v];
% Simulazione
nt = round(s*16000); deltat = 1/16000;
disp(’Calcolo esponenziale di matrice’)
B = expm(deltat*A);
% traccio posizione iniziale
V = zeros(n+2,n+2); V(2:n+1,2:n+1) = reshape(p,n,n);
% traccio il grafico della configurazione iniziale
mesh(V)
axis([0,n+2,0,n+2,-5,5])
disp(’Premere un tasto per iniziare la simulazione’)
pause
for j=1:nt
y = B*y;
w=ones(n^2,1)*1; w = y(1:n2);
V(2:n+1,2:n+1) = reshape(w,n,n);
% traccio il grafico della configurazione all’istante generico
mesh(V)
axis([0,n+2,0,n+2,-5,5])
pause(0.0001)
end
99
Listing 19: Animazione di un’onda che si propaga su un dominio bidimensionale.
function animazione_onda(dom, g, a, p, v, s)
% traccia l’animazione di un’onda su un dominio bidimensionale
% risolvendo l’equazione delle onde u_tt = g*u_xx - a*u_x
% mediante l’esponenziale di matrice con Delta_t=1/16000
% In INPUT
% dom: dominio
% g: rapporto costante elastica/massa (valore costante)
% a: rapporto costante di attrito/massa (valore costante)
% p, v: posizione e velocita’ iniziale
% s: numero di secondi
% costruisco la matrice A
n = size(p,1);
S = 2*eye(n)- diag(ones(n-1,1),1)-diag(ones(n-1,1),-1);
K = kron(eye(n),S)+kron(S,eye(n)); Dx = 1/(n+1); K =(1/Dx^2)*K;
% calcolo la sottomatrice relativa ai punti del dominio
ind = find(dom==1);
n2 = length(ind);
Kd = K(ind,ind);
A = [zeros(n2),eye(n2); -g*Kd, -a*eye(n2)];
% formo il vettore delle condizioni iniziali
p=vec(p); p = p(ind);
v=vec(v); v = v(ind);
y = [p;v];
% Simulazione
nt = round(s*16000);
deltat = 1/16000;
disp(’Calcolo esponenziale di matrice’)
B = expm(deltat*A);
% traccio posizione iniziale
V = zeros(n+2,n+2);
w=ones(n^2,1)*1;
w(ind) = y(1:n2);
V(2:n+1,2:n+1) = reshape(w,n,n);
% traccio il grafico della configurazione iniziale
mesh(V)
axis([0,n+2,0,n+2,-5,5])
disp(’Premere un tasto per iniziare la simulazione’)
pause
for j=1:nt
y = B*y;
w=ones(n^2,1)*1; w(ind) = y(1:n2);
V(2:n+1,2:n+1) = reshape(w,n,n);
% traccio il grafico della configurazione all’istante generico
mesh(V)
axis([0,n+2,0,n+2,-5,5])
pause(0.0001)
end
100
Figura 28: Differenza tra la soluzione dell’equazione non lineare di
Eulero-Lagrange e la soluzione del problema linearizzato mediante laplaciano.
Esercizi
Esercizio 1 È data una funzione γ(t) : [0, 1] → [0, 1] continua e monotona
tale che γ(0) = 0, γ(1) = 1. Per n intero positivo e δ = 1/(n + 1) si consideri
la discretizzazione dell’intervallo [0, 1] data da xi = γ(iδ), i = 0, . . . , n + 1.
Vogliamo costruire un metodo alle differenze finite per il problema modello
u00 (x) = f (x), 0 < x < 1, u(0) = u(1) = 0,
avendo a disposizione i valori di f (x) nei punti della discretizzazione xi , i =
1, . . . , n.
(a) Per fare questo si ricavino le formule per approssimare la derivata se-
conda sulla discretizzazione xi , i = 1, . . . , n. Si discuta l’errore locale e la
consistenza facendo le dovute ipotesi di regolarità sulla funzione γ(t).
(b) Si scriva la discretizzazione alle differenze finite costruendo la matrice del
sistema lineare che discretizza il problema differenziale sui nodi xi . Si
diano opportune condizioni su γ(t) affinché lo schema sia convergente.
(c) Si studi il caso γ(t) = 4(t − 1/2)3 + 1/2.
Esercizio 2 Si consideri l’equazione differenziale
L[u] = f (x), con 0 < x < 1, u(0) = u(1) = 0, (68)
dove
L[u] = u00 + α u0 , con α 6= 0, (69)
4
e f (x) sufficientemente regolare da garantire che u(x) ∈ C [0, 1].
101
(a) Si dia una discretizzazione alle differenze finite per cui sia possibile di-
mostrare, usando il principio del massimo discreto, consistenza, stabilità
e convergenza in norma infinito, e si scriva tale dimostrazione.
(b) Cosa è possibile dire sulla stabilità in norma 2?
u(0) = u(1) = 0,
(a) Costruire uno schema alle differenze finite per la risoluzione del problema
e analizzarne l’ordine di convergenza al problema degli autovalori nel caso
in cui a(x) = 1 + x2 .
(b) Cosa si può dire della convergenza dello schema cosı̀ ottenuto nel caso
a(x) = x2 ?
Esercizio 4 (a) Dare una discretizzazione alle differenze finite del problema
differenziale
− u00 (x) + a(x) u(x) = f (x), 0 < x < 1,
(
u(0) = u(1) = 0,
Esercizio 5 (a) Dare una discretizzazione alle differenze finite del problema
differenziale
− u00 (x) + a(x) u0 (x) = λu(x), 0 < x < 1,
(
u(0) = u(1) = 0,
102
(b) Si diano condizioni sufficienti su a(x) affinché lo schema sia convergente
e se ne dimostri la convergenza.
Esercizio 6 (a) Dare una discretizzazione alle differenze finite del problema
differenziale agli autovalori
u(0) = u0 (1) = 0,
(c) Si usi il risultato precedente per dimostrare che il problema al punto (a)
ha autovalori 0 ≤ µ1 ≤ µ2 ≤ . . . tali che
∂u(x, t) ∂ 2 u(x, t)
=γ , 0 ≤ x ≤ 2π, t > 0, γ > 0,
∂t ∂x2
u(0, t) = u(2π, t), u(x, 0) = c(x),
103
x e t. Posto ∆x = 2π/(n+1), ∆t = 1/m, (xi , tj ) = (i∆x , j∆t ), per i = 0, . . . , n+
1 e j = 1, . . . , m, per approssimare i valori ui,j = u(xi , tj ) si costruisca uno
schema alle differenze in cui la derivata prima ∂u(xi , tj )/∂t viene approssimata
con la differenza ui,j − ui,j−1 /∆t e la derivata seconda ∂ 2 u(xi , tj )/∂x2 con la
combinazione lineare θsi,j +(1−θ)si,j−1 , dove si,j = (ui−1,j −2ui,j +ui+1,j )/∆2x
e 0 ≤ θ ≤ 1.
(b) Valutare l’errore locale di discretizzazione.
(c) Scrivere la matrice Am,n del sistema lineare che descrive il metodo.
(d) Dare condizioni necessarie su θ affinché lo schema sia incondizionatamente
stabile.
(e) Dare una stima dell’errore globale maxi,j |ui,j −vi,j |, dove vi,j sono le com-
ponenti della soluzione del sistema lineare ottenuto rimuovendo l’errore
locale di discretizzazione.
(c) Schema 2: nello schema precedente, nella formula (70) per la derivata ri-
spetto a t si sostituisca u(x, t) con la combinazione lineare 21 (u(x − ∆x , t) + u(x + ∆x , t)).
(d) Si studi il caso in cui a è una funzione di x periodica di periodo 2π tale
che la soluzione esista e sia sufficientemente regolare.
104
Esercizio 10 Sia
∂ 2 u(x, t) ∂u(x, t)
L[u(x, t)] = −γ , dove γ > 0.
∂x2 ∂t
Si consideri l’equazione parabolica
dove f (x), α(t), β(t) sono funzioni assegnate per cui la soluzione u(x, t) esiste
ed è sufficientemente regolare.
∂ 2 u(x, t) 1
= 2 u(x − ∆x , t) − 2u(x, t) + u(x + ∆x , t) + ∆2x τ (ξ, t),
∂x2 ∆x
∂u(x, t) 1
= u(x, t) − u(x, t − ∆t ) + ∆t σ(x, η).
∂t ∆t
Si dimostri che
(a1) lo schema alle differenze è incondizionatamente stabile,
(a2) per l’operatore alle differenze finite L∆ (ui,j ) ottenuto in questo modo
vale il principio del massimo discreto, cioè se L∆ (ui,j ) ≥ 0 nei punti della
discretizzazione interni al dominio, allora ui,j prende il massimo sul bordo
(a3) (facoltativo) Vale il principio del massimo per l’operatore L[x, t]?
(b) Si verifichi che se l’approssimazione della derivata temporale è fatta me-
diante la formula
∂u(x, t) 1
= u(x, t + ∆t ) − u(x, t) + ∆t σ
b(x, ηb),
∂t ∆t
allora per l’operatore alle differenze finite ottenuto in questo modo vale il
principio del massimo discreto se r = ∆t /(γ∆2x ) è minore di 1/2.
(c) Si descriva lo schema alle differenze finite ottenuto sostituendo l’appros-
simazione della derivata prima con la formula (più precisa)
∂u(x, t) 1
u(x, t + ∆t ) − u(x, t − ∆t ) + ∆2t σ
= e(x, ηe).
∂t 2∆t
In particolare, supponendo di conoscere o di avere calcolato, ad esempio
con il metodo di Crank-Nicolson, i valori di u(x, ∆t ) al tempo ∆t nei
nodi della discretizzazione spaziale, si descriva la matrice del sistema e
si verifichi che detta matrice, opportunamente partizionata, ha la forma
bidiagonale inferiore a blocchi. Si dimostri che la norma infinito dell’in-
versa diverge se ∆x , ∆t → 0, indipendentemente dal valore del rapporto
r = ∆t /(γ∆2x ). Si traggano conclusioni sulla stabilità del metodo.
105
(d) Si ricavi una formula alle differenze finite per la derivata prima ∂u(x, t)/∂t,
con errore locale O(∆2t ) che utilizzi i valori di u(x, t), u(x, t−∆t ), u(x, t − 2∆t ).
Si valuti l’errore locale di discretizzazione.
(e) Si valuti la stabilità del metodo che si ottiene usando tale formula per
risolvere numericamente l’equazione parabolica.
∂ ∂u(x, t) ∂u(x, t)
L[u(x, t)] = b(x, t) − ,
∂x ∂x ∂t
dove u(x, t) e b(x, t) sono funzioni sufficientemente regolari definite su (0, `) ×
(0, T ), con b(x, t) > γ > 0, si consideri l’equazione parabolica
dove f (x), α(t), β(t) sono funzioni assegnate sufficientemente regolari in modo
che la soluzione u(x, t) esista e sia derivabile almeno 4 volte con continuità.
(a) Si descriva e si analizzi uno schema alle differenze finite in cui la derivata
prima viene approssimata da
∂u(x, t) 1
= u(x, t) − u(x, t − ∆t ) + ∆t σ(x, η).
∂t ∆t
(c) Sia b(x, t) costante. Nel caso in cui le condizioni al contorno per x = 0 e
x = ` siano di tipo Neumann, cioè
∂u(x, t) ∂u(x, t)
= α, = β,
∂x ∂x
x=0 x=`
∂u(x, t) 1
= u(x, t + ∆t ) − u(x, t) + ∆t σ(x, η)
∂t ∆t
e le due derivate spaziali nelle condizioni al contorno con l’analogo rap-
porto incrementale, è stabile.
∂u(x, t) ∂ 2 u(x, t)
=γ , 0 < x < 1, t > 0, γ > 0,
∂t ∂x2
106
con le condizioni u(0, t) = a(t), u(1, t) = b(t), u(x, 0) = c(x).
Si assuma che i valori al bordo siano sufficientemente regolari in modo che
la soluzione sia derivabile almeno 4 volte con continuità nelle variabili x e t.
Posto ∆x = 1/(n + 1), ∆t = 1/m, si considerino i punti (xi , tj ) = (i∆x , j∆t ),
per i = 1, . . . , n e j = 1, . . . , m. Per approssimare i valori ui,j = u(xi , tj ) con le
quantità vi,j si considera il seguente schema alle differenze
h
vi,j − vi,j−1 = r θ(vi−1,j − 2vi,j + vi+1,j ) i = 1, . . . , n,
i
+(1 − θ)(vi−1,j−1 − 2vi,j−1 + vi+1,j−1 ) , j = 1, . . . , m,
Esercizio 13 Si consideri il problema u(4) (x) = f (x) per 0 < x < 1 con f (x) ∈
C 2 ([a, b]), [a, b] ⊃ [0, 1], con le condizioni al contorno u(0) = u(1) = 0 e u00 (0) =
u00 (1) = 0.
1. Si dimostri che esiste una sola soluzione u(x) ∈ C 6 ([a, b]).
2. Si dimostri che se u(x) ∈ C 6 ([a, b]) e x, x + 2h, x − 2h ∈ [a, b], allora
1
u(4) (x) = (u(x − 2h) − 4u(x − h) + 6u(x) − 4u(x + h) + u(x + 2h)) + τ h2 ,
h4
e si maggiori |τ | in funzione del massimo di |u(6) (x)| per x ∈ [a, b].
3. Si descriva uno schema alle differenze basato sulla formula precedente per
risolvere il problema differenziale assegnato. In paricolare si descriva la
matrice An del sistema lineare n × n che discretizza il problema. Si espli-
citi separatamente l’errore locale dovuto alla discretizzazione della deriva-
ta quarta e l’errore locale dovuto alla discretizzazione delle condizioni al
contorno.
107
4. Si metta in relazione la matrice An con la matrice Hn = h12 tridiag(−1, 2, −1)
che discretizza la derivata seconda e si dimostri che A−1
n è limitata supe-
riormente da una costante indipendente da n, sia in norma 2 che in norma
infinito.
5. Si dimostri che il metodo è convergente di ordine h2 .
Esercizio 14 Si consideri il problema u00 (x) = f (x) per 0 < x < 1 con f (x) ∈
C 2 ([a, b]), [a, b] ⊃ [0, 1] con le condizioni al contorno u0 (0) = αu0 (1), u(0) = 0.
Si dimostri che se α 6= 1 esiste una sola soluzione u(x) ∈ C 4 ([a, b]).
Si costruisca uno schema alle differenze finite per approssimare la soluzione
nei punti xi = ih, i = 0, . . . , n, h = 1/n, nel seguente modo: si discretizzi la
derivata seconda con l’operatore
−1 2 −1
1 −1 2 −1
Ln = − 2
h .. .. ..
. . .
−1 2 −1
108
4. Nel caso α = 1 si diano condizioni su f (x) affinché esistano soluzioni e si
descriva un metodo alle differenze per calcolarle. Si verifichi inoltre che la
matrice An è singolare per α = 1.
dove f (x) e g(x) sono funzioni assegnate sufficientemente regolari in modo che
esista una soluzione u(x) di classe C 4 ([0, 1]).
b) Si discretizzi il problema con il metodo alle differenze finite e si costruisca
la matrice An del sistema lineare cosı̀ ottenuto.
c) Utilizzando il punto a) si dimostri che se f (x) ≥ α > −π 2 per x ∈ [0, 1]
allora lo schema alle differenze è stabile in norma 2 e si dia una maggiorazione
a limn kA−1n k2 .
d) Si analizzi la stabilità e l’ordine di convergenza in norma 2 nel caso in cui
f (x) > −π 2 per 0 < x ≤ 1 e f (0) = −π 2 .
e) Si dia una maggiorazione a kA−1 n k∞ nel caso in cui |f (x)| ≤ β < 8 e nel
caso più generale in cui f (x) ≥ −β > −8.
per x ∈ (0, 1), dove f (x), g(x) : [0, 1] → R sono funzioni assegnate, soggetto alle
condizioni al contorno u(0) = v(0) = 0, u(1) = v(1) = 0. Si supponga che le
funzioni f (x) e g(x) siano sufficientemente regolari in modo che la soluzione del
problema esista e sia derivabile almeno 4 volte con continuità.
109
Dare una discretizzazione del problema approssimando la derivata prima
di u(x) e di v(x) con una differenza centrata, descrivendone la matrice del
sistema lineare associato. Dare poi una discretizzazione del problema ottenuto
sostituendo v(x) = g(x) − u0 (x) nella prima equazione in (1) e utilizzando il
metodo delle differenze finite. Analizzare stabilità e convergenza dei due metodi.
dove b, γ sono costanti, γ > 0, g(x), α(t), β(t) sono funzioni assegnate sufficien-
temente regolari per cui esiste una soluzione u(x, t) ∈ C 4 ([0, 1] × [0, T ]).
Si formuli il problema alle differenze finite che discretizza (1) dove la derivata
seconda viene approssimata da una differenza a tre punti e la derivata prima
rispetto a x viene approssimata con una differenza centrata mentre la derivata
prima rispetto a t viene approssimata con una differenza all’indietro.
Si diano condizioni su a affinchè lo schema alle differenze finite sia stabile.
Si dia una stima dell’errore globale.
110
Esercizio 19 Si consideri il seguente problema agli autovalori
1 h2 (4)
f 00 (x) = (f (x − h) − 2f (x) + f (x + h)) − f (x) + h4 τ (73)
h2 12
dove |τ | ≤ 2 maxx∈[a,b] |f (6) (x)|/6!.
Data una costante γ > 0, si consideri l’equazione differenziale parabolica
∂u ∂u2
− γ 2 = 0, x ∈ [0, 1], t ∈ [0, T ] (74)
∂t ∂x
con le condizioni u(x, 0) = g(x), u(0, t) = α(t), u(1, t) = β(t), dove si assume di
avere sufficiente regolarità nella soluzione.
Dimostrare che se u(x, t) è soluzione allora
∂ 2 u(x, t) ∂ 4 u(x, t)
2
= γ2 . (75)
∂t ∂x4
Costruire e analizzare lo schema alle differenze per risolvere (74) ottenuto
nel modo seguente: la derivata prima rispetto a t viene discretizzata mediante
una differenza centrata; la derivata seconda rispetto ad x viene discretizzata
111
mediante (73) applicata a f (x) = u(x, t) in cui la derivata quarta di u(x, t)
rispetto a x viene espressa attraverso la derivata seconda rispetto a t mediante
la (75), e questa viene discretizzata con la formula dei 3 punti.
Dare lo stencil di questo schema e la matrice del sistema lineare cosı̀ ottenuto,
valutare l’errore locale. Dire se esistono valori di ∆t /∆2x per cui lo schema è
stabile, nel caso valutare l’errore globale.
b c b
Esercizio 22 Consideriamo lo stencil 1
h2
c −a c e osserviamo che
b c b
b c b a 0 1 0 1 1 0 1 1 1 −2 1 0 1 0
c −a c = 1 −4 1 + b −2
0 −2 + b 0
0 0 +(b+c−a/4) 1
0 1
b c b 4 0 1 0 2 1 0 1 2 1 −2 1 0 1 0
∂u(x, t) ∂u(x, t)
+a = f (x, t)
∂x ∂t
u(x, 0) = g(x),
dove f (x, t) = f (x + 2kπ, t), g(x) = g(x + 2kπ) per ogni intero k e per x, t ∈ R,
dove f (x, t) e g(x) sono funzioni sufficientemente regolari in modo che l’equa-
zione ha soluzione sufficientemente regolare in x e t.
a) Dimostrare che se u(x, t) è soluzione allora u(x, t) = u(x + 2kπ, t) per ogni k
intero.
b) Discretizzare l’equazione con uno schema alle differenze finite in cui la deriva-
ta temporale è approssimata con una differenza in avanti e la derivata spaziale
con la formula
1
f 0 (x) = − [−f (x − 2h) + 8f (x − h) − 8f (x + h) + f (x + 2h)] + O(hp )
12h
112
determinando prima il valore di p.
c) Verificare che lo schema non è stabile.
d) Fornire uno schema alternativo che conduca ad un metodo stabile.
Esercizio
√ 24 Sia u(x, y) una funzione sufficientemente regolare. Sia v = (v1 , v2 ) =
(1/2, 3/2), w = (w1 , w2 ) = (−v1 , v2 ).
a) Dimostrare che
∂2u ∂2u
e usare questo fatto per dimostrare che per il laplaciano ∆u = ∂x2 + ∂y 2 vale
b) Dimostrare che
2
∆u(x, y) = (−6u(O) + u(A) + u(B) + u(C) + u(D) + u(E) + u(F )))+O(h2 )
3h2
dove A, B, C, D, E, F sono i vertici di un esagono regolare di lato h ed O = (x, y)
è il centro dell’esagono come nella prima delle tre figure seguenti.
esagono triangolo1
113
del massimo discreto; c3) dimostrare la convergenza dello schema alle diffe-
renze finite in norma infinito; c4) dimostrare la convergenza dello schema alle
differenze finite in norma 2; c5) fare la stessa analisi su un dominio triangolare
come nella terza figura.
2 2
d) Per l’operatore a(x, y) ∂∂xu2 +b(x, y) ∂∂yu2 dare una analoga formula di discre-
tizzazione sul reticolo a maglia triangolare, dove a(x, y) e b(x, y) sono funzioni
sufficientemente regolari. Dare condizioni sufficienti su a(x, y) e b(x, y) affinché
valga ancora il principio del massimo discreto.
1’. Dimostrare che se β −α 6= 1 allora per ogni f (x) ∈ C k [a, b], con [a, b] ⊃ [0, 1]
esiste ed è unica una soluzione u(x) ∈ C k+2 [0, 1].
114
2’. Dare una discretizzazione alle differenze finite del problema dove le con-
dizioni al contorno sulla derivata seconda vengono discretizzate con una
differenza centrata. Si descriva in modo esplicito la matrice che discretizza
l’operatore differenziale.
3’. Dare una stima dell’errore globale di discretizzazione dimostrando la con-
vergenza dello schema nel caso in cui β − α 6= 1.
115
Appendice: Risoluzione di alcuni esercizi
Risoluzione esercizio 1. I nodi della discretizzazione non sono equispaziati.
Vi sono due possibili procedimenti: o determinare un’approssimazione della
derivata seconda con nodi non equispaziati o fare una trasformazione di variabile
che renda i nodi equispaziati in modo da utilizzare l’approssimazione standard.
(Primo procedimento)
116
dove
1 u000
i θ i η i − ζi
i = − (1 − θi )h3i+1 − (1 + θi )h3i +
hi+1 hi 6 hi+1 hi
u000
i θ i η i − ζi
= −(hi+1 − hi ) + .
3 hi+1 hi
Per gli indici i per cui hi = hi+1 si utilizza la discretizzazione standard, che
corrisponde a porre nella (76) θi = 0. Il corrispondente errore i dipende
direttamente dalla uıv (x) e non dalla u000 (x).
Il vettore di componenti i rappresenta l’errore locale. Per determinare la
consistenza della discretizzazione si deve valutare . Per il primo termine,
se γ(t) è sufficientemente regolare si ha
γ 00 (ξi,1 )
hi+1 − hi = xi+1 − 2xi + xi−1 = γ(ti+1 ) − 2γ(ti ) + γ(ti−1 ) = δ 2 .
2
(77)
Per il secondo termine si ha
2(h4i+1 + h4i )
θi ηi − ζi 1 + |θi | 4 4 M4 M4
≤ (hi+1 + hi ) = .
hi+1 hi hi+1 hi 24 min{hi , hi+1 }(hi+1 + hi ) 24
Poiché γ 0 (t) ≥ 0 è
hi = γ(ti + δ) − γ(ti ) = δγ 0 (ξi,2 ).
Dalla (77) si ha
γ 00 (ξi,1 )
hi+1 = hi + δ 2 ,
2
per cui, per δ sufficientemente piccolo
γ 00 (ξi,1 )
hi+1 + hi = 2hi + δ 2 = 2δγ 0 (ξi,2 ) + O(δ 2 ),
2
γ 00 (ξi,3 )
h4i+1 + h4i = 2h4i + 4h3i δ 2 = 2δ 4 (γ 0 (ξi,2 ))4 + O(δ 5 ),
2
e quindi
h4i+1 + h4i
= δ 2 (γ 0 (ξi,2 ))2 + O(δ 3 )
min{hi , hi+1 }(hi+1 + hi )
Per δ sufficientemente piccolo è
M3 2 M 4
|i | ≤ δ 2 |γ 00 (ξi,1 )| + δ 2 γ 0 (ξi,2 ) .
6 12
Quindi in generale
M M4
3
kk∞ ≤ δ 2 Γ2 + Γ21 , dove Γj = max |γ (j) (t)|.
6 12 t∈[0,1]
117
(b) La discretizzazione dell’equazione differenziale con la formula trovata dà
An u = Hn f − Hn ,
An v = Hn f .
1 − θj 1 + θj
zj+1 + zj−1 ≥ zj ,
2 2
cioè zj risulterebbe maggiorato da una combinazione lineare convessa delle
due componenti adiacenti, per cui zj−1 = zj = zj+1 . Ne segue che il
massimo non può essere assunto in un punto interno, a meno che tutte le
componenti siano uguali a quelle sul bordo. Vale perciò il principio del
massimo nel discreto, che si usa per dimostrare la convergenza in norma
infinito. Si pone
t2i t2n−i+1
wi = se θi < 0 e wi = se θi > 0,
2 2
118
e si verifica che Ln (wi ) ≥ 1 per 0 ≤ i ≤ n + 1. Si può cosı̀ dimostrare
(vedere le dispense) che kA−1n Hn k∞ ≤ 1/2, per cui
δ2
ku − vk∞ ≤ kA−1
n Hn k∞ kk∞ ≤ c ,
2
per una opportuna costante c, garantendo la convergenza in norma infini-
to.
1
q q
−1 −1
kA−1
n k 2 ≤ kA n k∞ kA n k1 = kA−1 −T
n k∞ kAn k∞ ≤ .
2
Questo garantisce la convergenza in norma 2.
(c) Nel caso particolare in cui γ(t) = 4(t − 1/2)3 + 1/2, è
2(h4i+1 + h4i )
hi+1 − hi = 12δ 2 (2ti − 1), ∼ 9 δ2 ,
min{hi , hi+1 }(hi+1 + hi )
a meno di termini di ordine superiore al secondo, quindi
3M4
kk∞ ≤ δ 2 4M3 + .
4
(Secondo procedimento)
(a) Con la trasformazione di variabile x = γ(t) si ha s(t) = u(γ(t)). Per
questa funzione la discretizzazione è a nodi equispaziati. Nell’ipotesi di
sufficiente regolarità di γ vale
s0 (t) = u0 (γ(t))γ 0 (t), s00 (t) = u00 (γ(t))(γ 0 (t))2 + u0 (t)γ 00 (t),
per cui l’equazione differenziale diventa
s00 (t)γ 0 (t) − s0 (t)γ 00 (t) = f (γ(t))(γ 0 (t))3 . (78)
L’ipotesi di monotonia della γ(t) implica che γ 0 (t) ≥ 0. Se però in un
punto ξ ∈ (0, 1) dovesse accadere che γ 0 (ξ) = 0 deve anche essere γ 00 (ξ) =
0.
119
(b) Il sistema che si ottiene è
An s = g + ,
1 h 0 γ 00 (ti ) δ 0 0 γ 00 (ti ) δ i
0, . . . , 0, γ (ti ) + , −2γ (ti ), γ (t i ) − , 0, . . . , 0 .
δ2 2 2
Rimuovendo le componenti dell’errore locale si ottiene il sistema
An v = g,
2 γ 0 (t)
γ 00 (ti ) = 0 oppure γ 0 (ti ) 6= 0 e δ≤ , per t ∈ [0, 1].
|γ 00 (t)|
γ 00 (t) δ γ 00 (t) δ
wi = t2i se γ 0 (t)+ <0 e wi = t2n−i+1 se γ 0 (t)+ > 0,
2 2
e si verifica che Ln (wi ) ≥ 0 per 0 ≤ i ≤ n + 1, dove Ln è l’operatore
discretizzato. Si può cosı̀ dimostrare (vedere le dispense) che kA−1
n k∞ ≤
1/2, garantendo la convergenza in norma infinito.
γ 0 (t)
γ 0 (1/2) = 0, γ 00 (1/2) = 0, = 0.
γ 00 (t) t=1/2
Si assume come n un intero pari. In tal modo non accade mai che γ 0 (ti ) =
0. La condizione di predominanza dà δ ≤ |ti −1/2|, per i = 1, . . . , n, quindi
δ ≤ iδ − 1/2, per i = n/2 + 1, . . . , n, che è verificata per δ = 1/(n + 1) con
n ≥ 4.
Risoluzione esercizio 2.
120
(a) Posto h = 1/(n + 1), si considerano i nodi xi = i h, per i = 0, . . . , n + 1 e
le approssimazioni
1 1
u00 (x) = u(x−h)−2 u(x)+u(x+h) +τ h2 , max |u(4) (x)|
|τ | ≤
h2 12 x∈[0,1]
1 1
u0 (x) = u(x + h) − u(x − h) + σ h2 , max |u(3) (x)|.
|σ| ≤
2h 3 x∈[0,1]
Sostituendo nell’equazione e chiamando fi = f (xi ) e ui = u(xi ), si ottiene
1 α 2 1 α
− ui−1 − u i + + ui+1 = fi −(τi +σi ) h2 , per i = 1, . . . , n
h2 2h h2 h2 2h
e u0 = un+1 = 0. Questo sistema può essere scritto nella forma
Hn u = f − h2 τ + σ ,
Hn v = f ,
(b) Per studiare la convergenza in norma infinito, si cerca una funzione w(x)
tale che
w(x) ≥ 0 e L[w] ≥ 1 per 0 ≤ x ≤ 1.
121
Una tale funzione è
x2 (x − 1)2
w(x) = se α≥0 e w(x) = se α < 0.
2 2
Nel discreto si pone
wi ≥ 0 e zi = Ln (wi ) ≥ 1 per 0 ≤ i ≤ n + 1.
Si considera il vettore b
di n + 2 componenti ottenuto allungando con
una prima e ultima componente nulla. Risulta
) = Hn () = h2 τ + σ ,
Ln (b
per cui
+ h2 kτ + σk∞ w = ±Ln (b
Ln ± b ) + h2 kτ + σk∞ Ln (w)
= ±h2 τ + σ + h2 kτ + σk∞ z ≥ 0.
in cui
1
max wi = sia per α ≥ 0 che α < 0.
i 2
Ne segue che
h2
kτ + σk∞ ,
kk∞ ≤
2
che garantisce la convergenza per h → 0. Confrontando con la (80) si ha
1
kHn−1 τ + σ k∞ ≤ kτ + σk∞ .
2
Nella precedente dimostrazione le caratteristiche del vettore v = τ +σ non
sono state prese in considerazione. Quindi possiamo scrivere le relazione
per un generico vettore v non nullo
1
kHn−1 vk∞ ≤ kvk∞ .
2
Ne segue che
kHn−1 vk∞ 1
≤ ,
kvk∞ 2
122
da cui si ricava che kHn−1 k∞ ≤ 1/2, garantendo la stabilità in norma
infinito.
In alternativa, si può considerare come funzione a cui applicare il principio
del massimo discreto la
x x−1
w(x) = se α≥0 e w(x) = se α < 0,
α α
che pure verifica le condizioni
wi ≥ 0 e zi = Ln (wi ) ≥ 1 per 0 ≤ i ≤ n + 1.
In tal caso si ha
1 h2
max wi = e kk∞ ≤ kτ + σk∞ .
i |α| |α|
Risoluzione esercizio 3.
(B + F ) u = λ u, dove B = AL, F = h2 A τ uT .
123
Rimuovendo il termine dell’errore locale si ottiene il sistema
B v = µ v,
B = S D S −1 , dove S = A1/2 Q.
|λ − µ| ≤ kF k2 kSk2 kS −1 k2 .
Poiché Q è ortogonale si ha
p 1
kSk2 = kA1/2 k2 = max a(xi ), kS −1 k2 = kA−1/2 k2 = p
i min a(xi )
i
e quindi
r
2 − h2
se a(x) = 1 + x2 ,
1 + h2
κ2 (S) = kSk2 kS −1 k2 =
1−h
a(x) = x2 .
se
h
La matrice F è una diade, quindi
kA τ k2
kF k2 = h2 kA τ uT k2 ≤ h2 kA τ k2 kuk2 = h2 .
kuk2
Poiché R1
kτ k22 1 (u(4) (x))2 dx
0
lim = 2 = `,
h→0 kuk2
R1
2 12 u2 (x) dx
0
con ` finito, ne segue che kF k2 ≤ c h2 max |a(x)|, con c costante, per cui
x∈[0,1]]
µ + O(h2 ) se a(x) = 1 + x2 ,
λ=
µ + O(h) se a(x) = x2 .
124
cioè (B + F ) z = λ z, dove
B v = µ v,
|λ − µ| ≤ kF k2
kA τ k2
kF k2 = h2 kA1/2 τ z T Ak2 = h2 kA τ uT k2 ≤ h2 kA τ k2 kuk2 = h2 .
kuk2
Risoluzione esercizio 4.
125
(b) Tenendo conto delle condizioni al contorno e rimuovendo le componenti
dell’errore locale si ottiene il sistema
Hn v = f ,
2 + h2 a1
−1
−1 2 + h2 a2 −1
1 . .. .. ..
Hn = 2 . . .
h .. ..
. . −1
−1 2 + h2 an
1 a i2 h2
2 2 2 2 2 2 2 i
`i = − (i − 1) h + (2 + h ai ) i h − (i + 1) h = − 1.
2h2 2
Se a(x) x2 ≤ 2 per x ∈ [0, 1] risulta `i ≤ 0 per i = 0, . . . , n + 1. Si fa quindi
l’ipotesi che 0 ≤ a(x) ≤ 2/x2 per x ∈ (0, 1]. Si ha allora
per cui
ui−1 + ui+1 ui−1 + ui+1
ui ≤ ≤ .
αi 2
Da questa relazione segue che un ui interno non può essere maggiore dei
due elementi contigui e che il massimo degli ui può essere assunto solo agli
estremi.
Sia ora = v − u l’errore globale. Si ha
= h2 Hn−1 τ ,
126
(d) Per trovare un esempio di funzione a(x) per cui non si ha convergenza, si
considera una a(x) = a costante negativa. In tal caso si ha
1 2
Hn = trid(−1, 0, −1) + + a I.
h2 h2
Gli autovalori di questa matrice sono
2
2 2 i4 h2 π 4
λi = a + 1 − cos(i h π) ∼ a + i π − , i = 1, . . . , n.
h2 6
Il minimo autovalore di Hn è λ1 , per cui se si sceglie a = −π 2 , la matrice
Hn ha un autovalore dell’ordine di −h2 π 4 /6. Al crescere di n la norma
h2 kHn−1 k2 non tende a zero, e quindi non vi è convergenza a zero di kk2 .
Risoluzione esercizio 5.
1 1
u0 (x) = u(x + h) − u(x − h) + σ h2 , max |u(3) (x)|,
|σ| ≤
2h 3 x∈[0,1]
chiamando ai = a(xi ) e ui = u(xi ), si ottiene la discretizzazione
1 a 2 1 a
i i
− − ui−1 + ui − + ui+1 +(τi −σi ) h2 = λui , per i = 1, . . . , n
h2 2h h2 h2 2h
e u0 = un+1 = 0. Questo sistema può essere scritto nella forma
H u + h2 τ − σ = λu,
(82)
127
τ − σ e, nell’ipotesi fatta che u(x) ∈ C 4 [0, 1], la discretizzazione risulta
consistente di ordine h2 .
Il sistema (82) può anche essere scritto nella forma
F = h2 τ − σ uT .
(H + F ) u = λu, dove
e K è la tridiagonale con
2 1 p
ki,i = e ki,i+1 = ki+1,i = − (2 + ai h)(2 − ai+1 h).
h2 2h2
Quindi K è diagonalizzabile e si ha H = S −1 DS, dove D è diagonale e
S = QB, con Q unitaria. Il teorema di Bauer-Fike richiede il valutare il
128
per un’opportuna β. Quindi il limite
risulta finito.
La matrice F è una diade, quindi
kτ k2 + kσk2
kF k2 = h2 k τ − σ uT k2 ≤ h2 kτ k2 + kσk2 kuk2 = h2
.
kuk2
Poiché
R1 R1
kτ k22 1 (u(4) (x))2 dx
0 kσk22 1 0
(u(3) (x))2 dx
lim 2 = 2 R1 = `1 , lim 2 = 2 R1 = `2 ,
h→0 kuk2 12 u2 (x) dx h→0 kuk2 3 u2 (x) dx
0 0
λ = µ + O(h2 ).
Risoluzione esercizio 6.
129
dove
B = AL, F = h A ρ uT e ρ = h τ + 2σn+1 en+1 .
Rimuovendo i termini dell’errore locale si ottiene il sistema
B v = µ v.
|λ − µ| ≤ kF k2 kSk2 kS −1 k2 .
Poiché Q è ortogonale si ha
r
maxi ai
kSk2 kS −1 k2 = kA1/2 k2 kA−1/2 k2 = .
mini ai
con ` finito, ne segue che kF k2 ≤ c h max |a(x)|, con c costante, per cui
x∈[0,1]]
λ = µ + O(h).
Risoluzione esercizio 7.
130
(a) Per un fissato n, si discretizza l’intervallo [0, 1] con i punti xi = ih, i =
0, . . . , n + 1, con h = 1/(n + 1), si approssima u00 (xi ) con la solita formula
centrale a tre punti e u0 (x0 ) con la formula
1 1
u0 (x0 ) = (u1 − u−1 ) + σ0 h2 , con |σ0 | ≤ max u000 (x)|.
2h 3 x∈[0,1]
A u = λ u + f, (84)
dove
2 − 2γh −2
1 −1 2 −1
A= 2 ,
h . .. ..
. −1
−1 2
Trascurando il vettore f degli errori locali, si considera il problema
A v = µ v,
131
Quindi (84) diventa
S w = λ w + g, dove w = H −1 u, g = H −1 f ,
da cui
1
(S + F ) w = λ w, dove F =− g wT .
wT w
Dal teorema di Bauer-Fike segue che per ogni autovalore λ del problema
continuo esiste un autovalore µ della matrice S (o della A) tale che
kgk2 kf k2 h2 kτ k2 + 2h|σ0 |
|λ − µ| ≤ kF k2 ≤ = ≤
kwk2 kuk2 kuk2
e si ha
R1
kτ k22 1 0
(u(4) (x))2 dx 1 1
lim = 2 = `1 , lim = R1 = `2 ,
h→0 kuk2
R1
2 12 u2 (x) dx h→0 kuk22 2
u (x) dx
0 0
λ = µ + O(h).
(b) Per θ > 0 la relazione si dimostra nello stesso modo con cui è dimostrato
il Teor. 6.12 del libro Bini, ecc. Metodi numerici per l’algebra lineare. Per
θ < 0 si scambiano i ruoli degli αk e dei βk .
(c) Se γ < 0 si ha
S = T + v v T − z z T , dove T = tridiag − 1, 2, −1 ,
δ
√ 0
√
(1 − 2)/δ (1 − 2)/δ
0 0
p
v= e z= , δ = 2|γ|h,
.. ..
. .
0 0
Indichiamo con λ(S) gli autovalori di S, con λ(T ) gli autovalori di T e con
λ(V ) gli autovalori di V = T + v v T . Allora
(V ) (T ) (V ) (T )
λk−1 < λk < λk < λk+1
e
(V ) (S) (V ) (S)
λk−1 < λk < λk < λk+1
per cui
(T ) (V ) (S) (V ) (T )
λk−1 < λk−1 < λk < λk
< λk+1 .
(T )
Gli autovalori di T sono λk = (1/h2 ) 2 − 2 cos(khπ) ∼ (kπ)2 . Ne segue
che 2 2
(S)
(k − 1)π < λk < (k + 1)π .
132
Se γ > 0 si ha
S = T − v vT + z zT , dove
δ√ 0√
(−1 + 2)/δ
(−1 + 2)/δ
0 0
p
v= e z= , δ= 2γh,
.. ..
. .
0 0
e procedendo come sopra si ritrova la stessa relazione.
a sin ω + b cos ω = 0 e γb + aω = 0,
Risoluzione esercizio 8.
T
(a) Dalla relazione Cv = λv, con λ autovalore di C e v = v1 , v2 , . . . , vn
autovettore di C, si ottengono le equazioni
vn = λ v1 e vj−1 = λ vj per j = 2, . . . n.
∂u(xi , tj ) 1
= ui,j − ui,j−1 + σ(xi , ηj ) ∆t
∂t ∆t
133
e
∂ 2 u(xi , tj ) 1 h
= θ(ui−1,j − 2ui,j + ui+1,j )
∂x2 ∆2x
i
+(1 − θ)(ui−1,j−1 − 2ui,j−1 + ui+1,j−1 ) + ν(ξi , tj )∆2x ,
Nell’ipotesi che la soluzione u(x, t) sia derivabile almeno 4 volte con conti-
nuità nelle variabili x e t, le quantità |σ(xi , ηj )|, |τ (ξi , tj )| e |τ (ξi , tj−1 )| so-
no limitate superiormente, quindi l’errore locale `i,j della discretizzazione
risulta maggiorato da una costante per ∆2x + ∆t .
vm vn,j
134
(c) Posto V = A−1 B è
A I
1 A −V I
Am,n =
∆t
.. .. ..
. . .
A −V I
Quindi
A−1
I
V I A−1
V2 A−1
A−1 = − ∆t
V I
.
m,n
.. .. .. ..
. . . .
V m−1 ... V2 V I A−1
Condizione necessaria di stabilità è ρ(V ) < 1. La matrice A può essere
scritta come A = (1+2rθ)I−rθ (C+C T ). Si nota che la matrice C soddisfa
alla condizione C T C = CC T , quindi è normale e diagonalizzabile per
trasformazioni unitarie, cioè C = F diag λ1 , . . . , λn F H . Per quanto visto
al punto (a) gli autovalori λi sono le radici n-esime dell’unità. Ne segue
(A)
che gli autovalori della A sono della forma µi = 1 + 2rθ − rθ(λi + λi ) =
1 + 2rθ − 2rθRe(λi ). In modo analogo si vede che gli autovalori della B
(B)
sono della forma µi = 1−2r(1−θ)+2r(1−θ)Re(λi ), e che gli autovalori
della V sono della forma
(V ) 1 − 2r(1 − θ) + 2r(1 − θ)Re(λi ) 1 − 2r(1 − θ)zi 2rzi
µi = = = 1− ,
1 + 2rθ − 2rθRe(λi ) 1 + 2rθzi 1 + 2rθzi
dove zi = 1 − Re(λi ) è tale che 0 ≤ zi ≤ 2. Imponendo la condizione che
(V )
|µi | < 1 per ogni i, si ha θ > 1/2−1/(2rzi ). Se si assume θ > 1/2 risulta
ρ(V ) < 1. Tale condizione è necessaria per la stabilità incondizionata.
(d) Posto = u − v, è
Am,n = `,
dove ` è il vettore degli errori locali `i,j opportunamente ordinati. Per la
norma ∞ si ha
m
X m
X
kA−1
n,m k∞ ≤ ∆t kV −m
k∞ kA −1
k∞ ≤ ∆t kV km
∞ kA
−1
k∞ .
j=0 j=0
135
quindi
4π 2 1
kk∞ = kA−1 2
n,m k ∞ k`k∞ ≤ δ (k∆ x k∞ + k∆ t k ∞ ≤ δ + ,
(n + 1)2 m
per un opportuno δ, indipendente da n e m.
Risoluzione esercizio 9.
Am,n u = f + τ ,
136
Rimuovendo l’errore locale di discretizzazione, il sistema da risolvere ri-
sulta
Am,n v = f ,
e la soluzione è
Per studiare la stabilità occorre vedere come sono fatti gli autovalori della
C. Scriviamo C = I + B, dove B soddisfa alla condizione B T = −B.
Allora B H B = BB H = −B 2 , cioè B è una matrice normale, quindi
diagonalizzabile con matrici unitarie
B = U ΛU H , B H B = U ΛΛU H , B 2 = U Λ2 U H .
137
(d) Se a non è costante, ma è una funzione di x, si suppone che r verifichi
r max |a(x)| < 1/2.
x∈[0,2π]
T −1
−T −2 T −1
−3 −2 −1
−1
An,m = ∆t
T −T T
.. . . . .
. . .
m−1 −m −3 −2 −1
(−1) T ... T −T T
138
La matrice T è tridiagonale con autovalori λi = −(1+2r)+2r cos(iπ/(n+
1)). Il minimo modulo è |λ1 | = 1 + 2r (1 − cos(π/(n + 1))) ∼ 1 + rπ 2 /(n +
1)2 > 1. Quindi ρ(T −1 ) < 1 qualunque sia r > 0, e i raggi spettrali delle
successive potenze di T −1 convergono a zero. Per la norma ∞ si ha
m
X m
X
kA−1
n,m k∞ ≤ ∆t kT −m k∞ ≤ ∆t kT −1 km
∞.
j=1 j=1
si ha
A−1 ≥ O e A−1 e ≤ e,
quindi kT −1 k∞ < 1. Poiché ∆t = tmax /m, risulta che kA−1 n,m k∞ è supe-
riormente limitata da una costante qualunque sia m e n. Ciò garantisce la
stabilità e la convergenza dello schema alle differenze proposto qualunque
sia r.
(a2) Posto
si suppone che L∆ (ui,j ) ≥ 0 e che esista un punto interno ui,j = max uh,k .
h,k
Allora
1
r ui−1,j + r ui+1,j + ui,j−1 ≥ ui,j .
1 + 2r
Perciò ui,j risulta maggiorato da una combinazione lineare convessa di tre
valori adiacenti, quindi ui,j = ui−1,j = ui+1,j = ui,j−1 . Se si esclude il
caso che tutti i valori ui,j siano uguali a quelli sul bordo (e in tal caso il
massimo verrebbe comunque assunto sul bordo), ne segue che il massimo
non può essere assunto in un punto interno.
(a3) Facendo tendere a 0 i passi di discretizzazione risulta che se L[u(x, t)] ≥ 0
per (x, t) appartenente al dominio dato, allora per il massimo di u(x, t)
viene assunto sul bordo.
(b) Posto
139
(c) Con la formula indicata si ottiene
1 2∆2
2r ui−1,j − 2ui,j + ui+1,j − ui,j+1 − ui,j−1 + x τi,j −2∆2t σ
ei,j = 0,
∆t γ
da cui, rimuovendo l’errore locale, si ottiene il sistema
An,m v = f ,
dove
I
−T I
1
−I −T I
An,m = , T = tridiag(2r, −4r, 2r).
∆t
.. .. ..
. . .
−I −T I
Questa matrice può essere vista come bidiagonale inferiore a blocchi della
forma
A
−B A
I −I −T
, dove A= , B= .
.. .. −T I −I
. .
−B A
I −I −T I T
Posto V = A−1 B = =− è
T I −I T I + T2
−1
I A
V I A−1
V2 A−1
−1
Am,n = ∆t V I
.
.. .. .. ..
. . . .
V m−1 ... V2 V I A−1
Indicati con λi gli autovalori della
p tridiagonale T , gli autovalori di V hanno
modulo |µi | = 1 + λ2i /2 ± |λi | λ2i + 4/2. Quindi ρ(V ) > 1. Ne segue che
A−1
m,n non converge, indipendentemente da r. Il metodo ottenuto non
appare essere stabile.
(d) Combinando le due formule
∆2t 00 ∆3
f (x, t − ∆t ) = f (x, t) − ∆t f 0 (x, t) + f (x, t) − t f 000 (x, ξ)
2 6
e
4∆2t 00 8∆3t 000
f (x, t − 2∆t ) = f (x, t) − 2∆t f 0 (x, t) + f (x, t) − f (x, η)
2 6
si ottiene
1 ∆2
f 0 (x, t) = −4f (x, t−∆t )+f (x, t−2∆t )+3f (x, t) + t 2f 000 (x, η)+f 000 (x, ξ)
2∆t 3
140
(e) Usando questa formula per la discretizzazione risulta
1 2∆2
2r ui−1,j − 2ui,j + ui+1,j − 3ui,j − 4ui,j−1 + ui,j−2 + x τi,j +∆2t σi,j = 0,
∆t γ
da cui, rimuovendo l’errore locale, si ottiene il sistema
An,m v = f ,
dove
T
4I T
1
−I 4I T
An,m = , T = tridiag(2r, −(3 + 4r), 2r).
∆t
.. .. ..
. . .
−I 4I T
141
da cui
1 h i
bi−1,j ui−1,j − 1+bi−1,j +bi,j ui,j +bi,j ui+1,j +ui,j−1 +∆2x τi,j −∆t σi,j = 0
∆t
Le condizioni al bordo danno u(i, 0) = f (xi ), u(0, j) = α(tj ), u(n + 1, j) =
β(tj ). Con il consueto ordinamento dei nodi, il sistema precedente viene
scritto nella forma
Am,n u = f − ∆2x τ + ∆t σ,
dove
−T1
1 I −T2
Am,n = ,
∆t
.. ..
. .
I −Tm
in cui i blocchi Tj sono matrici di ordine n
1 + b0,j + b1,j −b1,j
−b 1,j 1 + b 1,j + b2,j −b2,j
Tj = .
. .. .. ..
. .
−bn−1,j 1 + bn−1,j + bn,j
Si rimuove l’errore locale e si risolve il sistema
Am,n v = f .
T1−1
T2−1 T1−1 T2−1
−1 −1 −1 −1 −1 −1
A−1 T3 T2 T1 T3 T2 T3
m,n = −∆t
.. ..
. .
−1
Tm · · · T2−1 T1−1 ··· −1 −1
Tm Tm−1 −1
Tm
e si ha
k
Y
X k
kA−1
m,n k∞ ≤ ∆t max Tj−1
.
k=1,...,m ∞
i=1 j=i
142
Le Tj sono M-matrici, quindi Tj−1 ≥ O. Inoltre Tj e ≥ e, in cui e è il
vettore le cui componenti sono uguali a 1. Quindi Tj−1 e ≤ e, da cui segue
che kTj−1 k∞ < 1 per ogni j. Poiché ∆t = T /m, risulta che kA−1m,n k∞ è su-
periormente limitata da una costante qualunque sia m e n. Ciò garantisce
la stabilità e la convergenza dello schema alle differenze proposto.
(b) Approssimando la derivata temporale in (xi , tj + ∆t /2) con la media
aritmetica delle approssimazioni delle derivate spaziali nei punti (xi , tj ) e
(xi , tj+1 ) si ha, ponendo bi,j = b(xi + ∆x /2, tj ) ∆t /(2∆2x )
1 1 h
ui,j+1 − ui,j = bi,j ui+1,j − ui,j − bi−1,j ui,j − ui−1,j
∆t ∆t
i
+bi,j+1 ui+1,j+1 − ui,j+1 − bi−1,j+1 ui,j+1 − ui−1,j+1 = O(∆2x ) + O(∆2t )
143
dove Vj = A−1
j+1 Bj , per j = 1, . . . , m − 1. Si ha
A−1
I 1
V1−1 I A−1
2
A−1
m,n = ∆t ,
.. ..
. .
−1
Vm−1 · · · V1−1 ··· −1
Vm−1 I A−1
m
(c) Sia b(x, t) = 1/γ > 0. L’equazione data può allora essere scritta nella
forma standard
∂ 2 u(x, t) ∂u(x, t)
−γ = 0.
∂x2 ∂t
Le condizioni al contorno di Neumann vengono approssimate con le for-
mule
u1,j − u0,j un+1,j − un,j
= α + σ1,j ∆2x , = β + σn,j ∆2x ,
∆x ∆x
∂u(x, t − ∆t /2) 1
u(x, t) − u(x, t − ∆t ) + σ(x, η) ∆2t
=
∂t ∆t
144
dove ∆2x τ (ξ1 , t) e ∆2x τ (ξ2 , t) sono gli errori locali dovuti alla discretizza-
∂ 2 u(x, t) ∂ 2 u(x, t − ∆t /2)
zione di e .
∂x2 ∂x2
Se θ 6= 1/2, l’errore locale della discretizzazione in (xi , tj ) è della forma
siano
A = I + rθ T, A
e = I + rθ Te, B = I − r(1 − θ) T, e = I − r(1 − θ) Te.
A
−B
e A
e
1 −Be Ae
Lm,n = − ,
∆t
.. ..
. .
−B
e A
e
um un,j
Am,n v = f .
145
Quindi
A−1
I
V I A−1
V2 A−1
A−1 = − ∆t
V I
.
m,n
.. .. .. ..
. . . .
V m−1 ... V2 V I A−1
Condizione necessaria di stabilità è ρ(V ) < 1. Poiché
A = trid(−rθ, 1 + 2rθ, −rθ), B = trid(r(1 − θ), 1 − 2r(1 − θ), r(1 − θ)),
gli autovalori di V sono
1 − 2r(1 − θ) + 2r(1 − θ) cos(kπ/(n + 1))
µk = , k = 1, . . . , n.
1 + 2rθ − 2rθ cos(kπ/(n + 1))
Imponendo la condizione che |µk | < 1, poiché il denominatore è sempre
positivo, si ottengono le due disequazioni
r(1 − 2θ)(1 − cos(kπ/(n + 1))) < 1, r(1 − cos(kπ/(n + 1))) > 0.
La seconda disuguaglianza è sempre verificata. Se θ = 1/2 (caso di Crank-
Nicolson) anche la prima disuguaglianza è verificata per ogni r. Se invece
θ 6= 1/2 esistono indici k per cui la prima disuguaglianza non è verificata
per ogni r. Quindi non esistono valori di θ 6= 1/2 per cui |µk | < 1 per ogni
k e r. Ne segue che lo schema non è incondizionatamente stabile.
(d) Dalla (86), trascurando l’errore locale si ha
∆t Lm,n (u) = − 1 + 2rθ ui,j + 1 − 2r(1 − θ) ui,j−1
+rθ ui−1,j + ui+1,j + r(1 − θ) ui−1,j−1 + ui+1,j−1 .
Se Lm,n (u) ≥ 0 risulta
1 − 2r(1 − θ) ui,j−1 + rθ ui−1,j + ui+1,j + r(1 − θ) ui−1,j−1 + ui+1,j−1
ui,j ≤ .
1 + 2rθ
Se 2r(1 − θ) < 1, tutti i coefficienti al secondo membro sono positivi e la
loro somma dà 1, per cui la quantità a secondo membro è uguale alla media
pesata delle componenti di u che stanno sullo stencil attorno a ui,j . Se
ui,j con indici i 6= {0, n + 1} e j 6= {0, m + 1} fosse la massima componente
di u, ne seguirebbe che tutte le componenti di u che stanno sullo stencil
attorno a ui,j avrebbero lo stesso valore, e questo è assurdo. Quindi la
massima componente di u si trova sul bordo.
i2 ∆t i2 ∆2x
(e) Si considera il vettore w di componenti wi,j = = , per i, j =
2r 2γ
0, . . . , n + 1. Risulta
1
− 1 + 2rθ i2 + 1 − 2r(1 − θ) i2 + rθ (i − 1)2 + (i + 1)2
Lm,n (w) =
2r i
+r(1 − θ) (i − 1)2 + (i + 1)2 = 1.
146
(m,n)
Si indica con (m,n) il vettore dell’errore globale, di componenti i,j =
(m,n) (m,n)
vi,j − ui,j , i = 1, . . . , n e j = 1, . . . , m, e con b
il vettore orlato
con gli zeri. Allora
(m,n) ) = Am,n (m,n) = `,
Lm,n (b
147
3. Usando la formula dei 3 punti per discretizzare la condizione al contorno
sulla derivata seconda nell’estremo sinistro si hanno le equazioni
u0 = 0
u1 − 2u0 + u−1 = h4 σ0
148
Integrando
RxRs una seconda volta si ottiene la forma generale della soluzione u(x) =
0 0
f (t)dt ds + c1 x + c2. Imponendo le condizioni al contorno si ottiene c2 = 0
e, dall’espressione di u0 (x),
Z 1
c1 (1 − α) = α f (x)dx
0
Rx
che ha soluzione se α 6= 1. Se α = 1 e se 0 f (t)dt = 0 ci sono infinite soluzioni.
Per quanto riguarda lo schema alle differenze, le condizioni che derivano
dall’equazione differenziale sono: Ln u = f + h2 τ . Le condizioni al contorno
danno u0 = 0, u1 − u0 − α(un − un−1 ) = −h2 σ0 − h2 ασn . Poiché u0 = 0
quest’ultima può essere scritta come − h12 (−u1 − αun−1 + αun ) = σ0 + ασn . Si
ottiene allora il sistema
−1
2 u1 f1 τ1 0
1 2 −1 u2 f2 τ2 0
1
− 2 .. .. .. .. .. 2 .. ..
= +h +
h . . .
. . . .
−1 2 −1 un−1 fn−1 τn−1 0
−1 −α α un fn τn σ0 + ασn
La matrice del sistema può essere scritta nella forma An = − h12 Bn con
Bn = trid(−1, 2, −1) − en (e1 − (α − 1)en−1 + (α − 2)en )T dove si è indicata con
ei la i-esima colonna della matrice identica n × n.
Denotando Hn = trid(−1, 2, −1) si ha quindi Bn = Hn − vwT dove v = en ,
w = e1 −(α−1)en−1 +(α−2)en . Applicando la formula di Sherman-Woodbury-
Morrison si ha Bn−1 = Hn−1 + 1−θ 1
Hn−1 uv T Hn−1 , con θ = uT Hn−1 w. Sapendo che
−1 −1 1 1
Hn u = Hn en = n+1 (1, 2, . . . , n)T , si ha θ = n+1 (1+(α−1)(n−1)+(2−α)n)
che è diverso da 1 per α 6= 1 per cui Bn è invertibile. Inoltre vale Bn−1 en =.... è
limitato in norma infinito per cui A−1n σ ha norma infinito limitata superiormente
da una costante γ per h2 . Infine dalla formula di SWM si deduce che kA−1 n k∞ ≤
1
h2 kHn −1k∞ + h2 kI − 1−θ vwT )k∞ ed entrambe le due norme sono limitate
superiormente da una costante. R1
Se α = 1 la soluzione esiste solo se 0 f (x)dx = 0 e in questo caso ne
esistono infinite. Se α = 1 la matrice An è singolare, come si può vedere
calcolando il determinante con lo sviluppo di Laplace sull’ultima riga ricordando
che det trid(−1, 2, −1) = n + 1, oppure osservando che il vettore (1, 1, . . . , 1)
sta nel nucleo sinistro di An . Per risolvereR col metodo delle differenze finite
1 Pn
l’equazione differenziale si osserva che poiché 0 f (x)dx = 0 allora i=1 f (xi ) →
0
Pper h → 0. Scriviamo allora il vettore f come f = b + dove b = (bi ),
n
i=1 i = 0 e è infinitesimo con h. Quindi il sistema singolare An u = b ha
b
soluzione. Rimuovendo l’ultima equazione, che dipende linearmente dalle altre
e l’ultima incognita, si ottiene il sistema (n − 1) × (n − 1) trid(−1, 2, −1)b u=b b
che è risolubile ed ha matrice con inversa a norma limitata. Lo schema alle
differenze fornisce quindi l’approssimazione di una soluzione.
149
a) Si applica il teorema del mimimax nella versione maxmin e si ottiene
xT Ax xT Ax
αi = max min T
= min
U, dim(U )=i x∈U , x6=0 x x b, x6=0 xT x
x∈U
xT Dx xT Bx
= min ( + T )
x∈U
b, x6=0 xT x x x
xT Bx xT Bx
≤ max dj + min T
≤ max dj + max min T
j x∈U
b, x6=0 x x j U , dim(U )=i x∈U , x6=0 x x
= max dj + βi
j
dove
2 −1 (n)
−1 2 −1 f (x1 )
(n)
f (x2 )
1 .. .. ..
An = 2 . . . +
..
h .. ..
.
. . −1 (n)
f (xn )
−1 2
(n) (n)
e dove b(n) = (bi ), bi = g(xi ). c) Per dimostrare la stabilità in norma 2
basta dimostrare che esiste una costante che maggiora kA−1 n k2 per ogni n.
Poiché An è simmetrica allora kAn k2 = 1/ minj |λj (An )|. La matrice An si
può scrivere come An = Bn + Dn dove An = h12 tridiag(−1, 2, −1) mentre Dn =
(n) (n)
diag(f (x1 ), . . . , f (xn )). Inoltre dalla teoria sappiamo che Bn ha autovalori
(n)
βi = 2(n + 1)2 (1 − cos(πxi )) > 0, i = 1, 2, . . . , n. I due più piccoli sono β1 e
β2 li possiamo approssimare con lo sviluppo in serie del coseno. Vale quindi
β1 = π 2 + O(h2 ), β2 = 4π 2 + O(h2 ).
Sia α = min f (x). Allora, se α > −π 2 , per il punto a), per n sufficientemente
grande si ottiene che l’autovalore di minimo modulo di A è limitato dal basso da
150
|β1 + α|, che per n → ∞ tende a π 2 + α > 0. Per cui limn kA−1 2
n k2 ≤ 1/(π + α)
−1
e ne segue che kAn k2 è limitata superiormente da una costante per ogni n.
(n) 2 (n)
d) Se f (0) = −π 2 allora f (x1 ) = −π 2 + hf 0 (0) + h2 f 00 (ξ) con 0 < ξ < x1 .
(n) (n)
Questo implica che per n sufficientemente grande mini f (xi ) = f (x1 ) e quindi
(n)
l’autovalore più piccolo in modulo di An è limitato dal basso da h−1 |f 0 (x1 )| +
2 0 −1 −1
O(h ). Per cui se f (0) 6= 0 si ha kAn k2 è limitata dall’alto da O(h ) e quindi
non possiamo concludere con la stabilità in norma √ 2. Però l’errore globale
en = h2 A−1
n nτ misurato in norma kvk := kvk 2 / n è limitato da
ken k ≤ kA−1
n k2 kτn k ≤ O(h
−1 2
h kτn k) = O(hkτn k),
151
dove u = (ui ), v = (vi ), f = (fi ), g = (gi ), σ = (σi ), τ = (τi ) e H è la matrice
tridiagonale
0 1
..
−1 0 .
H=
.. ..
. . 1
−1 0
Il sistema ottenuto rimuovendo l’errore locale h2 τ e h2 σ diventa
û f
An =
v̂ g
h 1
i
I 2h H
con An = 1 , per cui l’errore globale (u , v ) = (û, v̂) − (u, v) risolve
2h H I
il sistema
h2 τ
u
An =
v h2 η
Per verificare la stabilità in norma k · k dobbiamo dimostrare che la matrice
kA−1
n k è limitata superiormente da una costante.
Mostriamo questa proprietà in due modi diversi.
Primo approccio: scriviamo la fattorizzazione LU di An
1
I 0 I 2h H
An = 1
2h H I 0 I − 4h1 2 H 2
da cui si ha
1
H(I − 4h1 2 H 2 )−1
I − 2h I 0
A−1 =
n 0 (I − 4h1 2 H 2 )−1 1
− 2h H I
1 1 1
(4I − 2 H 2 ) = (
4 h 4
Secondo approccio:
Vale
1
I+ 2h H 0 T 1 I I
An = S 1 S , S=√
0 I− 2h H 2 I −I
152
sotto-sotto diagonale. per mutando righe e colonne di H H con la permutazione
pari/dispari si ottiene una matrice diagonale a blocchi in cui i blocchi differiscono
dalla matrice tridiag(1, 2, 1) per un elelemento di posto (1, 1) (oppure di posto
(n/2, n/2) che vale 1. Tale matrice è stata studiata nel corso e ....
153
bn + Fbn )û(n) = λû(n) , dove û(n) = (u0 , . . . , un+1 ),
Si ottiene allora l’espressione (B
Fbn = Fbn0 + Fbn00 ,
2 −2
−1 2 −1
h2
Fbn0 = τ̂ (n) û(n)T ,
.. ..
û(n)T û(n)
1 −1 . .
Bn = 2
b ,
h .. ..
. . −1 Fbn00 = h
(−σ̂0 e1 + σ̂n+1 en+2 )û(n)T
û(n)T û(n)
−1 2 −1
−2 2
γ̂h3/2 .
d) Sia Bn v (n) = µv (n) , moltiplicando la relazione (Bn + Fn )u(n) = λu(n)
a sinistra per v (n)T , tenendo conto della simmetria di Bn , si ha µv (n)T u(n) +
v (n)T Fn u(n) = λv (n)T u(n) , da cui λ − µ = v (n)T Fn u(n) /(v (n)T u(n) ).
Poiché per il punto c) e per i risultati visti a lezione la successione kv (n) −
u(n) k2 /kv (n) k2 converge a 0 sotto una opportuna normalizzazione dei due vet-
tori, possiamo scrivere |λ − µ| ≤ θ|u(n)T Fn u(n) /(u(n)T u(n) )| per una opportuna
costante θ.
Nel caso di Fn = Fn00 si ha
|u(n)T Fn00 u(n) /(u(n)T u(n) )| = |u(n)T (−σ0 e1 + σn+1 en )/(u(n)T u(n) )|
1
= (| − u(0)σ0 + u(1)σn+1 |/(ku(n) k22 /(n + 1))
n+1
≤ θ0 h
per una opportuna costante θ0 poiché la successione ku(n) k22 /(n + 1) converge a
Rb
a
u(x)2 dx.
In modo analogo si procede per Fbn .
154
Risoluzione esercizio 18. Vale A = a(I − B) dove B = a1 ((1 − )Z + (1 +
)Z T ) ≥ 0. Supponiamo −1 < < 1. Essendo B ≥ 0 la somma dei moduli
degli elementi su ogni riga dalla seconda alla penultima vale 2/a mentre sulla
prima e ultima vale 1/a quindi per il terzo teorema di Gerschgorin la matrice
ha autovalori di moduloP∞ minore di 2/a ≤ 1. Allora limk→∞ B k = 0. Si può
−1
quindi scrivere A = i=0 B i ≥ 0. Poiché kAk∞ = kAT k1 , si ottiene la stessa
limitazione per la norma 1 essendo AT la matrice ottenuta da A cambiando
segno ad .
Essendo A−1P≥ 0 vale kA−1 k∞ = kA−1 ek∞ , con e = (1, . . . , 1)T . Per cui
∞
kA k∞ ≤ a−1 i=0 kBk∞ = a−1 /(1 − 2/a) = 1/(a − 2)
−1
insieme i pezzi si ha
n−1
−1 1 1+ 2
kA k∞ ≤ 2 .
1−
b) Discretizzando l’intervallo spaziale con xi = i∆x , i = 0, . . . , n + 1, ∆x =
1/(n + 1), e l’intervallo temporale con tj = j∆t , j = 0, 1, . . . , m, ∆t = 1/m, si
ottiene un sistema lineare in cui la matrice Tm,n è data da
A
−I A
1 −I A
b 1 b ∆t
Tm,n = − , A = γr tridm (−1+ ∆x , 2+ , −1− ∆x ), r=
∆t 2 r 2 γ∆2x
.. ..
. .
−I A
il termine noto, oltre alla parte relativa alle condizioni al bordo, contiene gli
errori locali di discretizzazione, che sono O(∆2x + ∆t ).
−1
Per la stabilità e quindi per la convergenza, basta dimostrare che ∆t kTm,n k∞
è limitata superiormente da una costante. Vale
−1
A
A−2 A−1
−1
∆t Tm,n = ∆t .
.. . .. . ..
−m −2 −1
A ... A A
155
La sua norma infinito è presa sull’ultima riga a blocchi. Dal punto a) segue la
non negatività di kA−1 k e il fatto che kA−1 k∞ ≤ γr
1 1
2+1/r−2 = 1
Pm n
Per cui kTm,n k∞ = k i=1 A−i e)k∞ ≤ i=1 kA−i ek∞ . Basta quindi va-
P
−i −1
lutare kA k∞ . Per il punto a) è kA k∞ ≤ 1r 2−a 2
dove a = 2 + 1r . Da
−1
cuikA k∞ ≤ 1.
(n) (n)
dove h2 τu e h2 τv sono gli errori locali di discretizzazione e H = − h12 tridn (−1, 2, −1),
Da = diag(a(x1 ), . . . , a(xn )). Da cui
" #
(n)
H u(n)
(n)
0 2 τv u
+h (n) = λ
Da H 0 v (n) Da τu v (n)
156
0 0
√ come (x − x̂)a (ξ) per un opportuno ξ, se a (x̂) 6= 0 allora il cond di D
scritti
è O( h) per cui la convergenza è ancora garantita ma di ordine più basso. In
generale, se a(x̂) = a0 (x̂) = · · · = a(k−1) (x̂) = 0, a(k) (x̂) 6= 0, dallo sviluppo in
serie di a(x) in x̂ l’ordine di convergenza è h2−k/2 per k = 1, 2, 3.
Una analisi leggermente diversa consiste nell’applicare la trasformazione con
matrice diagonale direttamente alla (1). In questo modo il problema può essere
riscritto come (n) (n)
0 HD u u
+ h2 Fb = λ
DH 0 v (n) v (n)
con " #
(n)
1 τv (n)T
F = (n)T (n)
b
(n)T (n) −1 (n) u v (n)T D
u u +v v D τu
α=γ=0
e
u00 (x) = v(x), u(0) = 0, u(1) = 0.
con il metodo delle differenze finite si ha
157
Basta quindi studiare la stabilità di An . Vale
−1
Hn−1 Kn−1
−1 Hn
An =
0 Kn−1
Per cui kAn k∞ ≤ kHn−1 k∞ +kHn−1 k∞ kKn−1 k∞ . Poiché sia kHn−1 k∞ che kKn−1 k∞
sono limitate superiormente da una costante ne segue che kAn k∞ è limitata su-
periormente da una costante e il metodo è quindi stabile e convergente di ordine
h2 .
In modo equivalente il problema può essere trattato come la composizione di
due discretizzazioni. Precisamente denotando û(n) e v̂ (n) le soluzioni dei sistemi
Si ha
Risulta quindi
1 h2 (4)
f 00 (x) = (f (x − h) − 2f (x) + f (x + h)) − u (x) + h4 τ (89)
h2 12
1
con |τ | ≤ 360 max |f (6) (x)|.
Derivando la (74) rispetto a t, scambiando l’ordine di derivazione nel secondo
termine data la reolarità di u(x, t), si ha
∂ 2 u(x, t) ∂ 2 ∂u(x, t)
2
=γ 2
∂t ∂x ∂t
applicando la (74) a secondo membro si ottiene
∂ 2 u(x, t) ∂ 4 u(x, t)
2
= γ2 .
∂t ∂x4
158
Quindi, con la discretizzazione standard xi = i∆x , tj = j∆t , ∆x = 1/(n+1),
∆t = 1/m, ponendo ui,j = u(xi , tj ) si ha
∂ 4 u(x, t) 1
|(xi ,tj ) = 2 2 (ui,j−1 − 2ui,j + ui,j+1 ) + φi,j ∆2t ,
∂x4 γ ∆t
∂ 2 u(x, t) 1 1 ∆2x
|(x ,t ) = (ui−1,j − 2ui,j + ui+1,j ) − (ui,j−1 − 2ui,j + ui,j+1 )
∂x2 i j
∆2x 12γ 2 ∆2t
+τi,j ∆4x + ∆2x ∆2t φi,j
(90)
∂u(x, t)
|(xi ,tj ) = (ui,j+1 − ui,j−1 ))/(2∆t ) + σi,j ∆2t
∂t
per opportuni σi,j limitati in modulo da una costante.
Lo schema alle differenze ottenuto è dunque
1 γ
0= (ui,j+1 − ui,j−1 ) − 2 (ui−1,j − 2ui,j + ui+1,j )
2∆t ∆x
1 ∆2x
+ (ui,j−1 − 2ui,j + ui,j+1 )
12γ ∆2t
σi,j ∆2t − γτi,j ∆4x − γ∆2x ∆2t φi,j ,
l’errore locale è dato da σi,j ∆2t − γτi,j ∆4x − γ∆2x ∆2t φi,j e lo stencil è
0 1 0 0 0 0 2 0 1 0
1 γ ∆ x
0 0 0 − 2 1 −2 1 + 0 −2 0 .
2∆t ∆x 12γ∆2t
0 −1 0 0 0 0 0 1 0
159
La matrice del sistema è ∆1t A, dove A è triangolare a blocchi e tridiagonale
a blocchi con blocco diagonale A0 = (1/2 + 1/(6r))I, blocco sottodiagonale
A1 = trid(−r/2, r − 1/(3r), −r/2), e blocco √ sotto-sottodiagonale A2 = (−1/2 +
1/(6r))I. Si osserva che se 1/2 ≤ r ≤ 1/ 3 l’unico elemento positivo della
matrice è l’elemento diagonale. Inoltre la somma degli elementi è nulla per cui
vale il principio del massimo (la matrice è una M-matrice). Inoltre il vettore
w = (wi,j ), wi,j = ( 21 ∆2x i2 ) per i = 0, . . . , n + 1 viene trasformato dall’operatore
discreto nel vettore di tutti uni. Si può applicare un ragionamento analogo
a quello fatto per dimostrare la convergenza e stabilità nel caso del problema
modello per concludere che anche per questo schema c’è convergenza e stabilità.
In alternativa, si può partizionare la matrice A in blocchi di dimensione 2n
ottenendo una matrice bidiagonale a blocchi
B0
−B1 B0
1 . .. . ..
∆t
.
.. B
0
−B1 −B0
dove
A0 0 A2 A1
B0 = , B1 = −
A1 A0 0 A2
L’analisi viene completata con la tecnica usata nel corso per analizzare la di-
scretizzazione dell’equazione delle onde. Nel nostro caso, abbiamo in più le
proprietà di non negatività di B0−1 B1 che permettono di dare una limitazione
alla norma infinito della matrice inversa.
Scegliendo poi r = 1/3 tutto si semplifica poiché A2 = 0 e lo stencil diventa
1 0 1 0
∆t −1/6 −2/3 −1/6
La matrice del sistema è ∆1t A, dove A è bidiagonale a blocchi con blocco
diagonale I e blocco sottodiagonale −B con B = trid(1/6, 2/3, 1/6). La sua
inversa è
I
B I
A−1 = ∆t .
..
B I
B m−1 ... B I
Una condizione necessaria di stabilità è ρ(B) ≤ 1. Verifichiamola. Gli autovalori
di B sono 2/3 + 1/3 cos(πi/(n + 1)) per cui ρ(B) = 2/3 + 1/3 cos(π/(n + 1)) < 1.
La stabilità si può dimostrare in norma infinito. Essendo B ≥ 0 vale
kA−1 k∞ = kA−1 ek∞ con e = (1, . . . , 1)T . Inoltre kA−1 ek∞ viene presa sul-
l’ultima riga a blocchi di A−1 e vale
m−1
X
kA−1 ek∞ = ∆t k[B m−1 , . . . , B, I]ek∞ ≤ ∆t kBi k∞ = 1
i=0
160
essendo kBk∞ = 1 e ∆t = 1/m.
La norma infinito dell’errore globale si maggiora moltiplicando la norma
infinito dell’errore locale per la norma infinito della matrice inversa.
161
pesata dei valori della funzione ui,j nei 9 nodi contigui essendo b + c = a/4. Per
cui se ui,j fosse punto di massimo, risulterebbe ui,j ≥ ui+r,j+s con r, s = −1, 0, 1.
risulterebbe allora ui,j maggiore o uguale alla media aritmetica dei punti vicini.
Ma dovendo essere minore o uguale, risulta uguale ai valori contigui. Il massimo
allora è preso anche nei punti contigui. Induttivamente si arriva al bordo.
Per dimostrare la convergenza e la stabilità in norma infinito si segue lo
stesso ragionamento fatto nel corso. Occorre per questo individuare una matrice
W = (wi,j ) ≥ 0 per cui Ln,n (W ) = 1. Sia wi,j = 12 h2 i2 .
Applicando l’operatore discreto definito dallo stencil a W si ottiene una
combinazione lineare della funzione identicamente uguale a 1 con peso a/4 e b.
Quindi la funzione 1.
∂ ∂u(x + 2kπ
∂t + a = f (x + 2kπ) = f (x)
u(x + 2kπ) ∂x
e quindi anche u(x + 2kπ, t) è soluzione, quindi e(x, t) = u(x, t) − u(x + 2kπ, t)
risolve l’equazione omogenea
∂e(x, t) ∂e(x, t)
+a =0
∂x ∂t
con la condizione e(x, 0) = 0. Poichè e(x, t) è costante sulle rette parallele al
vettore (1, a), e e(x, 0) = 0, allora risulta e(x, t) identicamente nulla e quindi
u(x, t) = u(x + 2kπ, t).
162
di n componenti u0,j , . . . , un−1,j , e con u il vettore di mn componenti formato
dai blocchi u(j) per j = 1, 1, . . . , m si ha il sistema
dove
0 −8 1 0 ... 0 −1 8
.. .. ..
. . .
8 0 −8 −1
.. .. ..
−1
8 . . . 0
.. .. .. .. .. .. .
a . . . . . . .
0 .
H= .
12∆x
.. ..
.
..
.
..
.
..
.
..
.
..
.
0
.. .. ..
0 . . . −8 1
.. .. ..
1 . . . 8 0 −8
−8 1 0 ... 0 −1 8 0
La matrice inversa di A è
I
C I
2
A−1 = ∆t C C I , C = ∆t B
.. .. .. ..
. . . .
C m−1 ... C2 C I
a∆t
Vale C = ∆t B = ∆t (A + H) = I + 12∆ x
S con S matrice antisimmetrica. Poiché
una matrice antisimmetrica è diagonalizzabile e ha autovalori immaginari puri
e S non è identicamente nulla, la matrice C avrà autovalori del tipo 1 + iλj
con λj ∈ R,q e λj 6= 0 per almeno un λj , dove i è l’unità immaginaria. Per cui
|1 + iλj | = 1 + λ2j > 1, essendo λj 6= 0 per almeno un autovalore, ne segue
ρ(C) > 1 e non c’è stabilità.
Scegliendo una differenza all’indietro per discretizzare l’equazione si ottie-
ne una matrice A che ha il blocco sottodiagonale uguale a − ∆1t I e il blocco
diagonale uguale a ....
163
a) Vale
du(x + v1 t, y + v2 t) ∂u(x, y) ∂u(x, y)
= v1 + v2
dt
t=0 ∂x ∂y
per cui derivando una seconda volta e scambiando l’ordine di derivazione essendo
u(x, y) sufficientemente regolare si ha
d2 u(x + v1 t, y + v2 t) ∂ 2 u(x, y)
∂u(x, y) ∂u(x, y)
2
= v12 + v22 + 2v1 v2 .
dt
t=0 ∂x ∂y ∂x∂y
d2 u(x + w1 t, y + w2 t) ∂ 2 u(x, y)
2 ∂u(x, y) 2 ∂u(x, y)
= w 1 + w2 + 2w1 w2
dt2
t=0 ∂x ∂y ∂x∂y
d2 u(x + v1 t, y + v2 t) d2 u(x + w1 t, y + w2 t)
+
dt2
t=0 dt2
t=0
∂ 2 u(x, y) ∂ 2 u(x, y)
= (v12 + w12 ) 2
+ (v22 + w22 )
∂x ∂y 2
2 2
1 ∂ u(x, y) 3 ∂ u(x, y)
= + .
2 ∂x2 2 ∂y 2
Da cui la proprietà richiesta
b) Usando la formula ottenuta e approssimando le derivate direzionali lungo
(v1 , v2 ) e lungo (w1 , w2 ) con la formula dei 3 punti con passo h si ottiene la
formula di cui al punto b).
c) Si numerino i segmenti orizzontali che contribuiscono a discretizzare il
rombo con i valori j = 0, 1, . . . , n + 1 partendo da quello più basso, a salire. Si
numerino i segmenti obliqui paralleli al lato sinistro con i valori i = 0, 1, . . . , n+1
a partire da quello più a sinistra. Si denoti con (xi,j , yi,j ) la coppia di coordinate
del punto del reticolo che sta sulla j-esima
√
riga orizzontale e sulla i-esima riga
obliqua per cui xi,j = 2j + +hi, yi,j = 23 jh. Si denoti infine ui,j = u(xi,j , yi,j ).
Applicando la formula di discretizzazione si ottiene allora
2
(−6ui,j +ui+1,j +ui−1,j +ui,j−1 +ui+1,j−1 +ui−1,j+1 +ui,j+1 ) = f (xi , yj )+h2 τi,j ,
3h2
per tutti i valori (i, j) corrispondenti ai punti interni, cioè per i, j = 1, . . . , n,
dove h2 τi,j è l’errore locale di discretizzazione.
c0) Poiché i punti interni si ottengono per i, j = 1, n sono n2 . I punti di
bordo si ottengono per i = 0, i = n + 1, j = 0, j = n + 1. Si osserva però che i
valori u0,0 e un+1,n+1 non intervengono in nessuna delle equazioni scritte sopra.
164
Quindi i punti di bordo sono m = 4n + 2. La matrice ha la forma
B
b A C
B A C
2 . . .
. . . . . .
3h2
B A C
B A C b
dove
−1 6 −1 1 1 0 0
.. .. .. .. .. .. . b
A= , B = C
b= , C = C . , B = .. C
b b
. . . . .
−1 6 −1 1 1 0 0
In particolare per n = 4 numerando i nodi per riga a partire dalla riga più bassa
e partendo dall’angolo in basso a sinistra che ha indice 0, a meno del fattore 3h2 2
si ha
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
7 1 1 1 a 1 1 1
8 1 1 1 a 1 1 1
9 1 1 1 a 1 1 1
10 1 1 1 a 1 1 1
13 1 1 1 a 1 1 1
14 1 1 1 a 1 1 1
15 1 1 1 a 1 1 1
16 1 1 1 a 1 1 1
19 1 1 1 a 1 1 1
20 1 1 1 a 1 1 1
21 1 1 1 a 1 1 1
22 1 1 1 a 1 1 1
dove per ragioni di spazio abbiamo indicato con a il valore di −6 e si sono messi
gli indici dei nodi (sulla prima riga) e dei nodi interni (sulla prima colonna). Si
osservi in particolare che il nodo di indice 0 (in basso a sinistra) e il nodo di
indice (n + 1)2 in alto a destra non hanno alcun ruolo non essendo connessi a
punti interni del dominio. Infatti i blocchi C b eB b hanno una colonna in meno
rispetto ai blocchi B e C.
c1) La matrice si ottiene dalla precedente cancellando le colonne relative ai
punti del bordo. Quindi ha la forma
A C
B A C
2 .. .. ..
A= 2
3h . . .
B A C
B A
dove
−6 1
1 1
1 −6 1
.. ..
A=
.. .. .. , B = CT =
. .
. . .
1 1
1 −6 1
1
1 −6
165
c2) Si procede come nel caso standard. Supponiamo che ui,j sia tale che
−6ui,j + ui+1,j + ui−1,j + ui,j−1 + ui+1,j−1 + ui−1,j+1 + ui,j+1 ≥ 0. Da questa
diseguaglianza segue che ui,j è minore o uguale alla media aritmetic dei 6 punti
contigui. Supponiamo che ui,j sia massimo, allora vale che ui,j è maggiore o
uguale dei punti contigui e quindi della loro media aritmetica. Ma allora il
valore di ui,j deve coincidere col valore dei punti contigui che quindi prendono
anch’essi il valore massimo. Riapplicando il ragionamento ai punti contigui si
arriva a toccare un punto del bordo. Per cui il massimo viene preso sul bordo.
c3) Si estende la dimostrazione del caso standard vista a lezione. Per questo è
necessario individuare un wi,j ≥ 0 tale che L[w] = 1. La funzione 12 x2 suggerisce
2 2
di scegliere wi,j = 21 x2i,j = 34 h 2i . Si verifica che
2 h2 3 2 h2 34
L[w]i,j = 2
(−6i2 + 2(i − 1)2 + 2(i + 1)2 + 2i2 ) = 2 4 = = 1.
3h 2 4 3h 2 43
c4) Per dimostrare la convergenza in norma 2 basta dimostrare la stabilità
in norma 2 e per questo basta far vedere che l’autovalore minimo della matrice
−A di cui al punto c1 è limitato inferiormente da una costante positiva. La
matrice si scrive come −A = − 3h2 2 (I ⊗ A − trid(B, 0, C)). Per i corollari del
teorema di Courant-Fischer, l’autovalore minimo della matrice −A è limitato
dal basso dalla somma degli autovalori minimi delle due matrici. Essi sono
2 2
3h2 (6 − 2 cos(π/(n + 1))) e µ > −4 3h2 (per il teorema di Gerschgorin). Per cui
2
λmin ≥ 3h2 (6 − 2 cos(π/(n + 1)) + µ) > 3h2 2 (2 − 2 cos(π/(n + 1))). Per n → ∞
questa quantità tende a 32 π 2 > 0 e si può procedere come nel caso standard.
c5) Per il dominio triangolare la matrice A è ancora tridiagonale a blocchi
dove i blocchi diagonali hanno dimensione pari a n, n−2, n−4, n−6, . . ., mentre i
blocchi sopra- e sotto-diagonali sono rettangolari. Per l’analisi in norma 2 basta
osservare che A è sottomatrice della matrice sul dominio trapezoidale. Quindi
la convergenza segue dai corollari del teorema del minimax. Situazione analoga
vale per la norma infinito.
d) Basta combinare linearmente le tre derivate seconde lungo v, w e lungo
l’asse x con coefficienti α(x, y), β(x, y) e γ(x, y), imporre che nella combinazione
lineare si cancelli la derivata mista e che i coefficienti delle derivate seconde
rispetto a x e y siano a(x, y) e b(x, y). Si ottiene un sistema lineare che permet-
te di scrivere α(x, y), β(x, y) e γ(x, y) in funzione di a(x, y) e b(x, y). Questo
produce una discretizzazione analoga a quella vista. Affinché valga il principio
del massimo discreto basta che nello stencil di discretizzazione i valori nei punti
A, B, C, D, E, F siano positivi e abbiano somma che coincida con l’opposto del
valore in O.
166
Discretizziamo le derivate con le formule classiche
∂2 1
2
u(x, t) = 2 (ui−1,j − 2ui,j + ui+1,j ) + τi,j ∆2x ,
∂x ∆x
∂ 1
u(x, t) = (ui,j − ui,j−1 ) + µi,j ∆t ,
∂t ∆t
∂ 1
u(x, t)|x=0 = (u1,j − u−1,j ) + σ0 ∆2x ,
∂x 2∆x
∂ 1
u(x, t)|x=1 = (un+1,j − un−1,j ) + σ0 ∆2x ,
∂x 2∆x
dove si è posto xi = ∆x i, ∆x = 1/n, tj = ∆t j, ∆t = T /m, ui,j = u(xi , tj ),
i = 0, . . . , n, j = 0, . . . , m, e le quantità τi,j , µi,j , σ0 , σ1 sono maggiorate in
modulo da una costante Γ.
In questo modo, si ha
−2
1 1 u−1,j
1 −2 1 u0,j
∂2
1
.. .. .. . 2 (j)
u(x, t)|x=xi ,t=tj = 2 . . . .. +∆x τ
∂x2 i=0,...,n ∆x
1 −2 1 un,j
1 −2 1 un+1,j
167
per cui l’errore globale i,j = ui,j − vi,j soddisfa
1 γ (j)
2
H(j) − ( − (j−1) ) = −∆t µ(j) − ∆2x τ (j) + 2σ0 ∆x e1 + 2σ1 ∆x en , j = 1, . . . , m,
∆x ∆t
(0) = 0.
dove si è posto (j) = (i,j )i=0,n , µ(j) = (µi,j )i=0,n , τ (j) = (τi,j )i=0,n . In questo
modo, moltiplicando tutto per −∆t /γ e ponendo r = ∆t /(γ∆2x ), A = I − rH si
ottiene che l’errore globale soddisfa a
A(j) −(j−1) = (2∆2t /γ)µ(j) +(2∆t ∆2x /γ)τ (j) −4σ0 (∆x ∆t /γ)e1 −4σ1 (∆x ∆t /γ)en , j = 1, . . . , T.
η (j) = (2∆2t /γ)µ(j) + (2∆t ∆2x /γ)τ (j) − 4σ0 (∆x ∆t /γ)e1 − 4σ1 (∆x ∆t /γ)en ,
A
−I A
M =
−I A .
. .. . ..
−I A
Per studiare la convergenza basta valutare kM −1 k per qualche norma indotta
k · k, dove −1
A
A−2 A−1
M −1 = .
.. . .. . ..
A−m ... A−2 A−1
Si osserva che A è una M-matrice dominante diagonale per cui A−1 > 0 e
kA k∞ = kA−1 ek∞ dove e = (1, . . . , 1)T ∈ Rn . Inoltre anche M −1 ≥ 0 e la sua
−1
168
2. Dalla relazione A(a, b) = B + U V T = LLT + U V T , essendo det B =
det L det LT = 1, segue A(a, b) = B(I + B −1 U V T ) da cui det A(a, b) = det(I +
B −1 U V T ) = det K con K = I2 + V T B −1 U . Calcoliamo K. Poiché L−1 è la
matrice triangolare inferiore con elementi uguali a 1, si ha
T −1 T −1 T −1 1 . . . 1 1 −1 n n − 1 ... 1
V B = V (L ) L = ( L =
0 ... 0 1 1 1 ... 1
3. Vale
Queste equazioni
α −1 costituiscono un sistema lineare nelle incognite c e d che ha
matrice 1−β 1 che ha determinante α + 1 − β. Per cui se β − α 6= 1 esiste ed
è unica una soluzione per ogni valore di f (x).
2’. Ponendo n intero positivo, h = 1/n, xi = ih per i = −1, 0, . . . , n, n + 1,
ui = u(xi ), fi = f (xi ), la discretizzazione con la formule dei 3 punti per la
derivata seconda dà
1
(−xi−1 + 2xi − xi+1 ) = f (xi ) + τi h2 , i = 0, 1, . . . , n
h2
169
dove |τi | ≤ γ, con γ costante positiva determinata dai valori derivate quarte
della soluzione u(x). Mentre la discretizzazione delle condizioni al contorno con
la formula centrata dà
1
u0 = α (un+1 − un−1 ) + h2 ασn ,
2h
1
un = β (u1 − u−1 ) + h2 βσ0
2h
dove |σn |, |σ0 | ≤ δ con δ costante positiva determinata dal valore delle derivate
terze di u(x). Le due espressioni si sintetizzano in forma matriciale come segue
u 0
0
ασn
0 2h2
αh 0 −αh −1
−1 2 −1 u0 f0
τ0 0
. . . ..
1 −1 2 −1
.
. .
. .
2 . 2 .
. . . = + h + h
2
h .. .. .. .. .. ... ...
. .
−1 2 −1 un fn
τn 0
βh 0 −βh 2h2 0 un+1 0 0 βσ0
La prima equazione può essere usata per rimuovere l’incognita un+1 dalla pe-
nultima equazione mentre l’ultima equazione può essere usata per rimuovere
l’incognita u−1 dalla seconda equazione. Procedendo in questo modo si ottiene
il sistema seguente di n equazioni nelle n incognite u0 , . . . , un
1
−1
1 βh u0 f0 τ0 σ0 /2
−1 2 −1 u1 f1 τ1 0
1 .. .. ..
.
.
2
.
..
. . .
.
.
=
.
.
+ h
.
.
+ h .
h2
−1 2 −1 un−1 fn−1 τn−1 0
− α1 h −1 1 un fn τn −σn /2
3’. Denotando con v = (v1 , . . . , vn ) la soluzione del sistema ottenuto dal
sistema precedente rimuovendo i vettori con gli errori locali e con gli errori di
discretizzazione delle condizioni al bordo, per l’errore globale = u−v si ottiene
il sistema
1
−1
1 βh 0 τ0 σ0 /2
−1 2 −1 1 τ1 0
1 . . .
..
2 ..
..
. . . = h + h (91)
h2
. . . .
.
.
−1 2 −1 n−1 τn−1 0
− α1 h −1 1 n τn −σn /2
che riscriviamo come An = h2 τ + hσ avendo indicato con An la matrice del
sistema (91) e con τ = (τi ), σ = (σ0 /2, 0, . . . , 0, σn /2)T .
Quindi per valutare l’errore globale basta valutare h2 A−1 −1
n τ + hAn σ.
Ponendo a = h/β, b = −h/α, abbiamo che la matrice An si può scrivere
come h12 A(a, b). Applichiamo allora i risultati della prima parte del compito per
dire che
A−1
n = h (B
2 −1
+ h2 U b K −1 Vb ).
170
Risulta allora
kA−1 2 2 b
n k∞ ≤ h kBk∞ + h kU k∞ kK
−1
k∞ kVb T k∞ .
Inoltre
kB −1 k∞ ≤ kL−1 k∞ k(L−1 )T k∞ = n2 ,
mentre kU b k∞ ≤ |b| + n|a| + 1 = 1/(n|α|) + 1/β + 1, è limitata superiormente da
una costante. Inoltre det K = a + b − (n − 1)ab = hαβ(α − β − (1 − 1/n)) e la
quantità |α − β − (1 − 1/n)| è limitata dal basso da una costante nelle ipotesi
di esistenza e unicità della soluzione cioeè α − β 6= 1.
Vale ancora
T
1 1 − (n − 1)b
1−a 1 − (n − 2)b
1
.. ..
K −1 V T = (92)
hαβ(α − β − (1 − 1/n))
. .
1 − (n − 2)a 1−b
1 − (n − 1)a 1
per cui
1
kK −1 V T k∞ ≤ max(n + |b|n(n − 1)/2, n + |a|n(n − 1)/2)
hαβ(α − β − (1 − 1/n))
n
= max(n + (n − 1)/(2|α|), n + (n − 1)/(2|β|)
1αβ(α − β − (1 − 1/n))
=O(n2 )
Riferimenti bibliografici
[1] D. Bini, M. Capovani, O. Menchi, Metodi Numerici per l’Algebra Lineare.
Zanichelli, Bologna, 1987.
[2] Garrett Birkhoff and Robert E. Lynch, Numerical Solution of Elliptic
Problems. SIAM, Philadelphia 1984.
171
[3] J.F. Botha and G.F Pinder, Fundamental Concepts in the Numerical
Solution of Differential Equations, John Wiley & Sons, 1983.
[4] Eugene Isaacson and Herbert Bishop Keller, Analysis of Numerical
Methods. John Wiley & Sons, Inc., New York, 1966.
[5] A. R. Mitchell and D.F. Griffiths, The Finite Difference Method in Partial
Differential Equations. John Wiley & Sons, New York 1980.
[6] Alfio Quarteroni and Alberto Valli, Numerical Approximation of Partial
Differential Equations. Springer Series in Computational Mathematics,
Berlin 1997.
172