Sei sulla pagina 1di 172

Risoluzione numerica di PDE

Dario A. Bini, Paola Boito, Beatrice Meini


12 maggio 2021

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 Ω

Procediamo allora alla seguente classificazione


Definizione 2 Se le funzioni A(x, y), B(x, y), C(x, y) sono tali che B 2 −4AC <
0 ∀ (x, y) ∈ Ω, l’equazione (1) è detta ellittica, se B 2 − 4AC = 0 ∀ (x, y) ∈ Ω,
l’equazione (1) è detta parabolica, se B 2 − 4AC > 0 ∀ (x, y) ∈ Ω, l’equazione
(1) è detta iperbolica.
In generale la natura dell’equazione può cambiare a seconda del punto (x, y)
considerato del 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

ed è approssimata da ∆u = 0, se u(x, y) “non è troppo sghemba”, cioè se le


derivate parziali prime di u(x, y) sono “abbastanza piccole” cosı̀ che l’errore
causato dal rimuovere i quadrati delle derivate prime è trascurabile.
Modelli tridimensionali dell’equazione di Laplace descrivono la pressione
u(x, y, z) di un gas nel generico punto (x, y, z) di un dominio Ω ⊂ R3 racchiuso
da un involucro ∂Ω
∂2u ∂2u ∂2u
+ 2 + 2 =0
∂x2 ∂y ∂z
con condizioni al contorno miste [2].
Altri modelli fisici governati dall’equazione di Laplace riguardano la distribu-
zione della temperatura u(x, y) su una porzione (lastra) di R2 racchiusa da una
curva Γ, o nel caso tridimensionale la distribuzione della temperatura u(x, y, z)
su una porzione di spazio racchiuso da una superficie Γ [8].

Viene considerata una equazione di tipo ellittico anche l’equazione di Sturm-


Liouville che è una equazione differenziale ordinaria con valori ai limiti:
0
− [p(x)u0 (x)] + q(x)u(x) = f (x), x ∈ (a, b)
u(a) = ua , u(b) = ub

dove p(x) > 0.


Problemi parabolici: Equazione del calore

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

a(t), b(t) : [0, +∞) → R, g(x) : [0, `] → R funzioni assegnate.

3
t

0
0 l x

Figura 2: Dominio Ω nel caso dell’equazione del calore: 0 ≤ x ≤ `, 0 ≤ t ≤ tmax .

Modello fisico: u(x, t) è la temperatura al tempo t nel punto x di una sbarret-


ta di metallo di estremi 0, ` di cui è nota la temperatura iniziale g(x), 0 ≤ x ≤ `
(cioè al tempo t = 0), e la temperatura dei punti estremi x = 0, x = ` ad ogni
istante t. La costante γ è tale che γ = cρ/k > 0, dove k è la conducibilità
termica, ρ la densità, c la capacità termica del materiale. Il problema della
temperatura di una sbarretta metallica è un problema di diffusione.
Nel caso di un oggetto bidimensionale Ω (lastra di metallo) con contorno Γ
l’equazione diventa
∂2u ∂2u ∂u
+ 2 −γ = 0.
∂x2 ∂y ∂t
In ambito finanziario il modello di Black-Scholes-Merton, che descrive l’anda-
mento del prezzo di strumenti finanziari, in particolare delle opzioni, si riconduce
alla risoluzione dell’equazione parabolica di Black-Scholes

∂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

con g(x), v(t) funzioni assegnate.

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

Modello fisico: u(x, t) è l’ ordinata di un punto di ascissa x che sta su una


corda elastica uniforme sottesa tra i punti (0, 0) e (`, 0) (vedi Figura 1.2. g(x)
è la posizione in cui viene abbandonata la corda all’istante iniziale e v(x) è la
velocita che il punto di ascissa x della corda ha al tempo iniziale. La costante
λ è il rapporto tra la elasticità specifica e la densità di massa.

Problemi in dimensioni più alte (propagazioni di un’onda di una membrana


elastica) portano all’equazione
∂2u ∂2u ∂2u
2
− λ( 2 + 2 ) = 0, (x, y) ∈ Ω.
∂t ∂x ∂y
Lo studio di onde di pressione conduce a equazioni del tipo
∂2u ∂2u ∂2u ∂2u
2
− λ( 2 + + 2 ) = 0, (x, y, z) ∈ Ω.
∂t ∂x ∂x2 ∂z
Osservazione 3 Soluzioni del tipo u(x, y, z, t) = v(x, y, z) cos ωt in cui tutti i
punti oscillano con medesima frequenza e fase esistono se
∂2v ∂2v ∂2v ω2
2
+ 2 + 2 = − v, (x, y, z) ∈ Ω
∂x ∂y ∂z λ
v(x, y, z) = 0, (x, y, z) ∈ ∂Ω.
Questo è un problema di autovalori per un operatore di tipo ellittico.
Un’altra classe di equazioni differenziali che si incontrano nelle applicazioni
sono le equazioni lineari del trasporto
∂u(x, t) ∂u(x, t)
−c = f (x, t).
∂t ∂x
Nel caso omogeneo in cui f (x, t) è la funzione nulla, la soluzione generale è data
da u(x, t) = g(x + ct) dove g(x) = u(x, 0). Questo modello differenziale descrive
il trasporto di un onda g(x) con velocità c.
Problemi di trasporto con diffusione (advection – diffusion, convection –
diffusion) sono descritti da equazioni paraboliche del tipo
∂u(x, t) ∂u(x, t) ∂ 2 u(x, y)
+c −D = 0,
∂t ∂x ∂x2

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

2 Metodi numerici di risoluzione


Raramente è possibile descrivere la soluzione di un problema differenziale, nel
caso essa esista, in termini di funzioni elementari. È quindi necessario costruire
dei metodi numerici per approssimare la soluzione con precisione arbitraria.
Possiamo classificare i metodi di risoluzione numerica nelle seguenti classi.
Per semplicità diamo una descrizione sommaria in cui la funzione incognita u(x)
è intesa della sola variabile x e definita su [0, 1], l’operatore differenziale è L[u]
e l’equazione differenziale è L[u] = f con condizioni al contorno di Dirichlet
omogenee. Svilupperemo più in dettaglio il primo di questi metodi per cui si fa
riferimento alle pubblicazioni [5], [4], [7], [8] . Rimandiamo alle pubblicazioni
[8], [4], [3], [6] per maggiori dettagli sugli altri approcci. Per le nozioni di algebra
lineare numerica facciamo riferimento al libro [1].

1. Differenze finite: Fissato un intero n > 0 la funzione incognita u(x) viene


sostituita con un insieme finito di valori ui = u(xi ), i = 0, 1, . . . , n + 1,
che essa assume in un insieme assegnato di punti x0 , . . . , xn+1 equispa-
ziati nel dominio con passo h = 1/(n + 1). L’operatore differenziale L
viene approssimato (discretizzato) da un operatore lineare Ln a dimen-
(n)
sione finita (matrice) tale che (Ln (u0 , . . . , un+1 ))i = L[u]|x=xi + hp τi ,
(n)
dove τi è limitato superiormente da una costante indipendente da n e
p è un intero positivo. L’equazione L[u] = f viene sostituita dal sistema
lineare Ln ((v0 , . . . , vn+1 )) = (f (x0 ), . . . , f (xn )). La soluzione (v1 , . . . , vn )
sotto certe ipotesi approssima bene i valori (u1 , . . . , un ) nel senso che
maxi |vi − u(xi )| converge a zero se n → ∞.
Questo è un approccio “alla Matlab”. Infatti, quando in Matlab si vuole
tracciare il grafico di una funzione assegnata u(x) sull’intervallo [a, b] viene
costruita una griglia di punti equidistanziati x = [a : h : b]; distanziati di
un passo h e poi viene tracciata la funzione calcolata su questi punti col
comando plot(x, u(x)).
2. Metodo di Galerkin: Si ambienta il problema in uno spazio di Hilbert H
di funzioni su cui è definito l’operatore differenziale e a cui la soluzione
appartiene. L’idea si basa sul fatto che se L[u] = f allora per ogni v ∈ H
vale hL[u] − f, vi = 0.
Si sceglie un insieme di funzioni ϕi ∈ H, i = 1, 2, . . ., linearmente in-
dipendenti e si approssima la soluzione con una combinazione lineare

6
finita
n
X
vn (x) = αi ϕi (x).
i=1

Ad esempio, per un dominio [a, b], e le condizioni al contorno sono di


Dirichlet omogenee, le funzioni ϕi (x), possono essere polinomi ortogonali
oppure funzioni spline che verificano
Pn le condizioni al contorno omogenee.
Fra tutte le funzioni vn (x) = i=1 αi ϕi (x) si cerca quella per cui il residuo
f − L[v] è ortogonale a tutte le funzioni di Vn =span(ϕ1 , . . . , ϕn ) ⊂ H.
Quindi si impone la ortogonalità del residuo rispetto a un insieme di fun-
zioni “test” assegnate in Vn , ad esempio le stesse funzioni ϕi . Ciò conduce
ad un sistema di equazioni lineari. Nel caso in cui le funzioni test siano le
ϕi stesse il sistema diventa
n
X
hϕi , L[ϕj ]iαj = hf, ϕi i, i = 1, . . . , n. (2)
j=1

Se le funzioni ϕi sono autofunzioni dell’operatore lineare L[·] che soddi-


sfano le condizioni al contorno omogenee allora la matrice del sistema è
diagonale. Scegliendo funzioni spline a supporto compatto si ottiene un
sistema con matrice a banda.
Come nel caso dell’approssimazione lineare di funzioni un problema im-
portante è la determinazione di un insieme di funzioni ϕi , i = 1, 2, . . . , per
cui kvn − uk → 0 e tale che il sistema lineare finito sia di facile risoluzione.

3. Metodo di Rayleigh-Ritz, elementi finiti: Anche qui si ambienta il proble-


ma in uno spazio di Hilbert H. Si fa l’ipotesi che l’operatore lineare L[·]
sia autoaggiunto, cioè hL[v], wi = hv, L[w]i per ogni v, w ∈ H e coerci-
tivo, cioè tale che hv, L[v]i ≥ γhv, vi per ogni v ∈ H, dove γ > 0 è una
costante opportuna. In questo modo si riesce a riformulare il problema
come problema di minimo di un funzionale. Vale cioè u ∈ H è soluzione
se e solo se u minimizza il funzionale F (v) = 12 hv, L[v]i − hv, f i. Infatti
minimizzare questo funzionale equivale a minimizzare kv − ukL dove, per
1
la coercitività di L, l’applicazione v → kvkL := hv, L[v]i 2 è una norma
su H, detta norma in energia. Tale norma è indotta dal prodotto scalare
hu, viL := hu, L[v]i. Infatti vale

kv − uk2L =hv − u, L[v] − f i = hv, L[v]i − hv, f i − hu, L[v]i + hu, f i


=hv, L[v]i − 2hv, f i + hu, f i
=2F (v) + hu, f i

e l’ultimo addendo è costante


Come nel metodo di P Galerkin, la soluzione si approssima come combina-
zione lineare v(x) = i αi ϕi (x) di funzioni ϕi (x). Il problema di minimo
del funzionale trattato in termini discreti, cioè imponendo che il gradiente

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

Un grafico di questa funzione è riportato in figura 4 In questo caso la


matrice del sistema è a banda con 7 diagonali non nulle.
Il grafico è stato ottenuto con la function di Matlab riportata nel Listing
1. L’uso degli elementi finiti permette di scegliere discretizzazioni non
uniformi a seconda delle necessità.
4. Metodo di collocazione: AncheP
in questo caso la soluzione viene approssi-
mata con una funzione v(x) = i αi ϕi (x) combinazione lineare di funzioni

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.

3 Il metodo delle differenze finite


Il termine “differenze finite” viene usato da Leonardo Eulero nella stessa acce-
zione moderna. In figura 5 viene riportata la pagina del primo capitolo del libro
“Istitutiones Calculi Differentialis” del 1787 in cui Eulero introduce il concetto
di differenze finite.
Descriviamo il metodo delle differenze finite partendo dal semplice problema
modello
u00 (x) = f (x), x ∈ (0, 1)
(3)
u(0) = a, u(1) = b
Si osserva che se f (x) : [0, 1] → R è continua allora la soluzione di (3) esiste

10
ed è unica. Infatti, integrando l’espressione u00 (x) = f (x) si ha
Z x
u0 (x) = f (t)dt + γ1
0

Integrando nuovamente si ottiene


Z xZ s
u(x) = f (t)dtds + γ1 x + γ2
0 0

Le costanti γ1 e γ2 vengono determinate imponendo le condizioni al contorno.


Si osserva anche che se f (x) è di classe C 2 [0, 1] allora la soluzione u(x) è di
classe C 4 [0, 1]. La regolarità della soluzione ha un ruolo molto importante nel
metodo delle differenze finite. le elaborazioni che svolgeremo nel seguito so-
no valide nell’ipotesi in cui la soluzione del problema differenziale esista e sia
sufficientemente regolare.
Prima di trattare il metodo introduciamo alcune formule utili.

4 Discretizzazione degli operatori differenziali


4.1 Alcune formule
Sia f (x) : [a, b] → R e si assuma che f ∈ C 4 [a, b], e x, x + h, x − h ∈ [a, b]. Allora
vale
h2 00 h3 (3) h4 (4)
f (x + h) = f (x) + hf 0 (x) + 2 f (x) + 6 f (x) + 24 f (ξ)
(4)
h2 00 h3 (3) h4 (4)
f (x − h) = f (x) − hf 0 (x) + 2 f (x) − 6 f (x) + 24 f (η)

dove ξ ∈ (x, x + h), η ∈ (x − h, x). Sommando le due formule (4) si ottiene

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]

Similmente sottraendo entrambi i membri degli sviluppi in serie (4) arrestati al


termine cubico, si ottiene
1 1
f 0 (x) = (f (x + h) − f (x − h)) + σh2 , |σ| ≤ max |f (3) (x)|. (6)
2h 6 x∈[a,b]

La (6) è detta differenza centrata . Una approssimazione più scadente della


derivata prima che coinvolge i valori f (x) e f (x + h) è data da
1 1
f 0 (x) = (f (x + h) − f (x)) − hf 00 (ξ), ξ ∈ (x, x + h) (7)
h 2

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.

4.2 Discretizzazione del problema modello


Si consideri l’equazione (3). Sia n > 1 un intero, h = 1/(n + 1), xi = ih,
i = 0, 1, . . . , n + 1. Dalla (5) si ottiene
1
(u(xi−1 ) − 2u(xi ) + u(xi+1 )) = f (xi ) − τi h2 , i = 1, . . . , n,
h2 (8)
u(x0 ) = a, u(xn+1 ) = b
dove
1 (4)
τi = (u (ξi ) + u(4) (ηi )), ξi ∈ (xi , xi+1 ), ηi ∈ (xi−1 , xi )
24
per cui
1 1
|τi | ≤ max |u(4) (x)| = max |f 00 (x)|. (9)
12 x∈[0,1] 12 x∈[0,1]
La formula fornisce una approssimazione dell’operatore differenziale L[u] =
u00 con l’operatore alle differenze finite Ln : Rn+2 → Rn
1
Ln (u) = (ui−1 − 2ui + ui+1 )i=1:n (10)
h2
dove abbiamo posto ui = u(xi ) e abbiamo indicato u = (ui )i=0:n+1 . In questo
modo l’espressione (8) prende la forma
Ln (u) = f − h2 τ (n) , (11)
(n)
dove si è posto f = (f (xi ))i=1:n , τ (n) = (τi )i=1:n .
Per maggior rigore formale e per ricordare che le quantità introdotte dipen-
(n)
dono da n, avremmo dovuto scrivere hn al posto di h, xi al posto di xi e
(n) (n)
ui al posto di ui cosı̀ come u(n) , x(n) e f al posto rispettivamente di u x
e f . Però, per non appesantire la notazione, eviteremo di riportare l’indice n
fintanto che questo non crei ambiguità. Scriveremo quindi u al posto di u(n) .
Comunque è utile osservare che il vettore u è di fatto da intendersi come una
successione di vettori u(n) .
L’operatore Ln (u) è individuato dalla matrice tridiagonale n × (n + 2)
 
−1 2 −1
1  −1 2 −1 
Ln = − 2 
 
h  . .. . .. . .. 

−1 2 −1

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

essendo u0 = a, un = b, dove fi = f (xi ).


Denotiamo con
 
2 −1
. ..
1  −1 . .
 
. 
An = − 2  
h  .. .. 
 . . −1 
−1 2

la matrice del sistema precedente. In questo modo possiamo scrivere il sistema


come
1
An u = f − h2 τ (n) − 2 (ae1 + ben ) (12)
h
dove abbiamo indicato con e1 e en il primo e l’ultimo vettore della base cano-
nica di Rn e, con abuso di notazione abbiamo indicato ancora con u il vettore
di componenti u1 , . . . , un . L’abuso di notazione non genera ambiguità poiché
quando u è moltiplicato per la matrice Ln è inteso u = (u0 , u1 , . . . , un+1 ) mentre
quando è moltiplicato per An è inteso u = (u1 , . . . , un ).
Rimuovendo la componente dell’errore locale di discretizzazione in (12) si
ottiene il sistema
1
An v = f − 2 (ae1 + ben ). (13)
h
Si osserva che la matrice An del sistema (13) è dominante diagonale e irri-
ducibile, quindi, per il terzo teorema di Gerschgorin è non singolare. Il sistema
(13) ha allora una sola soluzione v = (vi ). Si osservi ancora che il termine noto
è costituito da due componenti additive: la prima dipende dalla funzione f (x),
la seconda dipende dalle condizioni al contorno.

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

Se k · k è una norma vettoriale su Rn allora dalla relazione precedente si


ottiene
k(n) k ≤ h2 kA−1
n k · kτ
(n)
k (15)
dove kA−1n k è la norma matriciale indotta.
In particolare, se kAn k è limitata superiormente da una costante σ indipen-
dente da n allora k(n) k ≤ σh2 kτ (n) k e l’errore globale in norma converge a zero
con lo stesso ordine di convergenza dell’errore locale.

Definizione 4 Sia k · k una norma su Rn . Lo schema alle differenze finite dato


dal sistema lineare An v = f si dice stabile in norma k · k se kA−1
n k è limitato
superiormente da una costante indipendente da n. Si dice convergente in norma
k · k con ordine hp se lim k(n) k = 0 con ordine hp .

Se nella definizione di stabilità o di convergenza si omette il termine “in


norma k · k” allora si intende implicitamente che la stabilità o la convergenza è
data in norma infinito.
Se un metodo consistente di ordine hp è anche stabile in norma k · k allora
esso è convergente con lo stesso ordine hp in norma k · k. Questa proprietà che
può essere dimostrata sotto ipotesi generali, verrà da noi considerata caso per
caso per i problemi modello studiati.

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

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]

Si ha quindi convergenza anche in norma ∞ ma la maggiorazione che otteniamo


in questo modo non è stretta. Infatti si può dimostrare che vale k(n) k∞ ≤ γh2 ,
per una opportuna costante γ. Questo si dimostra nella prossima sezione.

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.

4.4.1 Analisi matriciale


Dalla non negatività di −A−1 −1
n e dalla definizione di k · k∞ segue che kAn k∞ =
kAn ek∞ . Quindi ci basta studiare la norma infinito del vettore w = A−1
−1
n e. Ci
interessa allora trovare un vettore w tale che Aw = e. Poiché A rappresenta
una derivata seconda sul discreto, si intuisce che il vettore w è legato alla di-
scretizzazione della funzione s(x) = 21 x2 che ha derivata seconda identicamente
uguale a 1. Per questo facciamo le seguenti osservazioni.
Si considerino le tre le funzioni f1 (x) = 1, f2 (x) = x, f3 (x) = 21 x2 e le loro
controparti discrete date dai tre vettori di Rn+2 che si ottengono valutando le
funzioni nei punti xi = ih della discretizzazione cioè

f1 (x) = 1 f 1 = (1, . . . , 1)T ,


f2 (x) = x ←→ f 2 = h(0, 1, 2, . . . , n + 1)T , (16)
2
f3 (x) = 12 x2 f 3 = h2 (0, 1, 4, . . . , (n + 1)2 )T

L’operatore derivata seconda è tale che L[1] = 0, L[x] = 0, L[ 12 x2 ] = 1. Lo


stesso comportamento lo mantiene l’operatore discreto Ln . Infatti si verifica
facilmente che
Ln f 1 = 0
Ln f 2 = 0 (17)
T
Ln f 3 = (1, . . . , 1)

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

è esprimibile in termini di vettori noti facilmente limitabili in norma. La se-


conda proprietà può essere indebolita chiedendo la conoscenza di un vettore
v = (v)i ∈ Rn tale che 0 ≤ vi ≤ δ, con δ > 0 costante indipendente da n, per
cui An v ≥ γe con γ > 0 costante indipendente da n. L’espressione di un vettore
con queste caratteristiche può essere dedotta dalla conoscenza di una funzione
v(x) > 0 per cui L[v(x)] è limitata dal basso da una costante.

Osservazione 7 Si noti che dalla prima delle (19) si ha

−A−1 2
n (e1 + en ) = h e. (21)

Se v = αe1 + βen , poiché |v| ≤ max{|α|, |β|}(e1 + en ), e poiché −A−1 n ≥ 0,


per la monotonia della norma infinito dalla relazione (21) si ha k − A−1n vk∞ ≤
max{|α|, |β|}kA−1
n (e 1 + en )k = max{|α|, |β|}h 2
kek ∞ = max{|α|, |β|}h2
.
Come conseguenza di questo fatto si deduce che nel sistema An x = b una
perturbazione nella prima o nell’ultima componente di b dell’ordine di δ produce
una variazione nella soluzione del sistema dell’ordine di h2 δ.

Un approccio similare per dare limitazioni a k(n) k∞ può essere svolto me-
diante la proprietà del massimo. Lo vediamo nel prossimo paragrafo.

4.4.2 Analisi mediante la proprietà del massimo


Si osserva che se u00 (x) ≥ 0 per x ∈ [a, b], la funzione u(x) è convessa in [a, b]
per cui il suo massimo viene necessariamente preso su un estremo. Similmente
se u00 (x) ≤ 0 allora u(x) è concava e il suo minimo viene preso su un estremo.
Poiché Ln (u) è la controparte discreta di u00 (x) ci si aspetta che se il vettore
u = (ui )i=0:n+1 è tale che Ln (u) ≥ 0 allora max(u0 , un+1 ) ≥ ui , i = 1, . . . , n.
Analogamente, se Ln (u) ≤ 0 allora ci si aspetta che min(u0 , un+1 ) ≤ ui , i =
1, . . . , n + 1. Vale infatti il seguente

Teorema 8 (Proprietà del massimo discreto) Se v = (vi )i=0:n+1 è tale


che Ln (v) ≥ 0 allora max(v0 , vn+1 ) ≥ vi , i = 1, . . . , n. Se Ln (v) ≤ 0 allora
min(v0 , vn+1 ) ≤ vi , i = 1, . . . , n.

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

vk ≤ (vk−1 + vk+1 )/2. (22)

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) = ±h2 τ (n) + h2 kτ (n) k∞ e ≥ 0.


Ln (±b

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

Si osservi che si è dimostrato che k(n) k∞ ≤ 12 kh2 τ (n) k∞ quando (n) =


A−1 2 (n)
n h τ qualunque sia τ (n) 6= 0. Per cui vale kA−1 1
n vk∞ /kvk∞ ≤ 2 qualunque
−1
sia v 6= 0. Quindi, per definizione di norma indotta segue kAn k∞ ≤ 21 .
La proprietà del massimo discreto vale sotto ipotesi più generali. Vale infatti
il seguente risultato

Teorema 10 Sia Ln una matrice n × (n + 2) tridiagonale di elementi bi , ai , ci ,


tale che ai < 0, bi , ci > 0 e Ln e ≤ 0. Se Ln v ≥ 0 allora vi ≤ max(v0 , vn+1 ).

Dim. Si procede come nella dimostrazione del teorema 8. Si supponga che


vk sia massimo. Se Ln v ≥ 0 allora −ak vk ≤ bk vk−1 + ck vk+1 da cui vk ≤
bk ck
−ak vk−1 + −ak vk+1 . Essendo poi −ak /(bk + ck ) ≥ 1, ne segue che

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

Il risultato di convergenza può essere espresso per una qualsiasi equazione


differenziale del tipo
L[u] = f, x ∈ (0, 1)
(23)
u(0) = a, u(1) = b
dove L è un operatore differenziale definito su uno spazio di funzioni sufficiente-
mente regolari da [0, 1] in R che viene approssimato con un errore locale O(hq )
da un operatore alle differenze finite dato dalla matrice Ln tridiagonale di di-
mensione n × (n + 2). Cioè si assume che Ln sia tale che per ogni funzione u(x)
sufficientemente regolare, posto z = L[u], valga
Ln u = (z(x1 ), . . . zn (xn ))T + hq τ (n) ,
dove h = 1/(n + 1), xi = ih, u = (ui ), ui = u(xi ) e kτ (n) k∞ ≤ M con M
costante positiva.
Infatti, se ora denotiamo con u(x) la soluzione di (23), u = (u(xi )) e v i =
(vi ), la soluzione del sistema
Ln v = f , f = (f (xi ))i=1,n , v0 = a, vn+1 = b
per cui
(n) ) = hq τ (n) ,
Ln (b b(n) = v − u.
Per l’errore globale b(n) si ha il seguente risultato
Teorema 11 Se valgono le seguenti proprietà
i) Ln y ≥ 0 ⇒ maxi yi = max(y0 , yn+1 );
ii) esiste w = (wi )i=0,n+1 tale che wi ≥ 0, Ln w ≥ γe, w0 , wn+1 ≤ δ, con γ e
δ costanti positive,
(n) k∞ ≤ hq γδ kτ (n) k∞ .
allora kb

(n) + γ1 hq kτ (n) k∞ w. Vale


Dim. Si considerino i vettori y = ±b
1 q (n)
Ln y = ±hq τ (n) + h kτ k∞ Ln w ≥ ±hq τ (n) + hq kτ (n) k∞ e ≥ 0
γ
Per cui, per la proprietà del massimo segue che yi ≤ max(y0 , yn+1 ). Poichè
(n) (n)
0 = b
b n+1 = 0, vale max(y0 , yn+1 ) ≤ γδ hq kτ (n) k∞ da cui yi ≤ γδ hq kτ (n) k∞ ,
che per la definizione di y implica
δ q (n) 1 δ
±(n) ≤ h kτ k∞ − hq kτ (n) k∞ wi ≤ hq kτ (n) k∞ .
γ γ γ

21


L’esistenza di un vettore w con la proprietà ii) del teorema precedente si


deduce generalmente dall’esistenza di una funzione w(x) definita su [0, 1] tale
che w(x) ≥ 0, L[w] ≥ γ > 0, ponendo wi = w(xi ).

Definizione 12 La classe di matrici scrivibili come M = αI − N con N ≥ 0,


cioè con elementi non negativi e α ≥ ρ(N ), dove ρ(N ) è il raggio spettrale di
N , è detta classe delle M-matrici.

La proprietà del massimo è legata alla non negatività dell’inversa di −An


Vale infatti il seguente risultato che fornisce una condizione sufficiente facilmente
verificabile affinché −A−1
n > 0.

Teorema 13 Sia A = αI − B una matrice n × n irriducibile con B ≥ 0. Le


seguenti proprietà sono equivalenti
1. α > ρ(B)
2. A è non singolare e A−1 > 0
3. esiste un vettore v ∈ Rn , v > 0 tale che y = Av ≥ 0, y 6= 0.

4.5 Implementazione in Matlab


È molto semplice scrivere un programma in Matlab che risolve numericamente il
problema modello u00 (x) = f (x) per 0 < x < 1 con le condizioni u(0) = u(1) = 0,
mediante il metodo delle differenze finite. Per poter trattare dimensioni elevate
conviene adottare la modalità di rappresentazione delle matrici “sparse” fornita
da Matlab in cui vengono memorizzati solamente gli elementi diversi da zero di
una matrice assieme ai loro indici. Per fare questo usiamo il comando sparse.
Ad esempio

a = sparse(eye(n));

assegna alla variabile a la matrice identica di dimensione n rappresentata in


modalità sparsa. In effetti questo comando costruisce prima una matrice densa,
cioè eye(n), e poi la rappresenta in modo sparso. Si può evitare di allocare anche
se temporaneamente n2 spazio di memoria scrivendo a = speye(n). Inoltre

d = sparse(ones(n-1,1));
b = diag(d,1);
c = diag(d,-1);

costruiscono le matrici sparse d e c che hanno 1 rispettivamente nella sopra-


diagonale e nella sotto-diagonale e zeri altrove.
In questo modo si può scrivere facilmente la function che risolve numerica-
mente il problema modello con condizioni al contorno di Dirichlet. Questa è

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

riportata nel Listing 2. La function prende in input il termine noto f , assegnato


come vettore di n componenti, i valori α e β della funzione u(x) negli estremi
dell’intervallo [0, 1] e dà in uscita il vettore v con i valori approssimati della
soluzione u(x) negli n + 2 punti del reticolo (estremi inclusi), assieme al vettore
x dei punti del reticolo (estremi inclusi). In questo modo, per tracciare il grafico
della soluzione basta scrivere plot(x,v).
In figura 6 si riporta la soluzione ottenuta con n = 1000, f funzione identi-
camente uguale a 1 e α = 0, β = 0.
La figura 7 riporta il grafico della soluzione ottenuta con α = 0, β = 0.2 e
con f (x) = 1 per x < 1/2, f (x) = 0 per x ≥ 1/2. In questo caso la f (x) è
discontinua.
Nel listing (3) è riportata una function che risolve lo stesso problema me-
diante eliminazione Gaussiana.
Si possono fare alcuni esperimenti con queste due function. Ad esempio
possiamo vedere quanto tempo impiegano al variare di n. Per la function basata
sul risolutore di Matlab, con i comandi

n=100; for k=1:6; f = ones(n,1); n


tic; v=problema_modello1(f,0,0);toc
n = n*10; end

23
Figura 6: Soluzione del problema modello con f (x) = 1

Figura 7: Soluzione del problema modello con α = 0, β = 0.2, f (x) = 1 per


0 ≤ x < 1/2, f (x) = 0 per 1/2 ≤ 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.

In particolare il problema a dimensione 10 milioni si risolve in circa 1 secondo.


La function basata sull’eliminazione gaussiana nonostante il costo del ciclo
for che in un linguaggio interpretato come Matlab richiede maggior tempo di
elaborazione è più veloce. Infatti, sostituendo la function problema modello1
con problema modello2 si hanno i tempi
n = 100
Elapsed time is 0.000708 seconds.
n = 1000
Elapsed time is 0.000280 seconds.
n = 10000
Elapsed time is 0.001256 seconds.
n = 100000
Elapsed time is 0.007935 seconds.
n = 1000000
Elapsed time is 0.070925 seconds.
n = 10000000
Elapsed time is 0.615645 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

Tabella 1: Errore globale in norma infinito e in norma 2 della soluzione


ottenuta applicando il metodo delle differenze finite all’equazione u00 (x) =
2π 2 (1 − 2 sin(πx)2 ).

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

Lo script che segue calcola le soluzioni numeriche con n = 10000 − 1 e


con 1000 − 1, le confronta con la soluzione esatta e calcola gli errori in norma
infinito e in norma 2. Lo script traccia anche il grafico della soluzione e il grafico
dell’errore.

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)

Si osserva che gli errori ottenuti con n = 1000 − 1 e n = 10000 − 1 sono


rispettivamente 1.25e-4 e 1.25e-5, per la norma infinito e 7.22e-4 e 7.22e-5
per la norma 2. Si osserva che dividendo il passo di discretizzazione all’incirca
per 10 l’errore si riduce di un fattore circa 10. La convergenza sembra esserci
ancora ma avviene con O(h) e non O(h2 ).

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

Il grafico della soluzione è riportato in figura 8 mentre il grafico dell’errore è


riportato in figura 9. Si può notare come il valore massimo dell’errore è raggiunto
nel punto di discontinuità della derivata seconda.

4.6 Altre condizioni al contorno


Si consideri il problema

u00 (x) = f (x), x ∈ (0, 1)


u0 (0) = a, u0 (1) = b

Le condizioni al contorno di Neumann possono essere approssimate mediante la


formula (6) nel modo seguente
1 1
(u1 − u−1 ) = a + σ0 h2 , (un+2 − un ) = b + σn+1 h2
2h 2h

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

che ha matrice non singolare. Denotando con Tn la matrice triangolare inferiore


del sistema e indicando con v il vettore che risolve

Tn v = b (24)

dove b è il vettore nella parte destra ottenuto rimuovendo la componente di


errore, per l’errore globale (n) = u − v si ottiene
   
τ1 σ0 + hτ0 /2
1   τ2  0
  
Tn (n) = h2  .  + h 
 
.
2  ..  .. 
 
τn 0

Si osservi che in questo modo stiamo risolvendo il problema ai valori iniziali


 00
u (f ) = f (x) 0<x<1
u(0) = c, u0 (0) = a

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

4.7 Condizioni al contorno di tipo misto


Nel caso in cui le condizioni al contorno siano del tipo misto
u0 (0) = a, u(1) = b
la matrice del sistema, di dimensione (n + 1) × (n + 1) prende la forma
 
1 −1
 .. 
1  −1 2 .  =: − 1 Kn

− 2 
h  . .. . . . −1 
 h2
−1 2
mentre l’equazione differenziale discretizzata prende la forma
 1 1

2 f0 + h a
 
u0
 u1  
 f1 
1 .

− 2 Kn  .  =  ..  + (hσ0 − h2 τ0 /2)e1 + h2 τ (n) .
   
h  ..   
 fn−1 
un 2
fn − h b

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.

4.8 Analisi matriciale


Possiamo seguire la stessa analisi svolta nella sezione 4.4.1. Osserviamo innanzi-
tutto che −An ha inversa positiva poiché è una M-matrice irriducibile, essendo
verificata la proprietà di segno dei suoi elementi ed essendo An e ≥ 0. Per cui
vale kA−1 −1
n k∞ = kAn ek∞ . Usando le stesse notazioni in cui p = (hi)i=0,n ,
s = (h i )i=0:n (stavolta gli indici partono da 0 e i vettori sono in Rn+1 ) vale
2 2

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

4.9 Analisi mediante fattorizzazione LU


Una analoga analisi di stabilità si ottiene osservando che per la matrice Kn ∈
R(n+1)×(n+1) vale la fattorizzazione LU
 
1
 −1 1 
 
T  0 −1 1
Kn = LL , L = 


 .. . .. . .. . .. 
 . 
0 . . . 0 −1 1

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

4.10 Analisi mediante la formula di Morrison


La formula di Sherman-Woodbury-Morrison è un utile strumento che permette
di mettere in relazione le inverse di due matrici che differiscono per una matrice
di rango basso. Se le matrici n × n A e B sono tali che

A = B + UV T

dove U e V sono matrici n × m, m < n, e se B è non singolare, allora A è non


singolare se e solo se la matrice m × m

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

Figura 10: Soluzione del problema modello con condizioni miste e α = 0, β =


0.2, f (x) = 1 per 0 ≤ x < 1/2, f (x) = 0 per 1/2 ≤ x ≤ 1.

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.

5 Equazioni più generali


Trattiamo in questa sezione il caso dell’equazione L[u] = f per 0 < x < 1 con
u(0) = a, u(1) = b, dove
L[u] = (c(x)u0 (x))0
dove c(x) : [0, 1] → R è una funzione sufficientemente regolare tale che c(x) > 0.
Analogamente al problema modello trattato nella sezione precedente, pos-
siamo facilmente verificare che la soluzione dell’equazione differenziale esiste
ed è sufficientemente regolare se lo è la funzione f (x). Infatti, integrando
l’espressione L[u] = f (x) si ha
Z x
1 γ1
u0 (x) = f (t)dt + .
c(x) 0 c(x)
Integrando nuovamente si ottiene
Z x Z s Z x
1 γ1
u(x) = f (t)dtds + dt + γ2 .
0 c(s) 0 0 c(t)
Le costanti γ1 e γ2 vengono determinate imponendo le condizioni al contorno.
Si osserva anche che se f (x) è di classe C 2 [0, 1] e c(x) è di classe C 3 [0, 1] allora
la soluzione u(x) è di classe C 4 [0, 1].
Dalla formula (6) di discretizzazione della derivata prima, con h sostituito
da h2 , si ha
1 h h 1 000 000
u0 (x) = (u(x + ) − u(x − )) + σ(x)h2 , σ(x) = (u (ξ) + u (η))
h 2 2 48
dove ξ ∈ (x, x+ h2 ), η ∈ (x− h2 , x). Inoltre, fissato h, la funzione σ(x) è derivabile
essendo differenza di u0 (x) e di una combinazione lineare di u(x + h2 ) e u(x − h2 ).
Vale quindi
1 h h
c(x)u0 (x) = c(x)(u(x + ) − u(x − )) + h2 c(x)σ(x)
h 2 2
Applicando nuovamente la (6) alla funzione g(x) = c(x)u0 (x) si ricava

g(x + h2 ) − g(x − h2 ) h2 000 ˆ


L[u] = g 0 (x) = + (g (ξ) + g 000 (η̂))
h 48

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 )

5.1 Analisi matriciale


Si osserva che, poiché c(x) > 0, per il Teorema 13 risulta −A−1n > 0 e −An è
una M-matrice irriducibile. In base alla osservazione 6 possiamo cercare una
funzione w(x) ≥ 0 tale che L[w(x)] sia limitato dal basso da una costante
positiva, e ricavare da questa un vettore w candidato a svolgere la funzione di
s nel caso del problema modello.
Imponiamo allora la condizione L[w] = 1 che integrata tra 0 e x dà c(x)w0 (x) =
x da cuiR w0 (x) = x/c(x). Quindi integrando nuovamente tra 0 e x si ha
x t
w(x) = 0 c(t) dt. Approssimando l’integrale con la formula dei rettangoli si
ottiene come candidato w = (wi )i=0,n+1
i i
X xj X j
wi = h = h2 .
c
j=1 j−1
c
j=1 j−1

Poiché wi+1 − wi = h2 (i + 1)/ci si ha


1
(Ln w)i = (ci−1 wi−1 − (ci−1 + ci )wi + ci wi+1 )
h2
1
= 2 (ci−1 (wi−1 − wi ) + ci (wi+1 − wi ) = −i + i + 1 = 1
h

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)

5.2 Analisi mediante la proprietà del massimo


Per il Teorema 10 per l’operatore discreto Ln vale la proprietà del massimo. Per
dimostrare la convergenza e la stabilità dello schema alle differenze si applica il
teorema 11 per cui basta dimostrare che esiste w tale che w ≥ 0, w0 , wn+1 ≤ δ
e Ln (w) ≥ γe per una costante γ indipendente da n.
Per questo è sufficiente scegliere il vettore individuato nel paragrafo prece-
dente, cioè
i
X j
wi = h2 , i = 0, . . . , n + 1.
j=0
c j−1

Si analizzi il caso dell’operatore di Sturm-Liouville

L[u] = −(p(x)u0 (x))0 + q(x)u(x)

dove p(x), q(x) > 0.

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.

5.3.1 Analisi in norma 2


Si richiama la seguente proprietà delle matrici ad elementi non negativi: che se
A e B sono matrici tali che 0 ≤ ai,j ≤ bi,j allora ρ(A) ≤ ρ(B). Inoltre si ricorda
che per una matrice simmetrica A vale kAk2 = ρ(A).
Dunque dalla simmetria di An e Bn e dal fatto che 0 ≤ −A−1 −1
n ≤ Bn segue
−1 −1
k − An k2 ≤ kBn k2 . Poichè
0 ≤ Bn−1 =h2 tridn (−1, 1, 0)−1 diag(c0 , . . . cn−1 )−1 trid(0, 1, −1)−1
1
≤h2 tridn (−1, 1, 0)−1 tridn (0, 1, −1)−1
min ci
1
=h2 (tridn (0, 1, −1)tridn (−1, 1, 0))−1
min ci

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

Per il teorema 5 gli autovalori della matrice K sono 2 − 2 cos(j n+1/2 ), j =

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

5.4 Implementazione in Matlab


Nel Listing 6 è riportata la function Matlab che risolve il problema −(p(x)u0 (x))0 +
q(x)u(x) = f (x) con condizioni al contorno di Dirichlet u(0) = α, u(1) = β.
La figura 11 riporta il grafico della soluzione del problema con α = β = 0,
p(x) = x + 1/100, q(x) = 0, f (x) = 1.

41
Listing 6: Risoluzione del problema di Sturm-Liouville

function [v, x] = sturm_liouville(p,q,f,alfa,beta)


% function v = sturm_liouville(f,p,q,alfa,beta)
% risolve l’equazione differenziale
% -(p(x)u’(x))’+q(x)u(x)=f(x) su [0,1], con u(0)=alfa, u(1)=beta
% col metodo delle differenze finite dove p,q>0
% Input: p vettore di componenti p(x_i) per i=0:n+1, x_i= i*h
% q vettore di componenti q(x_i) per i=1:n
% f vettore di componenti f(x_i) per i=1:n
% alfa e beta sono le condizioni al bordo
% Output: v e’ l’approssimazione della soluzione ottenuta, estremi
inclusi
% x e’ il vettore dei punti della discretizzazione, estremi inclusi
% usa il risolutore di Matlab
n = length(f);
h = 1/(n+1);
d1 = sparse(p(2:n));
d = sparse(p(1:n)+p(2:n+1));
q = sparse(q);
A = diag(d1,1)+diag(d1,-1)-diag(d);
A = -(1/h^2)*A + diag(q);
f(1) = f(1) + alfa*p(1)/h^2;
f(n) = f(n) + beta*p(n+1)/h^2;
v = h^2*(A\f);
v = [alfa;v;beta];
x = [0:n+1]/(n+1);
end

42
6 Il problema agli autovalori
Si consideri il “problema modello”

− u00 (x) = λu(x), 0 < x < 1


(35)
u(0) = 0, u(1) = 0

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

e ci si chiede quanto le soluzioni del problema discreto (37) differiscano da


quelle del problema continuo (35). Per questo è utile richiamare il teorema di
Bauer-Fike. Ricordiamo che una norma assoluta k · k è tale che kxk = kyk
se yi = |xi |, i = 1, . . . , n, inoltre ricordiamo che (vedi [1]) la norma matriciale
indotta da una norma assoluta è tale che kDk = max |di | per ogni matrice
diagonale D = diag(di ). Osserviamo anche che le norme classiche 1,2 e ∞ sono
norme assolute.

Teorema 15 (Bauer-Fike) Siano A, B, F matrici n × n tali che B = A +


F . Supponiamo che A sia diagonalizzabile, cioè A = SDS −1 con D matrice
diagonale. Sia inoltre k · k una norma assoluta. Allora, per ogni autovalore λ
di B esiste un autovalore µ di A tale che

|λ − µ| ≤ 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 λ. 

Si osservi che se S è ortogonale vale kSk2 = 1. Ciò, unito al fatto che k · k2


è assoluta, implica il seguente

Corollario 16 Nelle ipotesi del teorema precedente se A è simmetrica allora


per ogni autovalore λ di B esiste un autovalore µ di A tale che

|λ − µ| ≤ 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

Teorema 17 Per ogni matrice A ∈ Rm×n esistono matrici ortogonali U ∈


Rm×m e V ∈ Rn×n e una matrice diagonale Σ =diag(σ1 , . . . , σp ) ∈ Rm×n con
p = min{m, n}, e σ1 ≥ σ2 ≥ · · · ≥ σp ≥ 0, tali che A = U ΣV T .

La fattorizzazione A = U ΣV T è detta decomposizione ai valori singolari,


le colonne di U e di V sono dette rispettivamente vettori singolari destri e
sinistri. Gli scalari σi sono i valori singolari di A. Un risultato analogo vale per
matrici ad elementi complessi dove U e V sono unitarie. Si osservi che le matrici
AT A e AAT hanno gli stessi autovalori non nulli che coincidono con i quadrati
dei valori singolari non nulli. Inoltre le colonne di U e di V sono autovettori
rispettivamente delle matrici AAT e AT A. Dalle colonne di V e U si ricavano
facilmente delle basi ortogonali del nucleo di A e dello span di A.

Osservazione 18 Se A è reale e simmetrica allora i valori singolari di A sono


i valori assoluti degli autovalori di A. Se A è anche definita positiva i valori
singolari di A coincidono con gli autovalori di A.

Mediante la SVD si può definire il concetto di inversa generalizzata di una


matrice A ∈ Rm×n come A+ = V Σ+ U T , dove Σ+ =diag(σ1+ , . . . , σp+ ) ∈ Rn×m ,
e σi+ = 1/σi se σi 6= 0, σi+ = 0 se σi = 0.
Vale il seguente risultato che permette di esprimere la soluzione di minima
norma di un problema di minimi quadrati.

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 .

Teorema 20 Nelle ipotesi del teorema di Bauer-Fike, sia u ∈ Rn tale che,


(A + F )u = λu. Allora esistono un autovettore v e un autovalore µ di A tali
che Av = µv e
kv − uk
≤ k(A − µI)+ k · (kF k + |λ − µ|) ≤ k(A − µI)+ k · kF k(1 + kSk · kS −1 k)
kuk
dove (A − µI)+ è l’inversa generalizzata di A − µI e S −1 BS = D è diagonale.
In particolare, se A è simmetrica risulta
kv − uk2 2
≤ kF k2 .
kuk2 mint∈σ(A),t6=µ |t − µ|

dove σ(A) è l’insieme degli autovalori di A.

Dim. Vale
(A + F − λI)u = 0
Av − µv = 0
Sottraendo entrambi i membri delle precedenti equazioni si ottiene

A(u − v) + F u − (λ − µ)u − µ(u − v) = 0.

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

u − v = −(A − µI)+ (F − (λ − µ)I)u

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

dove si è indicato con A = h12 trid(−1, 2, −1), e con F = h2 τ uT /(uT u).


Applicando il teorema di Bauer-Fike con la norma 2, poiché
h2
kF k = kτ k · kuk = h2 kτ k/kuk,
kuk2

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

1/((2j − 1)π 2 ) non dipende da n. Per cui

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.

6.1 Implementazione in Matlab


Nel Listing 7 è riportata la function Matlab che risolve il problema agli autovalori
(c(x)u0 (x))0 = λu(x) su [0, 1] con condizioni al contorno di Dirichlet u(0) =
u(1) = 0. In questo caso Matlab non riesce a trarre vantaggio dalla sparsità
della matrice per cui per valori moderatamente grandi di n si hanno tempi di
calcolo elevati. Si suggerisce di provare con n ≤ 1000.
La figura 12 riporta il grafico degli autovalori con c(x) = x + 1/100, mentre
la figura 13 riporta le autofunzioni corrispondenti agli autovalori di modulo più
piccolo.

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) ∈ ∂Ω

Si discretizzi il quadrato [0, 1] × [0, 1] con un reticolo di (m + 2) × (n + 2) punti


(xi , yj ), per i = 0, . . . , m + 1, j = 0, . . . , n + 1, come in figura 14 dove xi = ihx ,
yj = jhy , con hx = 1/(m + 1), hy = 1/(n + 1). La scelta della posizione e
dell’orientamento degli assi è stata dettata dall’esigenza di avere congruenza
con la notazione matriciale. Nella figura 14 si evidenzia la corrispondenza tra il
punto (xi , yj ) e la coppia (i, j).

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

Figura 14: Discretizzazione del quadrato

Nell’ipotesi in cui la soluzione u(x, y) è continua con le sue derivate parziali


fino all’ordine 4, applicando la (5) alla funzione u(x, y) vista separatamente
come funzione della sola x e come funzione della sola y si ottiene
∂2u 1
|(x ,y ) = (ui−1,j − 2ui,j + ui+1,j ) + h2x τi,j
∂x2 i j hx
(40)
∂2u 1 2
|(x ,y ) = (ui,j−1 − 2ui,j + ui,j+1 ) + hy νi,j
∂y 2 i j hy
2 2
1
dove ui,j = u(xi , yj ) e |τi,j | ≤ 12 max ∂∂xu2 , |νi,j | ≤ 12
1
max ∂∂yu2 . Sommando le

espressioni di (40) si arriva a


∂2u ∂2u 1 1 1 1
( 2
+ )|(xi ,yj ) = 2 (ui−1,j + ui+1,j ) + 2 (ui,j−1 + ui,j+1 ) − 2( 2 + 2 )ui,j
∂x ∂y 2 hx hy hy hy
+ h2x τi,j + h2y νi,j .
(41)

Nel seguito per semplificare le notazioni, pur continuando a usare i simboli


m ed n, supponiamo che m = n, quindi hx = hy =: h per cui la formula (41)
diventa
∂2u ∂2u 1
( + )|(xi ,yj ) = 2 (ui−1,j +ui+1,j +ui,j−1 +ui,j+1 −4ui,j )+h2 τi,j +h2 νi,j . (42)
∂x2 ∂y 2 h

La formula fornisce una approssimazione dell’operatore differenziale L[u] =


∂2u 2

∂x2 + ∂∂yu2 con l’operatore alle differenze finite

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

Si osserva che la relazione che lega Lm,n con Lm e Ln è la seguente


 
u0,1 ... u0,n

 u1,1 ... u1,n 

Lm,n (U (m,n)
) =Lm 
 .. .. 
 . . 

 um,1 ... um,n 
um+1,1 ... um+1,n (43)
 
u1,0 u1,1 ... u1,n u1,n+1
+ .. .. .. ..  T
 Ln

. . . .
um,0 um,1 ... um,n um,n+1

Infatti, applicare ad u(x, y) la derivata seconda rispetto a x corrisponde nella


versione discreta ad applicare l’operatore Lm a tutte le colonne di U escluse
la prima e l’ultima che sono quelle di bordo; similmente applicare la derivata
seconda rispetto a y corrisponde nel discreto ad applicare Ln a tutte le righe di
U esclusa la prima e l’ultima che sono quelle di bordo. Quindi Lm,n definisce
una applicazione lineare da R(m+2)×(n+2) in Rm×n .
L’equazione differenziale (39) con le condizioni al contorno di Dirichlet, ri-
stretta ai valori ui,j = u(xi , yj ), i = 1, . . . , m, j = 1, . . . , n interni al dominio si
può allora riscrivere come

Am U + U An = B − h2x τ (m,n) − h2y ν (m,n) ,

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

Am V + V An = B, V = (vi,j )i=1,m, j=1,n (44)

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

(Am ⊗ Bn )T = ATm ⊗ BnT


−1
Sm Am Sm = diag(a), Tn−1 Bn Tn = diag(b), ⇒
(Sm ⊗ Tn )−1 (Am ⊗ Bn )(Sm ⊗Tn ) = diag(a) ⊗ diag(b)

dove A, B, C, D sono matrici di dimensioni compatibili in modo che i prodotti


AB e CD siano ben definiti, e dove Am e Bn denotano matrici non singolari di
dimensione rispettivamente m × m e n × n.
Alla luce delle proprietà sopra riportate, l’equazione (44) si può scrivere nella
forma
(In ⊗ Am + An ⊗ Im )v = b. (46)

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

7.1 Analisi in norma 2


Utilizzando le proprietà del prodotto di Kronecker è abbastanza immediato di-
mostrare che la norma 2 della matrice A−1 m,n è limitata superiormente da una
costante. Per semplicità, ma comunque senza ledere la generalità, assumiamo
m = n. Per le proprietà (45) gli autovalori della matrice An,n = I ⊗ An + An ⊗ I
π
sono dati da − h12 (2 − 2 cos n+1 π
i + 2 − 2 cos n+1 j) e sono tutti negativi; il più pic-
colo autovalore in valore assoluto si ottiene con i = j = 1 e vale h12 (4−4 cos n+1 π
).
2 4
Poiché cos x = 1−x /2+O(x ), si ha che il minimo dei valori assoluti degli auto-
valori di An,n è µ = 2π 2 +O(h2 ) per cui kA−1 −1 1
n,n k2 = ρ(An,n ) = 1/µ = 2π 2 +O(h )
2

che è limitato superiormente da una costante indipendente da n.

7.2 Analisi in norma infinito


Diamo un cenno di come si possano applicare le metodologie viste nel ca-
so monodimensionale usando il principio del massimo e l’analisi puramente
matriciale.

7.2.1 Analisi mediante il principio del massimo


Si osserva innanzitutto che vale la proprietà del massimo. Infatti, sia V = (vi,j )
tale che Lm,n (V ) ≥ 0. Vale allora

vi,j ≤ (vi−1,j + vi+1,j + vi,j−1 + vi,j+1 )/4.

Se vi,j fosse un punto di massimo, sarebbe maggiore o uguale ai valori nei punti
contigui e quindi alla loro media, cioè

vi,j ≥ (vi−1,j + vi+1,j + vi,j−1 + vi,j+1 )/4.

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

7.2.2 Analisi matriciale


Similmente al caso monodimensionale è possibile condurre una analisi più stretta
mediante un approccio puramente matriciale.
Supponiamo per semplicità che m = n e denotiamo A = I ⊗ A + A ⊗ I
dove A = − h12 trid(−1, 2, −1). Usando le (19) per le proprietà del prodotto di
Kronecker si ha
A(e ⊗ e) = −(n + 1)2 [e ⊗ (e1 + en ) + (e1 + en ) ⊗ e]
A(e ⊗ p) = −(n + 1)2 (e ⊗ en ) − (n + 1)2 (e1 + en ) ⊗ p (47)
1
A(e ⊗ s) = e ⊗ (e − (n + 1)2 en ) − (n + 1)2 (e1 + en ) ⊗ s
2
Dalla seconda delle (47) si ricava −(n + 1)2 (e ⊗ en ) = A(e ⊗ p) + (n + 1)2 (e1 +
en ) ⊗ p che sostituita nell’ultima dà
1 1
A(e ⊗ s) = e ⊗ e + A(e ⊗ p) + (n + 1)2 (e1 + en ) ⊗ p − (n + 1)2 (e1 + en ) ⊗ s
2 2
da cui
1 1
e ⊗ e = A(e ⊗ s) − A(e ⊗ p) + (n + 1)2 (e1 + en ) ⊗ (s − p).
2 2
Moltiplicando entrambi i membri della relazione precedente per −A−1 si ottiene

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.

Osservazione 22 Dalla prima delle (47) segue che

−A−1 (e ⊗ (e1 + en ) + (e1 + en ) ⊗ e) = h2 (e ⊗ e). (49)


Il vettore v = (αe1 + βen ) ⊗ y + z ⊗ (γe1 + θen ) è nullo nella parte interna
al dominio e ha valori arbitrari sul bordo. Se σ = kvk∞ allora vale |v| ≤
σ(e(e1 + en ) + (e1 + en ) ⊗ e). Per cui dalla (49) si ha kA−1 vk∞ ≤ h2 kvk∞ . Per
cui, una perturbazione dei dati sul bordo produce una variazione nella soluzione
dell’ordine di h2 .

7.3 Il caso di derivate miste


Si consideri l’operatore

∂2u ∂2u ∂2u


a + 2b + c
∂x2 ∂x∂y ∂y 2

dove b2 < ac.


Sia f (x) derivabile tre volte con continuità per cui

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

Si consideri ora un generico punto del reticolo (xi , yj ) e per semplicità si


denoti con la lettera A. Si considerino i punti contigui che verranno denotati
con le lettere dalla B alla I, e si numerino i quadrati che hanno un vertice in A
da 1 a 4 come in figura:

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

Se b > 0 (il caso b < 0 è trattato in modo analogo) scegliendo α2 = 12 , α1 = 0,


si ottiene lo stencil
 
b c−b 0
1 
a − b −2(a + c − b) a − b 
h2
0 c−b b
che genera una M-matrice se 0 < b < min(a, c). Si osservi inoltre che la somma
degli elementi dello stencil è nulla. Ciò permette di dimostrare la stabilità e la

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.

7.4 Casi più generali


Si consideri il caso di
∂ ∂u ∂ ∂u
L[u] = (a(x) ) + (b(y) ) (52)
∂x ∂x ∂y ∂y
con a(x) ≥ α > 0, b(y) ≥ β > 0.
Si verifichi che la matrice Am,n ottenuta con condizioni al contorno di
Dirichlet è
1 1
In ⊗ 2 tridm (ai−1 , −(ai−1 + ai ), ai ) + 2 tridn (bi−1 , −(bi−1 + bi ), bi ) ⊗ Im
h h
dove ai = a(xi + h/2), bi = b(yi + h/2).
L’analisi della stabilità in norma 2 si effettua valutando l’autovalore di mi-
nimo valore assoluto della matrice simmetrica Am,n . Usando le proprietà del
prodotto di Kronecker, nell’ipotesi che a(x, y) ≥ α > 0 e b(x, y) ≥ β > 0
si ottiene che l’autovalore di minimo valore assoluto di Am,n è la somma de-
gli autovalori di minimo valore assoluto di tridm (ai−1 , −(ai−1 + ai ), ai ) e di
tridn (bi−1 , −(bi−1 + bi ), bi ) per cui la stabilità in norma 2 discende dall’analisi
di stabilità in norma 2 nel caso monodimensionale.
Per l’analisi della stabilità in norma infinito si osserva che −Am,n è una M-
matrice e che Lm,n (Em,n ) = 0 con Em,n matrice di elementi uguali a 1. Questo
basta a dimostrare la proprietà del massimo. Rimane quindi da individuare
una matrice Wm,n ≥ 0 tale che Lm,n (W ) ≥ γ > R x0 con γ costante indipendente
t
da m, n. Per questo basta scegliere w(x, y) = 0 a(t) dt e W = w(m) e(n)T con
2
(m) Pi
wi = j=0 (jh) aj−1 .
Si studi come può essere discretizzato l’operatore
∂ ∂u ∂ ∂u
L[u] = (a(x, y) ) + (b(x, y) )
∂x ∂x ∂y ∂y
con a(x, y) ≥ α > 0, b(x, y) ≥ β > 0.
Un altro caso interessante è il seguente
∂2u ∂2u
L[u] = a(x)b(y) 2
+ c(x)d(y) 2 , a(x, y) > 0, b(x, y) > 0.
∂x ∂y
che è un caso particolare di
∂2u ∂2u
L[u] = a(x, y) + b(x, y) , a(x, y) > 0, b(x, y) > 0.
∂x2 ∂y 2
Si lascia come esercizio la sua discretizzazione e l’analisi di stabilità e conver-
genza.

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.

7.6 Domini non rettangolari


Nel caso in cui il dominio Ω non sia un rettangolo è possibile operare in modo
analogo. È sufficiente considerare un rettangolo che contiene Ω e procedere in
modo consueto alla discretizzazione di questo rettangolo mediante un reticolo
di punti (xi , yj ). Consideriamo a titolo di esempio il caso in cui il dominio ha
una forma ad L come in figura.

Il sistema lineare che descrive l’approssimazione discreta per questo domi-


nio, con condizioni al contorno di Dirichlet, si ottiene allora considerando il
corrispondente sistema relativo al rettangolo che contiene ω e rimuovendo le
equazioni e le incognite relative ai punti del reticolo che non appartengono ad
Ω.
In altri termini se Ax = b è il sistema relativo alla discretizzazione del
rettangolo, il sistema relativo alla discretizzazione di Ω è Ab
bx = bb dove x
b e bb si
ottengono rispettivamente da x e b rimuovendo le componenti relative ai punti
esterni al dominio Ω mentre A b è la sottomatrice di A ottenuta rimuovendo righe
e colonne corrispondenti ai punti che non appartengono ad Ω.

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

Teorema 23 Siano A1 = I − B1 , A2 = I − B2 M-matrici con B1 , B2 ≥ 0 e


ρ(B1 ) < 1, ρ(B2 ) < 1. Se B1 ≥ B2 allora A−1
1 ≥ A2 .
−1

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

La proprietà descritta sopra viene utilizzata implicitamente per dimostrare


il seguente risultato.

Teorema 24 Sia A una M-matrice e A b una sua sottomatrice principale relativa


all’insieme degli indici S. Sia W la sottomatrice di A−1 con indici in S. Allora
A b−1 ≤ W . In particolare vale kA
b è invertibile e vale 0 ≤ A b−1 k ≤ kW k ≤ kA−1 k
per ogni norma matriciale k · k indotta da una norma monotona.

Dim. Senza ledere la generalità supponiamo che S = {1, 2, . . . , m} e che A =


I − B con B ≥ 0 e ρ(B) < 1. Partizioniamo le matrici A e B come segue
   
A11 A12 B11 B12
A= , B=
A21 A22 B21 B22

b = A11 , B11 matrici m × m. Consideriamo inoltre


con A
 
B11 0
A = I − B, B =
e e e .
0 B22

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

b−1 = (I − B11 )−1 conclude la tesi.


Il fatto che A 

7.6.1 Caso di punti del dominio fuori dalla griglia


Nel caso di un dominio curvilineo che non passi necessariamente nei punti della
griglia è possibile procedere comunque a discretizzazioni alle differenze finite.
Prendiamo ad esempio il caso mostrato della figura 15 in cui il bordo, de-
scritto dalla linea blu passa per i punti E ed F che non sono punti del reticolo.
In questo caso non si può applicare la formula dei 5 punti centrata in O che coin-
volgerebbe i valori di u(O), u(A), u(B), u(C) e u(D), visto che non si hanno
informazioni dsu u(C) e U (B). Quindi apparentemente non siamo in grado di
scrivere l’equazione che deriva dall’applicazione della formula dei 5 punti in O.
Però possiamo rimediare a questa difficoltà sviluppando u(x, y) come funzione
di x nel punto O col resto nel termine di ordine 3, e valutando l’espressione in
A ed E. In questo modo si ottengono le espressioni

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

dove hA = A − O, hE = E − O. Da queste si ottiene l’espressione

∂ 2 u

1 2 2
hE u(A) − hA u(E) = (hE − hA )u(O) + (hE hA − hA hE ) + O(h4 )
2 ∂x2 O

in cui non compare la derivata prima rispetto a x. In modo analogo facendo lo


sviluppo rispetto alla y e valutando in D e in F si ha

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

dove hD = D − O, hF = F − O. Da queste si ottiene l’espressione

∂ 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

in cui non compare la derivata prima rispetto a y. Combinando linearmente


le due ultime espressioni in cui non compaiono le derivate prime con opportuni

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.

7.7 Implementazione in Matlab


Nel Listing 8 è riportata la function Matlab che risolve il problema ∆u = f su
un rettangolo con condizioni al contorno di Dirichlet. Il dominio è discretizzato
con una griglia di m×n punti interni. La variabile f è una matrice di dimensione
(m + 2) × (n + 2) che contiene sulla prima e ultima riga e sulla prima e ultima
colonna i valori delle condizioni al contorno, mentre nella sua parte interna
contiene i m × n valori di f (x, y) nei punti della griglia. La variabile v è una
matrice (m + 2) × (n + 2) che contiene la soluzione, inclusi anche i punti di
bordo.
La figura 16 riporta il grafico della soluzione ottenuta scegliendo il termine
noto f = 0 con valori al contorno dati da tre segmenti di retta. I valori di m e
n sono m = 30, n = 50. Il tempo di calcolo su un laptop con processore i3 è di
0.015 secondi.

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

Nella figura 17 si riporta il grafico della soluzione ottenuta con f (x, y) = 1


e condizioni omogenee al bordo. I valori scelti di m e n sono m = n = 80. Il
tempo di calcolo è stato di 0.078 secondi.
Per maggiori dettagli sugli aspetti computazionali e implementativi si ri-
manda alla sezione 11.

8 Metodi variazionali (scritta da Federico Poloni)


8.1 Premessa
Sia B uno spazio di funzioni. Per evitare di generare confusione chiamando
troppe cose con il nome “funzione”, solitamente in analisi si preferisce chiamare
operatore una mappa da B in sé (o comunque da uno spazio di funzioni a un
altro spazio di funzioni), e funzionale una mappa da B a R (o C). Notate anche
che nella frase qui sopra, per evitare confusione, ho usato il termine mappa, che
in fondo è un altro sinonimo di funzione.
Per evitare di avere troppe parentesi tonde, qui useremo le parentesi quadre
per indicare l’applicazione di un operatore: per esempio, L[f ] indicherà l’appli-
cazione dell’operatore L alla funzione f . La notazione L[f ](x), invece, indica
che dobbiamo applicare l’operatore L alla funzione f , e valutare la funzione
risultante nel punto x.

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

I metodi chiamati variazionali, o di Ritz-Galerkin, o degli elementi finiti, invece


funzionano meglio sotto questi punti di vista.

8.3 Problema modello


Consideriamo il generico problema di Sturm-Liouville; cerchiamo u : [a, b] → R
di classe C 2 tale che
L[u] = f ;
u(a) = α (53)
u(b) = β,

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.

8.4 Forma debole


Consideriamo il prodotto scalare L2 classico
Z b
hu, vi = uvdx.
a

Nota che se u soddisfa (53), allora (integrando) soddisfa anche


hL[u], vi = hf, vi ∀v ∈ Ca1 tratti , v(a) = v(b) = 0. (54)
Nota che con quelle ipotesi su v possiamo scrivere
Z b Z b Z b Z b
hL[u], vi = − (pu0 )0 vdx + quvdx = pu0 v 0 dx + quvdx, (55)
a a a a

dove abbiamo integrato per parti il primo pezzo.


Con questa espressione per hL[u], vi, nota che il problema (54) ha senso anche
se u e v sono due funzioni soltanto Ca1 tratti e nulle ai bordi. Anzi, possiamo
chiedere solo che u0 e v 0 esistano come derivate distribuzionali. Lo spazio delle
funzioni
{v : v ∈ L2 [a, b], v 0 ∈ L2 [a, b], v(a) = v(b) = 0} =: H01 , (56)
dove la derivata è fatta in senso distribuzionale, è detto uno spazio di Sobolev.
Se non sapete cos’è una derivata distribuzionale, ignorate pure questa parte e
prendete la (56) come definizione di H01 solo con le funzioni C 1 a tratti, e tutto
funzionerà lo stesso.

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

kukN ≤ C ku0 kL2

per le due norme N = ∞ e N = L2 .


Dim. Usando Cauchy-Schwarz in modo furbo applicato col prodotto scalare
ottenuto integrando da 0 a z, si ha hu0 , 1i2 ≤ h1, 1ihu0 , u0 i, da cui ∀z ∈ [a, b]
Z z Z z Z z
0 2
2
u(z) = ( 2
u dx) ≤ ( 2
1 dx)( u02 dx) ≤ (z − a) ku0 kL2 .
a a a

Visto che questa disuguaglianza vale per ogni z ∈ [a, b], si ha


2 2
kuk∞ ≤ (b − a) ku0 kL2 .

Similmente, integrando entrambi i lati della disuguaglianza si ottiene


!
Z Z b b
2 2
kukL2 = u(z)2 dz ≤ (z − a)dz ku0 kL2
a a

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.

Dim. Usando la simmetria di L,

F (v) + hL[u], ui = hL[v − u], v − ui ≥ kv − ukN ≥ 0,

con l’ultimo ≥ sempre stretto a meno che u = v. 

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

hL[u], vi = hf, vi ∀v ∈ S. (57)


n
Fissiamo una base di funzioni
Pn (φi (x))i=1 per S. Allora, uS si scriverà in funzione
della base come uS = j=1 xj φj . Scrivendo l’equazione (57) per v = φi , i =
1, 2, . . . n (perché bastano?) otteniamo il sistema
n
X
hφi , L[φj ]i xj = hφi , f i , i = 1, 2, . . . , n. (58)
j=1

È un sistema con matrice AS simmetrica e positiva definita (perché hf, L[f ]i ≥


2
kf kL2 > 0 per ogni 0 6= f ∈ S). Quindi possiamo risolverlo e ricavare gli xi , e
quindi uS .
Nota che il teorema 27 funziona (con la stessa dimostrazione) anche se rim-
piazziamo H01 con S, per cui uS è il punto di minimo (stretto) del funzionale F
su S.

8.8 Errore di discretizzazione


Teorema 28 (Lemma di Céa) Esiste una costante (che dipende solo dal do-
minio) D per cui per ogni v ∈ S si ha

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

Quindi l’errore globale sulla soluzione dipende solo dall’errore di approssi-


mazione della derivata prima v nello spazio S: cioè, se scelgo un S dove la
derivata prima di u può venire approssimata “bene” (cioè c’è una v ∈ S tale
che v 0 − u0 è piccolo), allora ottengo una buona stima della soluzione.

8.9 Esempio: Spline cubiche


Prendiamo come S lo spazio delle funzioni spline cubiche sui punti equispaziati
x0 , x1 , . . . , xN . Ha dimensione N + 1 (infatti basta fissare i valori della u su
x0 , x1 , . . . , xN e possiamo costruire la sua spline). È possibile (non lo vediamo
qui) costruire una sua base tale che per ogni i la funzione di base φi è diversa da
zero solo nell’intervallo [xi−2 , xi+2 ]. Ciò è bello perché implica che gli elementi
della matrice del sistema AS = hφi , L[φj ]i sono nulli tutte le volte che |j − i| >
2 (è evidente dalla (55)). Quindi la matrice del sistema è pentadiagonale, e
possiamo applicarci velocemente la maggior parte degli algoritmi di algebra
lineare (eliminazione di Gauss in O(n2 ), un passo dei principali metodi iterativi
in O(n)).
Per quanto riguarda l’errore globale, si può dimostrare (noi lo omettiamo) il
seguente risultato:
Lemma 29 Sia u ∈ C 4 . La spline cubica che interpola u nei punti x0 , x1 , . . . , xN
soddisfa
kv 0 − u0 k∞ ≤ C u(4) h3


per una costante moderata C.
Questo + il lemma di Céa ci permettono di dire che l’errrore globale per questo
metodo agli elementi finiti è al più C u(4) ∞ h3 . Notare che per le differenze
finite c’era un’espressione simile ma h2 al posto di h3 , quindi gli elementi finiti
si avvicinano meglio alla soluzione.

8.10 Esempio: funzioni lineari a tratti


Prendiamo come S lo spazio delle funzioni di approssimazione lineare nei punti
x0 , x1 , . . . , xN (cioè le funzioni lineari a tratti con i punti di non derivabilità
nelle xi ). Una sua base è data dalle funzioni φi tali che φi (xj ) = δij (“hat
functions”); con questa base la AS risulta tridiagonale.
Notare che hanno la regolarità minima che serve per far funzionare gli ele-
menti finiti (C 1 a tratti). Si può dimostrare (non difficile, ma lo omettiamo) che
per la funzione v di approssimazione lineare per una funzione u ∈ C 2 soddisfa

kv 0 − u0 k∞ ≤ C u(2) h.


2
(notare che C è la minima regolarità di u per cui ha senso porsi il problema
(53)). Questo + lemma di Céa ci dicono che la soluzione converge con errore h.

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.

9.1 Una prima discretizzazione


Assumiamo che i dati a(t), b(t), f (x) siano sufficientemente regolari in modo
che la soluzione u(x, t) con le sue derivate rispetto alla x e rispetto alla t fino
al quart’ordine siano continue. Si approssima la derivata prima rispetto a t con
la formula (7) e la derivata seconda rispetto a x mediante la formula (5). Si
ottiene allora
∂u 1
= (ui,j+1 − ui,j ) + σi,j ∆t
∂t ∆t
∂2u 1
= (ui−1,j − 2ui,j + ui+1,j ) + τi,j ∆2x
∂x2 ∆2x
dove |σi,j | e |τi,j | sono limitati superiormente.
∆t
Sostituendo nella (59) e ponendo per semplicità r = γ∆2x , si ottiene
τi,j
ui,j+1 = r(ui+1,j + ui−1,j ) + (1 − 2r)ui,j + ∆2x ∆t − σi,j ∆2t ,
γ
per i = 1, . . . , n, j = 0, 1, . . ., dove u0,j = a(tj ), un+1,j = b(tj ) e ui,0 = f (xi ).
Si considera allora il sistema ottenuto rimuovendo l’errore locale di discre-
tizzazione
vi,j+1 =r(vi+1,j + vi−1,j ) + (1 − 2r)vi,j i = 1, . . . , n, j = 0, 1, . . . , m + 1
v0,j =a(tj ), vn+1,j = b(tj ), vi,0 = f (xi ).
Ordinando le incognite “per colonne” cioè come
(v1,1 , v2,1 , . . . , vn,1 , v1,2 , v2,2 , . . . , vn,2 , . . . , v1,m+1 , v2,m+1 , . . . , vn,m+1 )
si ottiene un sistema lineare la cui matrice è ∆t Am,n dove
 
I
1 
 −T I 
Am,n = , T = tridn (r, −2r + 1, r)

∆t 
 .. ..
. . 
−T I
Per l’errore globale i,j = ui,j − vi,j vale
∆2x
Am,n vec(i,j ) = vec(τi,j ) − ∆t vec(σi,j )
γ
Per dimostrare la stabilità e la convergenza del metodo occorre studiare la
norma infinito della matrice A−1m,n . Vale
 
I
 T I 
A−1
m,n = ∆t 
 
.. . .. I 
 . 
m
T ... T I

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

e quindi per l’errore globale risulta

|i,j | ≤ (∆2x max |τp,q |/γ + ∆t max |σp,q |)

9.2 Una discretizzazione più efficiente: il metodo di Crank-


Nicolson
Si può ottenere un metodo dotato di convergenza incondizionata, cioè comunque
∆t e ∆x convergano a zero e con errore locale O(∆2x + ∆2t ), con una piccola
modifica del metodo mostrato nel paragrafo precedente.
Si osserva che per una funzione sufficientemente regolare f (x) il quoziente
(f (x + h) − f (x))/h approssima la derivata prima di f (x) in x con un errore
O(h) (confronta con (7)), però la stessa formula può essere vista come una
applicazione della (6) con passo h/2 e quindi come una approssimazione di
f 0 (x+h/2) con errore O(h2 ). Ciò suggerisce di discretizzare la (59) uguagliando
γ(ui,j+1 − ui,j )/∆t ad una approssimazione alle differenze finite della derivata
seconda di u(x, t) rispetto ad x però al tempo tj +∆t /2 anziché al tempo tj come
si era fatto nel paragrafo precedente. Per questo si usa come approssimazione
della derivata seconda di u(x, t) rispetto ad x al tempo tj + ∆t /2 la media
aritmetica delle due approssimazioni della derivata seconda ai tempi tj e tj+1 ,
cioè (ui−1,j − 2ui,j + ui+1,j )/∆2x e (ui−1,j+1 − 2ui,j+1 + ui+1,j+1 )/∆2x . Infatti, in
generale, per una funzione sufficientemente regolare f (x) facendo uno sviluppo
in serie di f (x) con incremento h e −h e prendendo la media aritmetica di
entrambi i membri si ha che (f (x−h)+f (x+h))/2 = f (x)+h2 (f 00 (ξ)+f 00 (η))/4,
dove ξ ∈ (x + h), η ∈ (x − h).

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 )

che, ponendo r = ∆t /(2γ∆2x ), può essere riscritta come


1 1
[(1 + 2r)ui,j+1 − rui−1,j+1 − rui+1,j+1 ] = [(1 − 2r)ui,j + rui−1,j + rui+1,j ]
∆t ∆t
+ 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 ).

L’espressione per l’errore globale è quindi

Am,n (n(m+1)) = O(∆2x + ∆2t ) (61)

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

La presenza di del blocco V m in basso a sinistra mostra che condizione


necessaria di stabilità è ρ(V ) ≤ 1 altrimenti la matrice V m divergerebbe espo-
nenzialmente. Si verifica facilmente che V = (I + rH)−1 (I − rH), dove H è la
matrice tridiagonale definita da H =tridm (−1, 2, −1). Per cui gli autovalori di
V sono
1 − 2r(1 − ci ) πi
, ci = cos( )
1 + 2r(1 − ci ) n+1
Il valore assoluto della espressione precedente è sempre minore di 1 qualunque
.
sia il valore di r. Il massimo si ottiene per ci = cos(π/(n + 1)) e vale ρ(V ) =
2
1 − 2r(π/(n + 1)) .

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

Introducendo la norma kvk = √1 kvk2 per vettori di n componenti, segue che


n

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

Vale inoltre kA−1 k2 = 1/(1 + 2r(1 − cos(π/(n + 1)))) < 1, e


.
∆t /(1 − kV k2 ) = ∆t /(1 − (1 − 2r(π/(n + 1))2 )) = ∆t /(2rπ 2 ∆2x ).

Poiché r = ∆t /(γ∆2x ), ne segue che ∆t /(1 − kV k2 ) è limitato superiormente da


una costante indipendente da m e da n, da cui la convergenza del metodo di
Crank-Nicolson in norma 2. Più precisamente esiste una costante θ > 0 tale che
kk k ≤ θ(∆2t + ∆2x ).
Una dimostrazione elementare della stabilità in norma infinito si può dare
sotto l’ipotesi r ≤ 1/2. Infatti vale il seguente risultato.

Teorema 30 Se r ≤ 1/2 per le matrici A = tridm (−r, 1 + 2r, −r) e B =


tridm (r, 1 − 2r, r), vale A−1 ≥ 0, B ≥ 0 inoltre

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.

Dim. Posto H = trid(−1, 2, −1) vale A = I + 2rH, e B = I − 2rH. Per


cui, se r ≤ 1/2 è B ≥ 0. Inoltre, essendo A una M-matrice dominante
diagonale è A−1 ≥ 0. Per quanto riguarda le rimanenti diseguaglianze vale
Ae = e + r(e1 + en ) ≥ e da cui, poiché A−1 ≥ 0 segue A−1 e ≤ e. Inoltre
Be = e − re1 − ren ≤ e. La terza diseguaglianza si ottiene componendo le due
precedenti. La quarta diseguaglianza segue dalla terza. 

72
Dal punto di vista implementativo il metodo di Crank-Nicolson conviene
scriverlo nella forma più semplice

(1 + 2r)vi,j+1 − rvi−1,j+1 − rvi+1,j+1 = (1 − 2r)vi,j + rvi−1,j + rvi+1,j ,

o, denotando con v j = (vi,j ), si ha

Av j+1 = Bv j + r(aj + aj+1 )e1 + r(bj + bj+1 )en , j = 0, 1, . . . , v0 = f ,

dove f = (f (xi )).

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.

9.4 Altre discretizzazioni


Si consideri lo schema alle differenze ottenuto mediante le formule
∂ 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 lo schema è incondizionatamente stabile. Inoltre, per l’operatore
alle differenze finite L∆ (ui,j ) ottenuto in questo modo vale la proprietà del
massimo discreto, cioè se L∆ (ui,j ) ≤ 0 nei punti della discretizzazione interni al
dominio allora ui,j prende il massimo sul bordo.
Si verifichi che se la discretizzazione della derivata temporale è fatta mediante
la formula
∂u(x, t) 1
= (u(x, t + ∆t ) − u(x, t)) + ∆t σ̃(x, η̃)
∂t ∆t
allora per l’operatore alle differenze finite ottenuto in questo modo vale la
proprietà del massimo discreto se r = ∆t /(γ∆2x ) è minore di 1/2.
Si studi il metodo che si ottiene approssimando la derivata temporale con la
formula (più precisa)

∂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

∂u(x, y, t) ∂ 2 u(x, y, t) ∂ 2 u(x, y, t)


γ −( + )=0
∂t ∂x2 ∂y 2
con le condizioni al contorno
u(x, y, t) = g(x, y, t), (x, y) ∈ ∂Ω,
u(x, y, 0) = f (x, y), (x, y) ∈ Ω.

Anche in questo caso si possono applicare gli analoghi dei metodi alle differenze
finite esaminati nel paragrafo precedente.

9.6 Metodo di semi-discretizzazione (delle linee)


È possibile discretizzare l’equazione del calore solamente nella parte spaziale e
lasciare invece inalterata la variabile temporale. Quindi, discretizzando l’inter-
vallo [0, `] mediante la griglia xi = i∆x per i = 0, 1, . . . , n+1, con ∆x = `/(n+1),
e ponendo u = (ui ) con ui := u(xi ), si ottiene il problema
1
u0 = tridn (1, −2, 1)u + a(t)e1 + b(t)en + ∆2x τ n
γ∆2x

con le condizioni iniziali u(0) = f dove f = (fi ), fi = f (xi ).


Trascurando l’errore locale ∆2x τ n , si ottene il sistema di n equazioni diffe-
renziali in n incognite
1
v 0 = Av + a(t)e1 + b(t)en , v(0) = f , A= tridn (1, −2, 1)
γ∆2x

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 .

Si osserva inoltre che, se siamo interessati a calcolare v(ti ), per i = 1, 2, . . . ,


dove ti = i∆t , è sufficiente calcolare M = e∆t A e porre v(ti ) = M v(ti−1 ),
con v(0) = f . Per valori moderati di n questa modalità risolutiva è efficace

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.

Nel caso in cui τ è costante la soluzione di questo sistema è

 = ∆2x A−1 (etA τ − τ ).

Si ricorda che A−1 ha norma limitata superiormente da una costante, e i suoi


autovalori λi sono tutti negativi. Questa seconda proprietà implica che anche
etA ha norma limitata superiormente da una costante infatti i suoi autovalori
sono etλi e convergono a zero per t → ∞. Per cui vale

kk ≤ ∆2x kA−1 k(1 + ketA k)kτ k = O(∆2x ).

Limitazioni analoghe possono essere date nel caso τ sia un polinomio in t.

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.

10.1 La soluzione di D’Alembert


L’equazione delle onde nella forma (62) ammette una forma esplicita della so-
luzione. Infatti, se F (x) e G(x) sono due funzioni derivabili due volte con
continuità, allora u(x, t) = F (x + ct) + G(x − ct) soddisfa l’equazione (62) con

c = γ. Basta quindi costruire F e G in modo che u(x, t) soddisfi le condizioni
(63). Si verifica che l’imposizione delle (63) porta a
Z x+ct
1 1
u(x, t) = [f (x + ct) + f (x − ct)] + g(ν)dν
2 2c x−ct

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

g nell’intervallo [x∗ − ct∗ , x∗ + ct∗ ]. In altri termini, il valore di u(x∗ , t∗ ) non è


influenzato dai valori delle condizioni iniziali al di fuori di [x∗ − ct∗ , x∗ + ct∗ ].
Analogamente, i valori di u(x∗ , t∗ ) dipendono dai valori della “storia passata”
di u(x, t) racchiusa dalle due rette passanti per (x∗ , t∗ ) e rispettivamente per
i punti (x∗ − ct∗ , 0), (x∗ + ct∗ , 0) dette rette caratteristiche. Le rette hanno
equazione x − ct = x∗ − ct∗ e x + ct = x∗ + ct∗ . La figura 18 riporta tali rette e
il dominio da esse racchiuso detto dominio di dipendenza.

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

∂u(xi , 0) ∆2t ∂ 2 u(xi , 0)


ui,1 = u(xi , ∆t ) = f (xi ) + ∆t + + O(∆3t )
∂t 2 ∂t2
∆2 ∂ 2 u(xi , 0)
= f (xi ) + ∆t g(xi ) + t γ + O(∆3t )
2 ∂x2
∆2
= f (xi ) + ∆t g(xi ) + t γf 00 (xi ) + O(∆3t )
2
Se la derivata seconda di f (x) non fosse disponibile basta approssimarla con
una formula alle differenze con errore O(∆2x ).
Denotando con u(j) il vettore di componenti ui,j , per i = 1, . . . , n, e con
f , g, f 00 i vettori le cui componenti sono i valori delle corrispondenti funzioni
f (x), g(x), f 00 (x) in xi per i = 1, . . . , n, si ha
1 (1) 1 1 1
u = 2f + g + γf 00 + O(∆2t )
∆2t ∆t ∆t 2
1 (2) 1 1 (1) 1
2 u = 2 Vn 2 u + 2 f + O(∆2t ) + O(∆2x )
∆t ∆t ∆t ∆t
1 (j+1) 1 1
u = 2 Vn u(j) − 2 u(j−1) + +O(∆2t ) + O(∆2x )
∆2t ∆t ∆t

dove Vn = tridn (r, 2 − 2r, r).


In forma matriciale si ottiene quindi il sistema
 
In
 u(1)
 
 −Vn In
1  In

−Vn In

  .. 
  .  = b + O(∆2t + ∆2x ) (65)
∆2t 

 . .. . .. . .. 
 u(n)
In −Vn In

dove il vettore b dipende dalle condizioni (64).


Lo schema alle differenze che si ottiene è uno schema esplicito nel senso che
la soluzione discreta al tempo j si può esprimere in funzione delle soluzioni al
tempo j − 1 e j − 2. Lo schema è rappresentato dallo stencil

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

u(x, t) = g(x − at).

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

(u1,1 , u2,1 , . . . , un,1 , u1,2 , u2,2 , . . . , un,2 , . . . u1,m , u2,m , . . . , un,m )

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

Si osservi che se a < 0 e r ∈ (−1/2, 0) allora l’involuco convesso del dominio


di dipendenza discreto contiene il dominio di dipendenza continuo. Se invece
r 6∈ (−1/2, 0) allora ci sarebbero valori del dominio di dipendenza continuo che
non apparterrebbero all’involucro convesso del dominio di dipendenza discreto
qualunque siano n e m. Per cui, modificando le condizioni iniziali alterando i
valori che stanno nel dominio di dipendenza continuo ma non nell’involucro del
dominio di dipendenza discreto la soluzione dell’equazione differenziale cambie-
rebbe mentre non cambierebbe quella dell’equazione alle differenze. Il metodo
numerico non sarebbe quindi in grado di approssimare la soluzione. Questo
conferma l’analisi di stabilità.

10.3 Metodo di semi-discretizzazione


Anche per equazioni iperboliche può essere applicato un metodo in cui viene
discretizzata solamente la derivata rispetto allo spazio mediante i punti xi =
i∆x , i = 0, 1, . . . , n + 1, ∆x = 1/(n + 1). Procedendo come nel caso parabolico
si arriva al sistema di equazioni differenziali

u00 = Au + ∆2x τ , u(0) = f , u0 (0) = g

dove f = (fi ), g = (gi ), fi = f (xi ), gi = g(xi ), A = (γ/∆2x )tridn (1, −2, 1) e


∆2x τ è l’errore locale di discretizzazione. Il sistema viene sostituito dall’analogo

81
sistema ottenuto rimuovendo l’errore locale e si ha

v 00 = Av, v(0) = f , v 0 (0) = g. (66)

In questo caso la soluzione si scrive come

v(t) = cos(tB)f + sin(tB)B −1 g (67)

dove B = (−A)1/2 e sin(tB), cos(tB) denotano funzioni di matrici. Infatti,


ricordando che sin(0B) = 0, cos(0B) = I, e sin(tB)0 = B cos(tB), cos(tB)0 =
−B sin(tB), ne segue v 0 (t) = −B sin(tB)f +B cos(tB)B −1 g e v(0) = f , v 0 (0) =
g. Inoltre v 00 = −B 2 sin(tB)f − B 2 cos(tB)g = Av.
La soluzione (67) può essere facilmente calcolata avendo a disposizione le
funzioni di matrice seno e coseno.
Un approccio per risolvere il sistema (66) che riconduce il calcolo alla funzio-
ne esponenziale di matrice si ottiene nel modo seguente. Si introduce il vettore
w = [v; v 0 ], dove si sono usate le notazioni di Matlab. Si riscrive (66) come
 
0 0 I
w = Aw, A =
A 0

con le condizioni w(0) = [f ; g]. In questo modo si può scrivere la soluzione


come
w(t) = etA w(0).
Inoltre, come nel caso parabolico, i valori w(tj ), per tj = j∆t , si possono
calcolare mediante

w(tj+1 ) = e∆t A w(tj ), j = 0, 1, 2, . . . .

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

e la sua linearizzazione è della forma w0 = Aw con


 
0 I
A= .
A −aI

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

che sono le soluzioni dell’equazione quadratica

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:

y(2:m+1,2:n+1) = 4*x(2:m+1,2:n+1) - x(1:m,2:n+1) - x(3:m+2,2:n+1)


- x(2:m+1,1:n) - x(2:m+1,3:n+2);

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

Anche in questo caso è possibile dare una versione in forma “vettorizzata”


del doppio ciclo for procedendo come nel caso del rettangolo, facendo seguire il
calcolo dall’operazione y=dominio .* y; che serve a riportare a zero i valori
di y al di fuori del dominio di interesse. Si ricorda che l’operatore .* esegue il
prodotto elemento a elemento delle due matrici.
Un metodo iterativo per risolvere il sistema Ax = b, che si basa sul calcolo
del residuo, è il metodo di Richardson definito da

x(k+1) = x(k) − α(Ax(k) − b)

a partire da un vettore iniziale x(0) , generalmente x(0) = 0. La convergenza del


metodo si ha se il raggio spettrale della matrice di iterazione I − αA è minore
di 1. Se la matrice A è definita positiva e i suoi autovalori sono compresi in
(0, λmax ), allora la scelta α ≤ 1/λmax garantisce la convergenza. Non avendo
informazioni sullo spettro di A, si può sempre scegliere α = 1/kAk per una
qualsiasi norma matriciale indotta k · k.

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

La figura 20 mostra la configurazione di una bolla di sapone calcolata col


metodo del gradiente coniugato applicato al sistema lineare ottenuto discre-
tizzando l’equazione di Laplace sul dominio [0, 3] × [0, 3]\[1, 2] × [1, 2] con le
condizioni u(x, y) = 0 sul bordo del quadrato maggiore e u(x, y) = 1 sul bordo
del quadrato minore.
La figura 21 mostra una analoga configurazione in cui il dominio è il quadrato
[0, 1] × [0, 1] e la funzione è nulla su due lati opposti del quadrato mentre vale
x(1 − x) sugli altri due lati opposti.
La figura 22 differisce dalla precedente poichè al dominio è stato tolto un
quadrato centrale al bordo del quale la funzione prende il valore nullo.
La figura 23 mostra la situazione di equilibrio di una membrana elastica
pesante vincolata ad un bordo circolare a quota 0 e ad un bordo circolare interno
a quota più elevata.
Per una panoramica dei metodi iterativi e per una descrizione algoritmica
che permette facili implementazioni, si suggerisce il documento [9].
Si riportano le function nella sintassi di Matlab che svolgono il calcolo della
configurazione di equilibrio risolvendo l’equazione di Laplace ∆u = 0. Si osservi
che, poiché l’equazione è omogenea, il parametro h non ha un ruolo effettivo nel
sistema di equazioni. Infatti esso non compare nell’iterazione.
La function 10 calcola la posizione di equlibrio nel caso di un dominio arbi-
tario contenuto in un dominio rettangolare. Il dominio in cui viene trattato il

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.

Figura 22: Configurazione di equilibrio di una membrana elastica a suppor-


to quadrato “bucato” con condizioni nulle su due lati opposti del quadrato
maggiore, pari a x(1 − x) sui rimanenti due lati, e nulle sul quadrato interno.

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

Figura 25: Soluzione dell’equazione del calore: caso stabile

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.

12 Il modello non lineare della bolla di sapone


Come già accennato nella sezione introduttiva, la superficie di minima area
sottesa da una curva chiusa nello spazio si ottiene risolvendo l’equazione non
lineare di Eulero-Lagrange
2 2
∂2u ∂u ∂u ∂ 2 u ∂2u
 
∂u ∂u
(1 + )−2 + 2 (1 + )=0
∂x2 ∂y ∂x ∂y ∂x∂y ∂y ∂x
Per curve non troppo sghembe in cui le derivate prime di u(x, y) sono “pic-
cole” questo operatore non lineare è approssimata dal laplaciano. In generale
possiamo però affrontare numericamente un problema non lineare con un ap-
proccio iterativo. Se il primo membro dell’equazione di Eulero-Lagrange lo chia-
miamo residuo e lo denotiamo con r(u), l’equazione r(u) = 0 può essere trattata
numericamente con il metodo di Richardson, nella sua forma più generale, che
produce una successione uk (x, y) di funzioni definita da
uk+1 (x, y) = uk (x, y) − αr(uk (x, y)), k = 0, 1, 2, . . .
dove α è una costante opportuna. Possiamo implementare questo metodo nel
discreto sostituendo a u(x, y) una matrice m×n con i valori di u(x, y) campionati

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)

e definiamo r(u) = u − v. Chiaramente r(u) = 0 se e solo se u = v cioè


∆u = f (x, y) che è l’equazione di Eulero-Lagrange. Quindi adottiamo questa
espressione di r(u) nel metodo di Richardson.
Con questa scelta è possibile avere convergenza con valori di α non troppo
piccoli in valore assoluto e quindi un basso numero di iterazioni.
Una ulteriore possibilità che non abbiamo implementato, consiste nel riscri-
vere l’equazione di Eulero-Lagrange come

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?

Esercizio 3 Si consideri il seguente problema di autovalori


a(x) u00 (x) = λ u(x), 0 < x < 1,
(

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

dove a(x) ≥ 0 è una funzione assegnata e inoltre si sa che le soluzioni u(x),


Z 1
normalizzate in modo che u2 (x) dx = 1, sono almeno di classe C 4 [0, 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,

dove a(x), f (x) : [0, 1] → R sono funzioni sufficientemente regolari da


garantire l’esistenza di una soluzione u(x) di classe C 4 [0, 1].
(b) Dare condizioni sufficienti su a(x) affinché l’operatore discreto Ln (x) re-
lativo alla griglia xi = ih, per i = 0, . . . , n + 1, con h = 1/(n + 1), verifichi
la proprietà 
Ln (u) ≤ 0 ⇒ ui ≤ max u0 , un+1 .

(c) Dimostrare la convergenza del metodo delle differenze finite.


(d) Dare un esempio di funzione a(x) per cui il metodo alle differenze finite
non è convergente.

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,

su una griglia di punti xi = ih, i = 0, . . . , n + 1, h = 1/(n + 1) con errore


locale di ordine h2 , assumendo a(x) : [0, 1] → R funzione sufficientemente
regolare da garantire l’esistenza di soluzioni u(x) di classe C 4 [0, 1].

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

−a(x) u00 (x) = λ u(x), 0 < x < 1,


(

u(0) = u0 (1) = 0,

dove a(x) : [0, 1] → R è una funzione sufficientemente regolare per cui


esiste una soluzione u(x) di classe C 4 [0, 1] ed analizzarne la convergenza.

Esercizio 7 (a) Si descriva un metodo alle differenze finite per la risoluzione


numerica del problema di autovalori

−u00 (x) = λ u(x), 0 < x < 1,


(

u(1) = 0, αu(0) + βu0 (0) = 0,

dove α, β sono costanti reali non nulle, e se ne analizzi la convergenza.


(b) Si dimostri che se A e B sono matrici reali simmetriche n × n tali che
A = B + θvv T , con θ ∈ R e v ∈ Rn , allora per gli autovalori α1 < . . . < αn
di A e β1 < . . . < βn di B vale

βk < αk < βk+1 , k = 1, . . . , n − 1, se θ > 0,

αk < βk < αk+1 , k = 1, . . . , n − 1, se θ < 0.

(c) Si usi il risultato precedente per dimostrare che il problema al punto (a)
ha autovalori 0 ≤ µ1 ≤ µ2 ≤ . . . tali che

(π(k − 1))2 ≤ µk ≤ (πk)2 , k = 1, 2, . . .

Esercizio 8 Sia C = (ci,j ) la matrice n × n definita da ci,j = 1 per i − j = 1


modulo n e ci,j = 0 altrove.
 T
(a) Si dimostri che gli autovettori di C sono del tipo v = 1, θ, θ2 , . . . , θn−1 ,
con θ radice n-esima dell’unità.

Si consideri l’equazione del calore

∂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),

dove c(x) è funzione periodica di periodo 2π sufficientemente regolare in modo


che la soluzione u(x, t) sia derivabile almeno 4 volte con continuità nelle variabili

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.

Esercizio 9 Si consideri l’equazione differenziale alle derivate parziali


∂u ∂u
+a = 0 x ∈ R, 0 < t < T,
∂t ∂x
u(x, 0) = f (x),

dove a ∈ R, a 6= 0, T > 0, e f (x) è una funzione assegnata di periodo 2π


sufficientemente regolare.

(a) Si dimostri che la funzione u(x, t) = f (x − at) risolve l’equazione differen-


ziale ed è periodica di periodo 2π in x.

Si vuole risolvere numericamente l’equazione differenziale sull’intervallo [0, 2π]


tenendo conto della periodicità. Si discuta la consistenza e la convergenza dei
seguenti schemi alle differenze per approssimare u(x, y) nei punti (xi , tj ) me-
diante i valori ui,j , per i = 0, . . . , m − 1, j = 1, . . . , n, dove xi = i∆x e tj = j∆t ,
con ∆x = 2π/m, ∆t = T /n.

(b) Schema 1: si approssimi la derivata rispetto a t con una differenza in


avanti
∂u(x, t) u(x, t + ∆t ) − u(x, t)
= + O(∆t ) (70)
∂t ∆t
e la derivata rispetto ad x con una differenza centrata
∂u(x, t) u(x + ∆x , t) − u(x − ∆x , t)
= + O(∆2x ).
∂x 2∆x

(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

L[u(x, t)] = 0, 0 < x < 1, t > 0,


u(x, 0) = f (x), u(0, t) = α(t), u(1, t) = β(t),

dove f (x), α(t), β(t) sono funzioni assegnate per cui la soluzione u(x, t) esiste
ed è sufficientemente regolare.

(a) Si consideri lo schema alle differenze finite ottenuto approssimando la


derivata seconda e la derivata prima con le formule

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

Esercizio 11 Dato l’operatore

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

L[u(x, t)] = 0, 0 < x < `, 0 < t < T,


u(x, 0) = f (x), u(0, t) = α(t), u(`, t) = β(t),

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

(b) Si descriva e si analizzi l’estensione dello schema di Crank-Nicolson all’e-


quazione parabolica considerata.

(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=`

si dica se il metodo ottenuto discretizzando la derivata temporale con il


rapporto incrementale

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

Esercizio 12 Si consideri l’equazione del calore

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

dove θ ∈ [0, 1] e r = γ∆t /∆2x , con le condizioni

vi,0 = c(xi ), per i = 0, . . . , n + 1,


v0,j = a(tj ), vn+1,j = b(tj ), per j = 0, . . . , m.

(a) Stimare l’errore locale di discretizzazione.


(b) Scrivere la matrice Lm,n (rettangolare) che descrive l’operatore discreto
e la matrice Am,n (quadrata) del sistema lineare che descrive il metodo.
(c) Dare condizioni necessarie su θ affinché lo schema sia incondizionatamente
stabile.
(d) Dare condizioni sufficienti su θ affinché Lm,n soddisfi il principio del
massimo.
(e) Sotto le condizioni del punto (d) dare una stima dell’errore globale

max |ui,j − vi,j |.


i,j

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

e si approssimi la derivata prima presente nelle condizioni al contorno rispettiva-


mente con la differenza in avanti u0 (0) = (u(x1 ) − u(x0 ))/h + hσ0 , e la differenza
all’indietro u0 (1) = (u(xn ) − u(xn−1 ))/h + hσn .

1. Si scriva il sistema lineare nelle incognite u(x1 ), . . . , u(xn ) che descrive il


metodo delle differenze finite applicato all’equazione differenziale in ogget-
to. In particolare si dimostri che il sistema può essere scritto nella forma
An u = f + h2 τ + σ, dove f = (f (xi )) ∈ Rn , il vettore τ ∈ Rn ha nor-
ma infinito limitata superiormente da una costante indipendente da n, il
vettore σ ∈ Rn che dipende dall’errore di discretizzazione delle condizioni
al contorno, ha anch’esso norma infinito limitata superiormente da una
costante indipendente da n. Infine An = − h12 Bn , dove gli elementi di Bn
sono costanti indipendenti da n.
2. Si dimostri che la matrice Bn può essere scritta nella forma

Bn = trid(−1, 2, −1) − vwT

dove v, w ∈ Rn sono opportuni vettori di norma infinito indipendente da


n.
3. Si usi la formula di Sherman-Woodbury-Morrison1 per dimostrare che lo
schema alle differenze finite è convergente e se ne valuti ordine.
1 Si ricorda la formula di Sherman-Woodbury-Morrison: (A + uv T )−1 = A−1 −
A−1 uv T A−1 /(1 + v T A−1 u)

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.

Esercizio 15 a) Siano A, B matrici reali e simmetriche n×n tali che A = D+B


con D matrice diagonale reale di elementi diagonali d1 , . . . , dn . Denotando α1 ≤
α2 ≤ · · · ≤ αn gli autovalori di A e β1 ≤ β2 ≤ · · · ≤ βn gli autovalori di B si
dimostri che vale
βi + min dj ≤ αi ≤ βi + max dj .
j j

b) Si consideri ora l’equazione differenziale

f (x)u(x) − u00 (x) = g(x), 0<x<1


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

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.

Esercizio 16 a) Sia H = (hi,j ) la matrice n × n con n = 2m, m intero, tale che


hi,i+1 = −h(i+1, i) = 1, i = 1, . . . , n−1, hi,j = 0 altrove. Sia K = H T H. Dopo
aver descritto K si determini una matrice di permutazione Π tale che ΠT KΠ è
diagonale a blocchi del tipo I2 ⊗ S, dove I2 è la matrice identica 2 × 2, S è la
matrice m × m data da S = tridiag(−1, 2, −1) − e1 eT1 , con e1 = (1, 0, . . . , 0)T e
tridiag(−1, 2, −1) è la matrice tridiagonale simmetrica con elementi uguali a 2
sulla diagonale e -1 sulla sopra e sotto diagonale.
b) Si dimostri che A = (n + 1)2 K è tale che kA−1 k2 e kA−1 k∞ sono limitate
superiormente da una costante. Si dimostri analoga proprietà per la matrice
I + (n + 1)2 K.
c) Si consideri il problema

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


(71)
v(x) + u0 (x) = g(x)

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.

f 0 (x) = h1 (f (x + h) − f (x)) + O(h) differenza in avanti


0 1
f (x) = h (f (x) − f (x − h)) + O(h) differenza all’indietro
0 1 2
f (x) = 2h (f (x + h) − f (x − h)) + O(h ) differenza centrata

Esercizio 17 Si consideri il problema agli autovalori −u00 (x) = λu(x) dove


u(x) : [0, 1] → R è sufficientemente regolare e tale che u0 (0) = u0 (1) = 0.
a) Si dia un’espressione esplicita degli autovalori λ e delle autofunzioni u(x).
b) Si descrivano le matrici che discretizzano il problema agli autovalori otte-
nute approssimando la derivata seconda con una formula dei 3 punti e le derivate
prime delle condizioni al contorno rispettivamente con la differenza centrata per
u0 (0) e u0 (1), e con le differenze in avanti per u0 (0) e all’indietro per u0 (1).
c) Utilizzando il teorema di Bauer-Fike si studi la convergenza degli au-
tovalori del problema discreto agli autovalori del problema continuo nelle due
discretizzazioni esaminate.
d) (Facoltativo). Si dimostri che se (B + F )u = λu e Bv = µv, dove B è
reale simmetrica e v T u 6= 0 allora λ − µ = v T F u/v T u. Si usi questo fatto per
migliorare le stime di convergenza date al punto c).

Esercizio 18 a) Sia A matrice n × n tale che A = aI − (1 − )Z − (1 + )Z T ,


con 0 <  < 1, e Z = (zi,j ), zi+1,i = 1, zi,j = 0 altrimenti. Dimostrare che
se a ≥ 2 allora A−1 è invertibile e ha inversa non negativa. Dimostrare che se
a > 2 allora kA−1 k∞ , kA−1 k1 ≤ γ con γ costante indipendente da n. Se a = 2
dare limitazioni superiori a kA−1 k∞ , in funzione di  e di n.
b) Si consideri il problema

∂ 2 u(x, t) ∂u(x, t) ∂u(x, t)


+b −γ = 0, 0 < x < 1, 0 < t < T
∂x2 ∂x ∂t
(72)
u(x, 0) = g(x), 0 ≤ x ≤ 1
u(0, t) = α(t), u(1, t) = β(t)

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

a(x)u00 (x) = λv(x)


v 00 (x) = λu(x)

sull’intervallo [0, 1] con u(0) = u(1) = v(0) = v(1) = 0, i = 1, 2, e a(x) ≥ 0 è


una funzione sufficientemente regolare in modo che la soluzione del problema sia
di classe almeno C 4 . Si dia una discretizzazione alle differenze finite e si discuta
la convergenza dello schema.

Esercizio 20 Si consideri il seguente problema

u(4) (x) = f (x), x ∈ (0, 1)


u(0) = u(1) = 0, u00 (0) = u000 (1) = 0

1. Si dimostri che se f (x) ∈ C k [0, 1] allora esiste una soluzione u(x) ∈


C k+4 [0, 1].
2. Si riformuli il problema nel modo seguente
 00
 v (x) = f (x)
v(x) = u00 (x)
u(0) = u(1) = 0, v(0) = v 0 (1) = 0

e si dia una approssimazione alle differenze finite analizzandone la stabi-


lità e la convergenza nel caso in cui la soluzione u(x) sia sufficientemente
regolare.

Esercizio 21 Dimostrare che se f (x) ∈ C 6 [a, b], dove a < b, allora

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

a) Dimostrare che se c = a/4 − b e b = 1 − a/4 lo stencil approssima il lapla-


2 2
ciano ∆u(x, y) = ∂ u(x,y)
∂x2 + ∂ u(x,y)
∂y 2 su [0, 1] × [0, 1] con errore locale O(h2 ) sui
punti (xi , yj ), xi = ih, yj = jh, i, j = 1, n, h = 1/(n + 1) purché u(x, y) sia
sufficientemente regolare.
b) Utilizzando il prodotto di Kronecker scrivere la matrice associata allo stencil
e scrivere i suoi autovalori in funzione di a. Dimostrare che se 2 ≤ a ≤ 4 lo
schema alle differenze ricavato dallo stencil è stabile in norma 2. Facoltativo:
dire se ci sono altri valori di a che danno stabilità in norma 2.
c) Dare condizioni su a affinché valga il principio del massimo e, sotto queste
condizioni, dimostrare la convergenza in norma infinito dello schema alle diffe-
renze applicato al problema di Poisson sul quadrato [0, 1] × [0, 1] con condizioni
al bordo di Dirichlet.

Esercizio 23 Sia a ∈ R e u(x, t) : R × R → R una funzione sufficientemente


regolare. Verificare che la derivata di u(x, t) lungo (1, a) è ∂u(x,t)
∂x + a ∂u(x,t)
∂t per
∂u(x,t) ∂u(x,t)
cui le soluzioni dell’equazione ∂x + a ∂t = 0 sono costanti lungo le rette
parallele al vettore (1, a).
Si consideri poi l’equazione

∂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

d2 u(x + v1 t, y + v2 t) d2 u(x + w1 t, y + w2 t) 1 ∂ 2 u(x, y) 3 ∂ 2 u(x, y)



+ = +
dt2
t=0 dt2
t=0 2 ∂x2 2 ∂y 2

∂2u ∂2u
e usare questo fatto per dimostrare che per il laplaciano ∆u = ∂x2 + ∂y 2 vale

d2 u(x + v1 t, y + v2 t) d2 u(x + w1 t, y + w2 t) ∂ 2 u(x, y)


 
2
∆u(x, y) = + +
3 dt2
t=0 dt2
t=0 ∂x2

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

c) Sia Ω un rombo aperto di lato unitario e si consideri l’equazione differen-


ziale
∂ 2 u(x, y) ∂ 2 u(x, y)
+ = f (x, y), (x, y) ∈ Ω,
∂x2 ∂y 2
u(x, y) = g(x, y), (x, y) ∈ δΩ,

dove f (x, y) e g(x, y) sono funzioni sufficientemente regolari in modo che la


soluzione u(x, y) esiste ed è derivabile 4 volte con continuità. Discretizzare
l’equazione differenziale su un reticolo a maglia triangolare di lato h = 1/(n + 1)
sul rombo come nella seconda figura, dove n è un intero positivo, usando la
formula descritta sopra.
In particolare: c0) dare una descrizione della matrice rettangolare L di dimen-
sioni n2 × (n2 + m) che discretizza l’operatore differenziale su questo reticolo,
dove n2 è il numero dei punti interni al dominio e m è il numero di punti di
bordo coinvolti; c1) dare una descrizione della matrice A di dimensioni n2 × n2
del sistema lineare ottenuto imponendo le condizioni di Dirichlet, e descrivere le
sue proprietà; c2) dimostrare che per questa discretizzazione vale il pricipio

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.

Esercizio 25 Si dia una discretizzazione alle differenze finite dell’equazione del


calore nella forma
∂2 ∂
∂x2 u(x, t) − γ ∂t u(x, y) = 0, x ∈ [0, 1], t ∈ [0, T ], γ > 0
∂ ∂
∂x u(x, t)|x=0 = ∂x u(x, t)|x=1 = 0, t ∈ [0, T ]
u(x, 0) = f (x), x ∈ [0, 1]

assumendo che la soluzione u(x, t) sia definita in un intervallo [a, b] ⊃ [0, 1] e


sia sufficientemente regolare. Per la discretizzazione della derivata rispetto a t
si usi una differenza all’indietro e per la derivata prima rispetto a x sui bordi si
usi una differenza centrata.
Si analizzi la convergenza dello schema alle differenze cosı̀ ottenuto.

Esercizio 26 Si considerino le matrici n × n


   
1 −1 a 1 −1
−1 2 −1  −1 2 −1 
   
A(a, b) = 
 .. .. .. 
, B =
 .. .. .. .

 . . . 


 . . . 
 −1 2 −1   −1 2 −1
b −1 1 −1 2

1. Determinare una matrice bidiagonale inferiore L tale che B = LLT e


matrici U, V di dimensione n × 2 tali che A(a, b) = B + U V T .
2. Sapendo che in generale det(In + W Z T ) = det(Ik + Z T W ) per matrici
W, Z di dimensioni n × k, dove In e Ik denotano le matrici identiche di
ordine rispettivamente n e k, dare condizioni su a e b affinché det A 6= 0.
3. Sapendo che in generale vale (In + W Z T )−1 = In − W (Ik + Z T W )−1 Z T ,
dare una espressione dell’inversa di A usando i punti precedenti.
Si consideri ora il seguente problema

− u00 (x) = f (x), x ∈ (0, 1)


0
u(0) = αu (1), u(1) = βu0 (0), αβ 6= 0.

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)

(a) Si pone ti = iδ, xi = γ(ti ), hi = xi − xi−1 e ui = u(xi ). Per ricavare


le formule che approssimano la derivata seconda sulla discretizzazione xi
si sviluppa in serie u(x) in xi con incremento −hi e hi+1 , assumendo che
la soluzione sia derivabile almeno quattro volte con continuità. Si deve
tenere conto della possibilità che i punti xi non siano equispaziati, quindi
hi 6= hi+1 per qualche indice i. In ogni caso si suppone che hi > 0 per
evitare che xi−1 = xi che renderebbe impraticabile la discretizzazzione.
Per gli indici i per cui hi 6= hi+1 si ha
u00i u000 uıv (νi,1 )
ui+1 = ui + hi+1 u0i + h2i+1 + h3i+1 i + h4i+1 ,
2 6 24
00 000 ıv
u u u (νi,2 )
ui−1 = ui − hi u0i + h2i i − h3i i + h4i .
2 6 24
Sottraendo entrambi i membri si ha
u00i u000
ui+1 − ui−1 = (hi+1 + hi )u0i + (h2i+1 − h2i ) + (h3i+1 + h3i ) i + ηi ,
2 6
da cui
ui+1 − ui−1 u00 h3 + h3i u000 ηi
u0i = − (hi+1 − hi ) i − i+1 i
+ ,
hi+1 + hi 2 hi+1 + hi 6 hi+1 + hi
mentre sommando si ha
u00i u000
ui+1 + ui−1 = 2ui + (hi+1 − hi )u0i + (h2i+1 + h2i ) + (h3i+1 − h3i ) i + ζi ,
2 6
dove
M4
|ηi |, |ζi | ≤ (h4i+1 + h4i ) , M4 = max |uıv (x)|.
24 x∈[0,1]

Sostituendo l’approssimazione della derivata prima si ha

ui+1 + ui−1 = 2ui + θi (ui+1 − ui−1 ) + hi+1 hi u00i


 u000
i hi+1 − hi
+ (1 − θi )h3i+1 − (1 + θi )h3i − θi ηi + ζi , dove θi = ,
6 hi+1 + hi
Si arriva cosı̀ alla discretizzazione
(1 − θi )ui+1 − 2ui + (1 + θi )ui−1
u00i = + i , (76)
hi+1 hi

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]

L’errore locale tende a zero con δ 2 , quindi la discretizzazione è consistente


del secondo ordine.

117
(b) La discretizzazione dell’equazione differenziale con la formula trovata dà

(1 − θi )ui+1 − 2ui + (1 + θi )ui−1


= f (xi ) − i ,
hi+1 hi
ovvero

(1 − θi )ui+1 − 2ui + (1 + θi )ui−1 = hi+1 hi f (xi ) − hi+1 hi i .

Il sistema che si ottiene è

An u = Hn f − Hn ,

dove u e f sono i vettori le cui componenti


 sono ui e f (xi ) per i = 1, . . . , n,
Hn = diag h1 h2 , h2 h3 , . . . , hn hn+1 e
 
−2 1 − θ1
 1 + θ2
 −2 1 − θ2 

 .. .. .. 
An = 
 . . . .

 .. .. 
 . . 1 − θn−1 
1 + θn −2

Rimuovendo le componenti dell’errore locale si ottiene il sistema

An v = Hn f .

Poiché |θi | < 1 la risoluzione di questo sistema non crea difficoltà.

Indicato con Ln l’operatore della discretizzazione e con z = (z0 , . . . , zn+1 ),


dalla (76) si ha

hi+1 hi Ln (z) = (1 − θi )zi+1 − 2zi + (1 + θi )zi−1 ,

verifichiamo che se Ln (z) ≥ 0 allora max (z0 , zn+1 ≥ zi , i = 1, . . . , n.


Infatti se esistesse un punto interno zj = maxi zi , sarebbe

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.

Per studiare la convergenza in norma 2, si applicano le considerazio-


ni precedenti alla discretizzazione in cui xi = γ(tn−i+1 ). La matrice
discretizzata è ora la ATn e si ottiene kA−T
n k∞ ≤ 1/2. Ne segue

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.

Si applica all’equazione uno schema classico alle differenze, assumendo che


la soluzione sia derivabile 4 volte con continuità
si−1 − 2si + si+1 si+1 − si−1
γ 0 (ti ) − γ 00 (ti ) = f (γ(ti )) (γ 0 (ti ))3 + i ,
δ2 2δ
dove
M4 M3
i = δ 2 γ 0 (ti )τi − γ 00 (ti )σi ,

|τi | ≤
, |σi | ≤ .
12 3
Quindi la discretizzazione risulta consistente di ordine δ 2 .

119
(b) Il sistema che si ottiene è

An s = g + ,

dove s, g e  sono i vettori di componenti si , f (γ(ti )) (γ 0 (ti ))3 e i , e An


è la matrice tridiagonale la cui i-esima riga è

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,

la cui matrice ha predominanza diagonale se

2 γ 0 (t)
γ 00 (ti ) = 0 oppure γ 0 (ti ) 6= 0 e δ≤ , per t ∈ [0, 1].
|γ 00 (t)|

Per evitare la singolarità di An , si fa l’ipotesi che γ 0 (t) non si annulli.

Per studiare la convergenza in norma infinito si utilizza il principio del


massimo nel discreto. Si pone

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

(c) Nel caso particolare in cui γ(t) = 4(t − 1/2)3 + 1/2, è

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

Nell’ipotesi in cui γ 0 (t) 6= 0, l’equazione (78) si può anche scrivere come

(s0 (t)a(t))0 = f (γ(t))γ 0 (t), a(t) = 1/γ 0 (t).

Si può quindi applicare la teoria essendo a(t) > 0.

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 τ + σ ,

dove u e f sono i vettori di componenti ui e fi , e τ e σ sono i vettori di


componenti τi e σi , per i = 1, . . . , n, e
αh
 
−2 1 +
 2 
 1 − αh αh
 
−2 1+ 
 2 2 
1  
.. .. ..

Hn = 2   . (79)

. . .
h  
 . .. . .. αh 
 1+ 
 2 
 αh 
1− −2
2

Quindi l’errore locale è dato dal vettore τ + σ e, nell’ipotesi fatta che
u(x) ∈ C 4 [0, 1], la discretizzazione risulta consistente di ordine h2 .
Rimuovendo le componenti dell’errore locale si ottiene il sistema

Hn v = f ,

la cui matrice Hn è irriducibile e ha predominanza diagonale se h < 2/|α|.


Sotto questa ipotesi il sistema ha un’unica soluzione v che si assume come
approssimazione della u.
Definito  = v − u l’errore globale, si ha
 
 = h2 Hn−1 τ + σ . (80)

(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

(ih)2 (ih − 1)2


wi = w(xi ) = se α≥0 e wi = w(xi ) = se α<0
2 2
e si verifica che

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.


L’operatore Ln soddisfa quindi al principio del massimo nel discreto e si


ha  
max ± b i + h2 kτ + σk∞ wi ≤ h2 kτ + σk∞ max wi ,
i i

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

Per studiare la stabilità in norma 2, si considera il problema (68) con


L[u] = u00 − α u0 . Le conclusioni a cui siamo arrivati valgono anche in
questo caso, in quanto non dipendono dal segno di α. In particolare, per
la matrice discretizzata, che ora è la HnT , dove Hn è definita in (79), si
ottiene kHn−T k∞ ≤ 1/2. Ne segue
1
q q
kHn−1 k2 ≤ kHn−1 k∞ kHn−1 k1 = kHn−1 k∞ kHn−T k∞ ≤ .
2
Questo garantisce la stabilità in norma 2.

Risoluzione esercizio 3.

(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) e si approssima u00 (xi ) con la solita formula
centrale a tre punti. Tenendo conto che u0 = un+1 = 0, si ottiene il
sistema
A L u + h2 A τ = λ u, (81)
dove
 

a(x1 )
 −2 1
a(x2 )
 .. 
  1  1 −2 . 
A= , L= 2 ,
 
.. h

.. ..
 .  
 . .

1 
a(xn ) 1 −2

u è normalizzato in modo che uT u = 1, e τ è il vettore le cui componenti


1
sono τi , tali che |τi | ≤ 12 maxx∈[0,1] |u(4) (x)|. Il sistema (81) può essere
anche scritto nella forma

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

da cui si ricavano l’approssimazione µ di λ e v di u. È

B = A1/2 P A−1/2 , dove P = A1/2 L A1/2 .

La matrice P è simmetrica, perciò esistono una matrice ortogonale Q e


una matrice diagonale D tali che P = Q D QT e si ha

B = S D S −1 , dove S = A1/2 Q.

Quindi la matrice B è diagonalizzabile. Per il teorema di Bauer-Fike per


ogni autovalore λ di B + F esiste un autovalore µ di B tale che

|λ − µ| ≤ 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 .

Un modo alternativo di risolvere il problema è quello di sostituire al


sistema (81) il sistema
 
A−1/2 A L + h2 A τ uT u = λA−1/2 u,

124
cioè (B + F ) z = λ z, dove

B = A1/2 L A1/2 , F = h2 A1/2 τ z T A, z = A−1/2 u.

Rimuovendo il termine dell’errore locale si ottiene il sistema

B v = µ v,

da cui si ricavano l’approssimazione µ di λ e v di z. La matrice B è sim-


metrica. Ne segue che per ogni autovalore λ di B + F esiste un autovalore
µ di B (e quindi di A L) tale che

|λ − µ| ≤ kF k2

La matrice F è una diade, quindi

kA τ k2
kF k2 = h2 kA1/2 τ z T Ak2 = h2 kA τ uT k2 ≤ h2 kA τ k2 kuk2 = h2 .
kuk2

Come nel caso precedente è kF k2 ≤ c h2 max |a(x)|, con c costante, per


x∈[0,1]]
cui
λ = µ + O(h2 ).
Si noti come il passaggio attraverso una matrice B simmetrica abbia
migliorato la valutazione dell’errore del calcolo dell’autovalore.

Risoluzione esercizio 4.

(a) Con l’approssimazione


1  1 (4)
u00 (x) = u(x − h) − 2 u(x) + u(x + h) + τ h2 ,

2
τ= u (ξ)
h 12
si ottiene la discretizzazione

 1 −u
 
2
i−1 + (2 + h ai ) u i − ui+1 = fi + τi h2 ,
h2
 u =u = 0,
0 n+1

dove ui = u(xi ), ai = a(xi ) e fi = f (xi ). L’operatore discreto Ln (x)


risulta
−1 2 + h2 a1
 
−1

 −1 2 + h2 a2 −1 

1  .. .. .. 
Ln = 2  . . . .
h  . .

.. ..
 
 −1 
−1 2 + h2 an −1

125
(b) Tenendo conto delle condizioni al contorno e rimuovendo le componenti
dell’errore locale si ottiene il sistema

Hn v = f ,

dove f è il vettore di componenti fi e

2 + h2 a1
 
−1

 −1 2 + h2 a2 −1 

1  . .. .. .. 
Hn = 2  . . .
h   .. ..


 . . −1 
−1 2 + h2 an

La condizione a(x) ≥ 0 oppure a(x) ≤ −4/h2 assicura la predominanza


diagonale e quindi la risolubilità del sistema di ordine n. Ma la seconda
condizione non può valere per ogni n, e quindi si scarta.
(c) Per studiare la convergenza del metodo si utilizza il principio del massimo.
Si considera il vettore u di componenti ui = i2 h2 /2 per i = 0, . . . , n + 1.
La i-esima componente `i del vettore Ln u risulta

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

−ui−1 + αi ui − ui+1 ≤ 0, con αi ≥ 2,

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

dove τ è il vettore di componenti τi . Applicando il principio del massimo,


si verifica che
h2 h2
max u(4) (x) ,

|i | ≤ kτ k∞ ≤
2 24 x∈[0,1]
e quindi vi è convergenza.

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.

(a) Con le approssimazioni


1  1
u00 (x) = u(x−h)−2 u(x)+u(x+h) +τ h2 , max |u(4) (x)|

2
|τ | ≤
h 12 x∈[0,1]

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)

dove u è il vettore di componenti ui normalizzato in modo che uT u = 1,


e τ e σ sono i vettori di componenti τi e σi , per i = 1, . . . , n, e
a1 h
 
−2 1 −
 2 
 1 + a2 h a2 h
 
−2 1− 
 2 2 
1  
.. .. ..

H=− 2  .

. . .
h  
 . .. . .. a n−1 h 
 1− 
 2 
 an h 
1+ −2
2
Se h < 2/ maxx∈[0,1] |a(x)|, la matrice H è irriducibile e ha predominan-
za diagonale, quindi è non singolare. L’errore locale è dato dal vettore

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

Rimuovendo il termine dell’errore locale si ottiene il problema discretizzato


agli autovalori
H v = µv,
da cui si ricavano le approssimazioni µ di λ e v di u.
(b) Per studiare la convergenza dell’autovalore µ di H ad un autovalore λ di
H +F si utilizza il teorema di Bauer-Fike. La matrice H è diagonalizzabile
−1
perché è simile ad una matrice K simmetrica. Infatti H = B KB, dove
B = diag b1 , . . . , bn , con
s
2 + ai h
bi+1 = bi , b1 = 1,
2 − ai+1 h

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

lim kSk2 kS −1 k2 = lim kBk2 kB −1 k2 .


h→0 h→0

Poiché B è diagonale, si ha kBk2 = maxi=1,n bi . Per cui


s s
i−1 i−1 i−1
Y 2 + aj h Y 1 + aj h/2 Y
bi = = ∼ (1 + aj h), i > 1,
j=1
2 − aj+1 h j=1 1 − aj+1 h/2 j=1

ed esiste c = c(i) tale che


 c h i−1
bi ∼ 1 +
2
(media geometrica). Si può stimare che
 α n
kBk2 < 1 + ,
2n
per un’opportuna α. Con un ragionamento analogo si ha
 β n
kB −1 k2 < 1 − ,
2n

128
per un’opportuna β. Quindi il limite

lim kBk2 kB −1 k2 < eα/2 e−β/2


n→∞

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

con `1 , `2 finiti, ne segue che kF k2 ≤ γ h2 , con γ costante, per cui

λ = µ + O(h2 ).

Risoluzione esercizio 6.

(a) Si suppone che a(x) 6= 0 per x ∈ [0, 1] e si indica con s = sign(a(x)).


Per un fissato n, si discretizza l’intervallo [0, 1] con i punti xi = ih, i =
0, . . . , n + 1, con h = 1/(n + 1) e si approssima u00 (xi ) con la solita formula
centrale a tre punti. La condizione al contorno nel punto 0 viene assegnata
con u0 = 0 e la condizione nel punto 1 viene discretizzata con
un+2 − un 1
u0 (xn+1 ) = + σn+1 h2 , dove |σn+1 | ≤ max |u000 (x)|
2h 3
Si ottiene il sistema

A L u + h2 A τ + 2an+1 σn+1 h en+1 = λ u, (83)

dove ai = |a(xi )|,


 
−2 1
 .. 
 1 −2 . 
 s  
A = diag a1 , . . . , an+1 , L= 2  .. .. ,
h 
 . . 1 

 1 −2 1 
2 −2

u = [u1 , . . . , un+1 ]T è normalizzato in modo che uT u = 1, τ è il vettore


le cui componenti τi sono tali che |τi | ≤ max |u(4) (x)|/12 e en+1 è l’ (n +
1)−esimo vettore canonico. Il sistema (83) può essere anche scritto nella
forma
(B + F ) u = λ u,

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.

È det(A) 6= 0. Poiché det(L) = (−1)n 2 s/h2 , la matrice B risulta inverti-


bile. Dal sistema si ricavano l’approssimazione µ di λ e v di u.
La matrice L è simile ad una tridiagonale simmetrica, infatti L = R T R−1 ,
dove
−2 1
 
.
 1 −2 . .
 
√ 

1  
R = diag 1, . . . , 1, 2 e T = 2  . . . . .
h  . . 1
√ 

 1 √ −2 2 
2 −2

Quindi B è simile ad una matrice simmetrica, infatti B = A1/2 P A−1/2 ,


dove P = A1/2 R T R−1 A1/2 . Perciò esistono una matrice ortogonale Q
e una diagonale D tali che P = QDQT e B = SDS −1 , dove S = A1/2 Q.
Per il teorema di Bauer-Fike per ogni autovalore λ di B + F esiste un
autovalore µ di B tale che

|λ − µ| ≤ 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

La matrice F è una diade, quindi


kA ρk2
kF k2 = kh A ρ uT k2 ≤ h kA ρk2 kuk2 = h .
kuk2
Poiché
max |u000 (x)|2
kρk22 k2σn+1 en+1 k22 4 |σn+1 |2 4 x∈[0,1]
lim 2 = lim 2 = lim 2 ≤ R1 = `,
h→0 kuk2 h→0 kuk2 h→0 kuk2 9 u2 (x) dx
0

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]

Quindi la condizione nel punto x0 risulta


αu0 1
+ (u1 − u−1 ) = −σ0 h2 .
β 2h
D’altra parte
−u−1 + 2u0 − u1
= λ u0 + τ0 h2 ,
h2
quindi sostituendo u−1 si ottiene l’equazione
1 α
2 − 2γh u0 − 2u1 = λu0 + τ0 h2 + 2σ0 h,

dove γ= .
h2 β
 T  T
Posto uT = u0 , u1 , . . . , un , τ T = τ0 , τ1 , . . . , τn e f = h2 τ +
2hσ0 e1 , il sistema che si ottiene può essere scritto nella forma

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,

e si approssimano gli autovalori del problema continuo con quelli della


matrice A. Per studiare la convergenza dei µk , k = 1, . . . , n ai λk , k =
1, 2, . . . quando h → 0, si utilizza il teorema di Bauer-Fike, che però si
applica a matrici simmetriche, mentre la A non lo è.
−1
Si nota che la A√
è simile ad una
 matrice simmetrica, infatti A = H S H ,
dove H = diag 2, 1, . . . , 1 e
 √ 
2 −√
2γh − 2
 − 2
1  2 −1 
S= 2  .

h  . .. ..
. −1 
−1 2

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

con `1 , `2 finiti, ne segue che kF k2 ≤ cost h, per cui

λ = µ + 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.

In realtà la limitazione richiesta per gli autovalori del problema continuo


si può trovare più semplicemente notando che se si pone u(x) = a sin ωx +
b cos ωx, risulta λ = ω 2 . Imponendo le condizioni al bordo, risulta che le
costanti a, b e ω devono soddisfare le condizioni

a sin ω + b cos ω = 0 e γb + aω = 0,

da cui si ricava l’equazione


ω
tan ω = .
γ

Se γ > 0 le soluzioni positive soddisfano le limitazioni kπ < ωk < (k +


1/2)π, se γ < 0 le soluzioni positive soddisfano le limitazioni (k − 1/2)π
 <
ωk < kπ. Quindi in generale (k−1)π < ωk < (k+1)π, da cui (k−1)π 2 <
2
λk < (k + 1)π .

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.

Posto v1 = 1, si ricava vj = vj−1 /λ = 1/λj−1 , quindi vn = 1/λn−1 .


Dovendo essere vn = λ v1 , risulta che λ deve soddisfare la condizione
λn = 1, quindi λ deve essere una radice n-esima dell’unità e risulta θ =
1/λ. Ne segue che anche θ deve essere una radice n-esima dell’unità.
(b) Si indica con
∂ 2 u(x, t) ∂u(x, t)
L[u] = γ −
∂x2 ∂t
l’operatore differenziale dell’equazione. Posto

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

dove ν(ξ, t) = θτ (ξi , tj ) + (1 − θ)τ (ξi , tj−1 ), è


γ h 
L[ui,j ] = 2 θ ui−1,j − 2ui,j + ui+1,j
∆x
i 1 
+(1 − θ) ui−1,j−1 − 2ui,j−1 + ui+1,j−1 − ui,j − ui+1,j−1
∆t
+`i,j , dove `i,j = γν(ξ, tj )∆2x − σ(xi , ηj )∆t .

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 .

Il sistema ottenuto rimuovendo l’errore locale e ponendo r = γ∆t /∆2x è


1  
− rθ vi−1,j + (1 + 2rθ)vi,j − rθ vi+1,j
∆t
1   
= r(1 − θ) vi−1,j−1 + (1 − 2r 1 − θ) vi,j−1 + r(1 − θ)vi+1,j−1 ,
∆t

con v0,j = vn+1,j per j = 1, . . . , m e vi,0 = c(xi ), per i = 0, . . . , n + 1.


Tenendo conto delle condizioni al contorno, questo sistema si può scrivere
   
v1 v0,j
Am,n v = f , dove v =  ...  , v j =  ...  ,
   

vm vn,j

in cui f è un vettore formato da m sottovettori lunghi n + 1 e Am,n è la


matrice bidiagonale inferiore a blocchi
 
A
1  −B A

Am,n = ,

∆t 
 . .. . .. 
−B A

dove i blocchi sono le matrici circolanti di ordine n + 1



A = circ − rθ, 1 + 2rθ, 0, . . . , 0, −rθ ,

B = circ r(1 − θ), 1 − 2r 1 − θ), 0, . . . , 0, r(1 − θ) .

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

Se θ > 1 − 1/(2r) è B ≥ O. Inoltre A è dominante diagonale, con gli


elementi principali positivi e gli altri elementi ≤ 0, quindi A−1 ≥ O.
Indicato con e il vettore di m(n + 1) componenti uguali a 1, si ha Ae = e,
Be = e, quindi A−1 e = e. Ne segue che kA−1 k∞ = 1, kBk∞ = 1,
kV k∞ = 1 e
m+1
kA−1
n,m k∞ ≤ (m + 1)∆t kA
−1
k∞ = (m + 1)∆t = ,
m

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.

(a) Posto u(x, t) = f (x − at), si ha


∂u ∂u
= −a f 0 (x − at), = f 0 (x − at), u(x, 0) = f (x),
∂t ∂x
quindi la funzione soddisfa l’equazione data. Inoltre

u(x + 2π, t) = f (x + 2π − at) = f (x − at) = u(x, t).

(b) Posto ui,j = u(xi, tj ), con lo schema 1 si ha


ui,j+1 − ui,j ui+1,j − ui−1,j
+a + τi,j = 0, dove τi,j = O(∆t ) + O(∆2x ).
∆t 2∆x
Posto r = ∆t /(2∆x ), per i = 0, . . . , m − 1 e j = 0, . . . , n si ha

ui,j+1 −ui,j +r a ui+1,j −ui−1,j +τi,j ∆t = 0, con ui,0 = f (xi ), u0,j = um,j .

Si ordinano le ui,j per colonna


   
u1 u0,j
u =  ...  , dove uj =  ..
.
   
.
un um−1,j

In forma matriciale il sistema si scrive

Am,n u = f + τ ,

in cui la matrice Am,n ha la forma


 
  1 ra −ra
I  −ra 1 ra 
 C I  
 .. .. ..


Am,n =

.. .. ,

dove C= . . . ,
 . .  
 .. ..


C I
 . . ra 
ra −ra 1

e f e τ sono opportuni vettori formati da n sottovettori lunghi m. In


particolare il primo sottovettore f 1 di f dipende dalla f (x), mentre gli
altri sottovettori sono nulli.

136
Rimuovendo l’errore locale di discretizzazione, il sistema da risolvere ri-
sulta
Am,n v = f ,
e la soluzione è

v1 = f 1 , v 2 = −Cf 1 , ..., v i = (−1)i−1 C i−1 f 1 . (85)

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 .

Ne segue che gli autovalori λ di B soddisfano a relazioni del tipo λ2 = −|λ|,


quindi sono numeri immaginari puri e non tutti nulli. Allora la matrice C
ha almeno un autovalore complesso della forma 1 + λ con |1 + λ| > 1, per
cui ρ(C) > 1. Se ne conclude che il metodo non è stabile.
In alternativa si nota che la C è circolante: i suoi autovalori sono
2π 2π
λj = 1 + ra ω j−1 − ω (n−1)(j−1) ,

ω = cos + i sin .
n n
Quindi
2(j − 1)π
λj = 1 + ra ω j−1 − ω (j−1) = 1 + 2 ra i sin

.
n
Ne segue che esistono indici j per cui |λj | ≥ 1 qualunque sia r e il segno
di a. Quindi il metodo non è stabile.
(c) Con lo schema 2 si ottiene
1
ui,j+1 − (ui+1,j + ui−1,j ) + r a (ui+1,j − ui−1,j ) + τi,j ∆t = 0,
2
con ui,0 = f (xi ), u0,j = um,j .

In questo caso la matrice circolante C della Am,n assume la forma


 
0 ra − 1/2 −ra − 1/2
 −ra − 1/2 0 ra − 1/2 
 
 .. .. .. 
C=  . . . .

 . .. . ..

 ra − 1/2 
ra − 1/2 −ra − 1/2 0

Se r|a| ≤ 1/2 si ha kCk∞ = 1 e quindi ρ(C) ≤ 1. Perciò kC i k∞ ≤ 1 e


ρ(C i ) ≤ 1 per ogni i. Dalla (85) segue che kv i k∞ ≤ kf 1 k∞ e quindi la
stabilità e la convergenza dello schema 2.

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π]

La matrice C non è più circolante, ma viene maggiorata in modulo dal mo-


dulo di quella considerata sopra, per cui valgono gli stessi risultati ottenuti
sopra.

Risoluzione esercizio 10.


(a1) Fissati n, m, tmax e posto ∆x = 1/(n + 1), e ∆t = tmax /m, si discretizza
il dominio [0, 1]×[0, tmax ] con i nodi xi = i ∆x , i = 0, . . . , n+1 e tj = j ∆t ,
j = 0, . . . , m. Si pone ui,j = u(xi , tj ). Con lo schema indicato al punto a)
si ottiene dalla discretizzazione
1   ∆2
r ui−1,j − 2ui,j + ui+1,j − ui,j − ui,j−1 + x τi,j − ∆t σi,j = 0,

∆t γ
∆t
dove r = e gli errori locali |τi,j |, |σi,j | sono superiormente limitati.
γ∆2x
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
∆2x
An,m u = f − τ + ∆t σ,
γ
dove
 
T
1  I
 T 
An,m = , T = tridiag(r, −(1 + 2r), r).

∆t 
 .. ..
. . 
I T
Si rimuove l’errore locale e si risolve il sistema
An,m v = f .
L’errore globale  = u − v è dato da
 ∆2 
 = A−1n,m − x
τ + ∆ t σ .
γ
Per dimostrare la stabilità e la convergenza del metodo occorre verificare
che la norma ∞ di A−1 n,m è superiormente equilimitata al crescere di n e
m. La matrice A−1n,m è triangolare inferiore a blocchi della forma

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 utilizza il teorema 24 delle dispense. Per le matrici

A = −T = tridiag(−r, 1 + 2r, −r) e B = I,

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

∆t L∆ (ui,j ) = r ui−1,j + r ui+1,j − (1 + 2r) ui,j + ui,j−1 ,

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

∆t L∆ (ui,j ) = r ui−1,j + r ui+1,j + (1 − 2r) ui,j − ui,j+1 ,

si suppone che L∆ (ui,j ) ≥ 0. Allora

r ui−1,j + r ui+1,j + (1 − 2r) ui,j ≥ ui,j+1 .

Se 1 − 2r > 0 risulta che ui,j+1 è maggiorato da una combinazione lineare


convessa dei tre valori ui,j , ui−1,j e ui+1,j . Il ragionamento prosegue come
nel caso precedente.

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

Si ripete il ragionamento fatto al punto (c). In questo caso è


 −1
−4T −1
    
T −I 4I T
A= , B= , V = A−1 B = − .
4I T −I 4T −2 16T −2 + T −1

Si verifica che V ha autovalori di modulo minore di 1. Quindi la condi-


zione necessaria di stabilità è verificata. Non è invece facile verificare se
kA−1
n,m k∞ è limitata per ogni N e M .

Risoluzione esercizio 11.

(a) Per la discretizzazione del primo termine dell’operatore si procede cosı̀: si


discretizza la derivata di u(x, t) rispetto a x con una formula simmetrica
di passo ∆x /2

∂u(x, t) u(x + ∆x /2, t) − u(x − ∆x /2, t) ∆2


+ x u000 (ξ, t) + u000 (η, t) ,

=
∂x ∆x 6
poi di riapplica la stessa formula ottenendo
∂  ∂u(x, t)  u(x + ∆x , t) − u(x, t)
b(x, t) = b(x + ∆x /2, t)
∂x ∂x ∆2x
u(x, t) − u(x − ∆x , t)
−b(x − ∆x /2, t) + ∆2x τ (ξ, t),
∆2x

dove |τ | è limitato superiormente. Si fissano quindi n e m e si pone ∆x =


`/(n + 1), e ∆t = T /m. Si discretizza il dominio [0, `] × [0, T ] con i
nodi xi = i ∆x , i = 0, . . . , n + 1 e tj = j ∆t , j = 0, . . . , m. Si pone
ui,j = u(xi , tj ) e bi,j = b(xi + ∆x /2, tj ) ∆t /∆2x . Si ottiene
1 h i
bi,j ui+1,j −ui,j −bi−1,j ui,j −ui−1,j − ui,j −ui,j−1 +∆2x τi,j −∆t σi,j = 0
 
∆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 .

L’errore globale  = u − v è dato da


 
 = A−1 2
m,n − ∆x τ + ∆t σ .

Le matrici Tj sono tridiagonali simmetriche. La condizione di positività


imposta sulla funzione b(x, t) assicura che Am,n è irriducibile e a predomi-
nanza diagonale. Quindi il sistema è risolubile.
Per dimostrare la stabilità e la convergenza del metodo occorre verificare
−1
che la norma ∞ di Am,n è superiormente equilimitata al crescere di n e
−1
m. La matrice Am,n è triangolare inferiore a blocchi della forma

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 )

da cui, trascurando gli errori locali e approssimando ui,j con vi,j


1 h i
− bi−1,j+1 vi−1,j+1 + (1 + bi−1,j+1 + bi,j+1 )vi,j+1 − bi,j+1 vi+1,j+1
∆t
1 h i
= bi−1,j vi−1,j + (1 − bi−1,j − bi,j )vi,j + bi,j vi+1,j
∆t
Tenendo conto delle condizioni al contorno si ottiene un sistema lineare la
cui matrice è
 
A1
1  −B1 A2

Am,n = ,

∆t 
 .. ..
. . 
−Bm−1 Am
dove
 
1 + b0,j + b1,j −b1,j
 −b1,j 1 + b1,j + b2,j −b2,j 
Aj = 
 
.. .. .. 
 . . . 
−bn−1,j 1 + bn−1,j + bn,j
e
 
1 − b0,j − b1,j b1,j
 b1,j 1 − b1,j − b2,j b2,j 
Bj =  .
 
.. .. ..
 . . . 
bn−1,j 1 − bn−1,j − bn,j
Quindi
   
A1 I
1  A2   −V1 I 
Am,n = ,
   
∆t
 ..   .. ..
 .   . . 
Am −Vm−1 I

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

con |σ1,j |, |σn,j | ≤ 1/2 max |u00 (x, tj )|.


x∈[0,`]

Risoluzione esercizio 12.

(a) Si indica con


∂ 2 u(x, t) ∂u(x, t)
L[u] = γ −
∂x2 ∂t
l’operatore differenziale dell’equazione. Lo schema proposto viene otte-
nuto discretizzando l’equazione nei punti (x, t − ∆t /2). Si approssima la
derivata prima al tempo t − ∆t /2 con la formula

∂u(x, t − ∆t /2) 1
u(x, t) − u(x, t − ∆t ) + σ(x, η) ∆2t

=
∂t ∆t

e la derivata seconda con la combinazione (per θ 6= 1/2)

∂ 2 u(x, t − ∆t /2) ∂ 2 u(x, t) ∂ 2 u(x, t − ∆t ) 1 


2
= θ 2
+ (1 − θ) 2
+ − θ σ(x, ζ) ∆t
∂x ∂x ∂x 2
(se θ = 1/2 l’errore dipende da ∆2t come nello schema di Crank-Nicolson).
Quindi
γ h  i
2
θ ui−1,j − 2ui,j + ui,j+1 + (1 − θ) ui−1,j−1 − 2ui,j−1 + ui+1,j−1
∆x
1 
− ui,j − ui,j−1
∆t h 1 i
= ∆2t σ(x, η) − γ ∆2x τ (ξ1 , t) + ∆2x τ (ξ2 , t) +

− θ ∆t σ(x, ζ) ,
2
(86)

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

`i,j = O(∆t ) + O(∆2x ),

(se θ = 1/2 l’errore locale dipenderebbe da ∆2t ).

(b) Indicate con T e Te le matrici di ordine n × n e n × (n + 2)


   
2 −1 −1 2 −1
 ..   .. 
 −1 2 .   −1 2 . 
T =  , Te =  
 .. ..   . .. . . . −1

 . . −1   
−1 2 −1 2 −1

siano

A = I + rθ T, A
e = I + rθ Te, B = I − r(1 − θ) T, e = I − r(1 − θ) Te.
A

L’operatore Lm,n associato allo schema risulta bidiagonale a blocchi

−B
 
e A
e
1  −Be Ae 
Lm,n = − ,
 
∆t
 .. ..
 . . 
−B
e A
e

Tenendo conto delle condizioni al contorno, il problema discretizzato si


può scrivere
   
u1 u1,j
Am,n u = f + `, dove u =  ...  , uj =  ...  ,
   

um un,j

in cui f , ` sono opportuni vettori formati da m sottovettori lunghi n e la


matrice Am,n è ancora bidiagonale inferiore a blocchi. Si risolve il sistema

Am,n v = f .

(c) Posto V = A−1 B è


    
A A I
1  −B A  1  A   −V I 
Am,n = − =−
   
∆t 
 .. .. ∆t
 ..  .. .. 
. .   .  . . 
−B A A −V I

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

(m,n) + k`k∞ w) = ±` + k`k∞ [1, . . . , 1]T ) ≤ 0.


Lm,n (±b
(m,n) + k`k∞ w assume il
Quindi per il principio del massimo il vettore ±b
massimo al bordo, per cui
(m,n) k`k∞
max ±b
i,j + k`k∞ wi,j ≤ k`k∞ max wi,j = .
i,j=0,...,n+1 i,j=0,n+1 2γ
Ne segue
(m,n) k`k∞ k`k∞
±i,j ≤ − k`k∞ wi,j ≤ , per i, j = 1, . . . , n,
2γ 2γ
e quindi
(m,n) `i,j
|i,j |≤ = O(∆t ) + O(∆2x ).

Risoluzione esercizio 13.


Rx
1. Integrando una prima volta si ha u(3) (x) = 0 f (t)dt + c0 =: g0 (x) + c0 .
RxRs
Integrando una seconda volta si ha u(2) (x) = c1 + c0 x + 0 0 f (s)ds dt =:
g1 (x) + c1 + c0 x. Integrando ancora si ottiene u0 (x) = c2 + c1 x + 21 c0 x2 +
g2 (x), u(x) = c3 + c2 x + 21 c1 x2 + 16 c0 x3 + g3 (x). Le condizioni al bordo,
sia nel primo che nel secondo caso, determinano un sistema lineare in
c0 , c1 , c2 , c3 che ammette una sola soluzione. Per costruzione, la derivata
quarta di u(x), cioè f (x) è di classe c2 quindi u(x) è di classe c6 .
2. Lo schema che approssima la derivata seconda, se scritto fino all’ordine 6
dà
1 1 1
u00 (x) = 2 (u(xi−1 )−2u(xi )+u(xi+1 ))+ h2 u(4) (xi )+ h4 (u(6) (ξi )+u(6) (ηi ))
h 12 24
per ξi ∈ (xi , xi+1 ), ηi ∈ (xi−1 , xi ). Riscrivendo la formula con 2h al posto
di h si ottiene
1 1 1
u00 (x) = 2 (u(xi−2 )−2u(xi )+u(xi+2 ))+ 4h2 u(4) (xi )+ 16h4 (u(6) (ξˆi )+u(6) (η̂i ))
4h 12 24
per ξˆi ∈ (xi , xi+2 ), η̂i ∈ (xi−2 , xi ).
Sottraendo una dall’altra le due espressioni si ottiene
1
u(4) (x) = (ui−2 − 4ui−1 + 6ui − 4ui+1 + ui+2 ) + h2 τi .
h4
Lo stesso risultato si poteva ottenere applicando la formula dei tre punti al-
la funzione u00 (x) e successivamente alla funzione u(x) nei punti xi−1 , xi , xi+1 .

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

Analogamente nell’estremo destro. Per cui la prima e ultima equazione


del sistema diventano
1
(5u1 − 4u2 + u3 ) = f (x1 ) + h2 τ1 + σ0
h4
1
(5un − 4un−1 + un−2 ) = f (xn ) + h2 τn + σn+1
h4
La matrice del sistema è dunque
 
5 −4 1
 −4 6 −4 1 
 
 1 −4 6 −4 1 
1  .. .. .. .. ..

An = 4 
 
h  . . . . . 


 1 −4 6 −4 1 

 −4 6 −4 
−4 5

4. Vale An = Hn2 . Poiché An = Hn2 , la matrice An è invertibile e vale


kA−1 −1 2 −1
n k∞ ≤ kHn k∞ . Per cui la limitatezza di kAn k∞ segue da quella di
−1
kHn k∞ . In modo analogo con la norma 2.
5. Per la stabilità, la componente dell’errore globale dovuta alla discretiz-
zazione della derivata quarta è limitata uniformemente da γh2 per una
costante positiva γ.
La componente dell’errore globale derivante dalle condizioni al bordo è
data da
Hn−2 (σ0 e1 + σn+1 en )
Valutiamo allora y1 = Hn−2 e1 e yn = Hn−2 en . Vale Hn−1 e1 = h2 n+1
1
(n, n −
T
1, . . . , 1) , per cui
1 1
ky1 k∞ = kHn−1 k∞ h2 k(n, n − 1, . . . , 1)T k∞ ≤ kHn−1 k2∞ h2 ≤ h2 .
n+1 8
Analogamente si procede per Hn−2 en .

Risoluzione esercizio 14.


Al solito integrando l’espressione u00 (x) = f (x) si ottiene
Z x
0
u (x) = f (t)dt + c1 .
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.

Risoluzione esercizio 15.

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

L’altra diseguaglianza si ottiene applicando lo stesso ragionamento a B = A−D,


scambiando quindi i ruoli di A e di B, e quindi αi con βi , e cambiando segno a D.
(n)
b) Discretizzando l’intervallo [0, 1] con i punti xi = ih, i = 0, . . . , n + 1,
(n) (n) (n) (n)
h = 1/(n + 1) e usando la formula −u00 (xi ) = h12 (−xi−1 + 2xi − xi+1 ) + h2 τi ,
i = 1, . . . , n, dove |τi | è limitato superiormente da una costante M , si arriva al
sistema
(n) (n) 1 (n) (n) (n) (n)
f (xi )u(xi ) + (−xi−1 + 2xi − xi+1 ) + h2 τi = g(xi ), i = 1, . . . , n,
h2
che in forma matriciale diventa

An x(n) = b(n) − h2 τ (n)

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

dove kτn k è limitata superiormente da una costante. Quindi il metodo è con-


vergente in norma k · k ma l’ordine di convergenza che possiamo garantire con
questa analisi è 1. Se d’altro canto f 0 (0) = 0 allora con questa analisi non pos-
siamo dimostrare la convergenza.

e) Vale An = Bn (I + Bn−1 Dn ). Inoltre dalla teoria sappiamo che kBn−1 k∞ ≤


1/8 per cui kBn−1 Dk∞ ≤ β/8 < 1. Possiamo allora scrivere
X∞
A−1
n = ( (Bn−1 Dn )i )Bn−1
i=0

da cui, prendendo le norme si ha



X 1/8
kA−1
n k∞ ≤ ( kBn−1 Dn k∞ )kBn−1 k∞ ≤
i=0
1 − β/8

Risoluzione esercizio 16.


Sia n intero positivo e si ponga h = 1/(n + 1), xi = ih, i = 0, 1, . . . , n + 1. Si
definisca ui = u(xi ), vi = v(xi ), fi = f (xi ), gi = g(xi ). Per la regolarità delle
funzioni, sviluppando in serie si ottiene
1 1
u0 (xi ) = (ui+1 − ui ) + h2 σi , u0 (xi ) = (vi+1 − vi ) + h2 τi ,
2h 2h
dove |σi | e |τi | sono limitati superiormente da una costante.
sostituendo in (1) si ha
1
ui + 2h (vi+1 − vi−1 ) = fi − h2 τi
i = 1, . . . , n
1
vi + 2h (ui+1 − ui−1 ) = gi − h2 σi

Tenendo conto delle condizioni al contorno si ottiene il sistema


1
      
I 2h H u f 2 τ
1 = −h
2h H I v g σ

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

La limitatezza in norma dipende dalla limitatezza in norma dell’inversa di I −


1 2
4h2 H . Questa matrice è uguale a

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

La matrice S = S T ha norma limitata sia nel caso di norma 1 che di norma 2. La


1
stabilità dipende dalla limitatezza della norma di (I + 2h H)−1 e (I − 2h
1
H)−1 .
Le due matrici sono l’una la trasposta dell’altra. Quindi basta considerare
1
un solo caso. Pongo W = I + 2h H. Considero W T W = I + 4h1 2 H T H. La
T
matrice H H ha sulla diagonale 1, 2, . . . , 2, 1 mentre ha elementi nulli sulla
sopra e sotto diagonale, e elementi uguali a 1 sulla sopra-sopra diagonale e sulla

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

Risoluzione esercizio 17.


a) La funzione uk (x) = cos(kπx), con k ≥ 0 intero, è tale che u0k (x) =
−kπ sin(kπx) e −u00k (x) = k 2 π 2 uk (x) inoltre u0k (0) = u0k (1) = 0. Per cui uk (x) è
autofunzione corrispondente all’autovalore λk = k 2 π 2 per k = 0, 1, 2, . . ..
b) Seguendo gli argomenti svolti a lezione, si pone xi = ih, i = 0, . . . , n + 1,
h = 1/(n + 1), ui = u(xi ). Consideriamo l’approssimazione delle condizioni al
contorno ottenute con le differenze in avanti e all’indietro. Vale
1
(−ui−1 + 2ui − ui+1 ) + h2 τi = λui , i = 1, . . . , n,
h2 (87)
1 1
(u1 − u0 ) + hσ0 = 0, (un+1 − un ) + hσn+1 = 0,
h h
per valori opportuni dei τi , σ0 , σn+1 .
Da cui u0 = u1 + h2 σ0 e un+1 = un − h2 σn+1 . Sostituendo nella prima
espressione in (1) per i = 1 e i = n e semplificando si ha
1
(u1 − u2 ) + h2 τ1 − σ0 = λu1 ,
h2
1
(un − un−1 ) + h2 τn + σn+1 = λun .
h2
Si ottiene quindi l’espressione (Bn + Fn )u(n) = λu(n) dove u(n) = (u1 , . . . , un )T ,
Fn = Fn0 + Fn00 ,
 
1 −1
 −1 2 −1 
h2
Fn0 = u(n)T
 
 ..
.
..
.
 τ (n) u(n)T ,
1  −1  u(n)
Bn = 2  
,

h  .. ..
 . . −1 
 Fn00 = u(n)T1 u(n) (−σ0 e1 + σn+1 en )u(n)T .
 −1 2 −1 
−1 1
con τ (n) = (τ1 , . . . , τn )T e e1 , en primo e ultimo vettore della base canonica.
Usando la formula centrata in x0 e in xn+1 si ha
1 1
(u1 − u−1 ) + h2 σ̂0 = 0, (un+2 − un ) + h2 σ̂n+1 = 0
2h 2h
per opportuni valori dei σ̂0 , σ̂n+1 , da cui u−1 = u1 +2h3 σ̂0 , un+2 = un −2h3 σ̂n+1 .
Sostituendo nella prima espressione in (1) per i = 0 e i = n + 1 e semplificando
si ha
1
(2u0 − 2u1 ) − 2hσ̂0 + h2 τ0 = λu0
h2
1
(2un+1 − 2un ) + 2hσ̂n+1 + h2 τn+1 = λun+1
h2

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

con τ̂ (n) = (τ0 , . . . , τn+1 )T .


c) nel primo caso la matrice Bn è simmetrica quindi il teorema di Bauer-Fike
ci dà la limitazione |λ − µ| ≤ kFn0 k2 + kFn00 k2 . Inoltre, per quanto visto a lezione
kFn k2 ≤ h2 γ 0 , per una opportuna costante γ 0 , mentre

kFn00 k2 =k − σ0 e1 + σn+1 en k2 /ku(n) k2


√ √
=(k − σ0 e1 + σn+1 en k2 / n + 1)/(ku(n) k2 / n + 1)
1 √
≤γ 00 √ = γ 00 h,
n+1
√ R1
poiché ku(n) k2 / n + 1 converge a ( 0 u(x)2 )1/2 per n → ∞.
Nel secondo caso, la matrice B b non è simmetrica ma lo è la matrice B

e =
DBD−1 che è simile a B dove D = diag( 2, 1, . . . , 1). Applicando il teorema
di Bauer-Fike a B e e procedendo come nel caso precedente, dalle limitazioni
kDFn D k ≤ γ̂ h e kDFbn00 D−1 k ≤ γ̂ 00 h3/2 si ottiene la limitazione |λ − µ| ≤
b 0 −1 0 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

Dimostrazione alternativa: vale Ae = (a − 2)e + (1 − )e1 + (1 + )en da cui


moltiplicando per A−1 , (a−2)A−1 e = e−(1−)A−1 e1 −(1+)A−1 en ≤ (a−2)e
da cui per la monotonia della norma infinito segue kA−1 ek∞ ≤ 1/(a − 2).
 1/2
1+
Se a = 2 allora definendo D = diag(1, δ, . . . , δ n−1 ) dove δ = 1− , Si
√ √
ha Ab = DAD−1 = tridn ( 1 − 2 , 2, 1 − 2 ) per cui, essendo kDk∞ = δ n−1 ,
−1
kD k∞ = 1, risulta
kA−1 k∞ ≤ δ n−1 kA b−1 k∞

D’altro canto ragionando come nel punto precedente, si ha A b−1 = 1 P∞ B bi,


√ 2 i=0
1 2 −1 −1 −1
2 1 −  tridiag(1,
Bb= 0, 1). Poiché Bb ≥ 0 è A
b ≥ 0 e kA b k = kA b ek∞ .
1
P∞ √ i 1 1 1
√ ∞
2
Da cui kAk∞ = 2 i=0 ( 1 −  ) = 2 1−√1−2 = 22 (1 + 1 −  ). Mettendo
b 2

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.

Risoluzione esercizio 19.


Sia n > 0 intero, h = 1/(n + 1), xi = ih, per i = 0, 1, . . . , n + 1. Applicando
la discetizzazione dei 3 punti a u00 e a v 00 , avendo posto u(n) = (u1 , . . . un )T ,
v (n) = (v1 , . . . vn )T , si ottiene
   " 2 (n)
#
Da H −λI u h Da τu
= (n)
−λI H v h2 τv

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

Quindi     (n)   (n) 


0 H 2 u u
+h F = λ (n) , (88)
Da H 0 v (n) v
dove " #
(n)
1 τv  (n)T 
F = (n)T (n) (n)T (n) (n) u v (n)T
u u +v v Da τu
Per la teoria sviluppata al corso la convergenza dello schema alle differen-
ze è legato al numero di condizionamento della matrice degli autovettori della
matrice  
0 H
A=
Da H 0
Se a(x) > 0 la matrice A puòp essere simmetrizzata nel modo seguente. Sia
D = diag(d1 , . . . , dn ) dove di = a(xi ). Moltiplichiamo A a destra per D =
diag(I, D) e a destra per D−1 . Si ottiene la matrice simmetrica
 
−1 0 HD
B = D AD =
DH 0

essendo (HD)T = DH. Quindi la matrice degli autovettori di A è data dal


prodotto di D e di una matrice ortogonale. Il suo condizionamento coincide
quindi con quello di D cioè (maxi a(xi )/ mina (xi ))1/2 che è limitato superior-
mente da (max a(x)/ min a(x))1/2 . Si deduce che si ha convergenza di ordine h2
se a(x) > 0. Mentre se a(x) ≥ 0 e a(x̂) = 0 in qualche valore x̂ la convergenza
non è garantita. Però, poiché i valori di a(x) in un intorno di x̂ possono essere

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

L’errore quindi è limitato superiormente da h2 per la norma di Fb. L’analisi si


completa svolgendo analoghe elaborazioni.

Risoluzione esercizio 20.


1. Integrando quattro volte l’equazione differenziale si ottiene
Z x Z t1 Z t2 Z t3
u(x) = f (t4 )dt1 dt2 dt3 dt4 + α + βx + γx2 + δx3 .
0 0 0 0

Imponendo le condizioni al bordo per x = 0 si hanno le equazioni

α=γ=0

mentre imponendo le condizioni in 1 si ha β + δ = b1 , 6δ = b2 con b1 , b2 valori


opportuni ottenuti integrando f (x).
2. Discretizzando separatamente i due problemi

v 00 (x) = f (x), v(0) = v 0 (1) = 0

e
u00 (x) = v(x), u(0) = 0, u(1) = 0.
con il metodo delle differenze finite si ha

Kn v (n) = f (n) + h2 τ (n) , Hn u(n) = v (n) + h2 η (n)

dove Kn e Hn sono le matrici che discretizzano la derivata seconda con le con-


dizioni al bordo rispettivamente miste e di Dirichlet, v (n) e u(n) sono i vettori
le cui componenti sono i valori delle soluzioni dei due problemi differenziali nei
punti del reticolo, f (n) il vettore dei valori di f (x) nei punti del reticolo, mentre
h2 τ (n) e h2 η (n) sono i vettori degli errori locali di discretizzazione. Si arriva
quindi al sistema
 (n)     (n)   
u 0 η Hn −I
An (n) = + h2 (n) , An =
v f τ 0 Kn

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

Kn v̂ (n) = f (n) , Hn û(n) = v̂ (n)

Si ha

Hn (u(n) − û(n) ) = h2 η (n) + v (n) − v̂ (n) , Kn (v (n) − v̂ (n) ) = h2 τ (n)

da cui per l’errore globale vale

(n) = u(n) − û(n) = h2 Hn−1 η (n) + h2 Hn−1 Kn−1 τ (n)

Risulta quindi

k(n) k ≤ h2 (kHn−1 k · kη (n) k + kHn−1 k · kKn−1 k · kτ (n) k)

Dalla limitatezza delle norme (infinito e 2) di Hn−1 e di Kn−1 segue la convergenza


dello schema.

Risoluzione esercizio 21 Sviluppando in serie f (x) con incremento h e −h


fino all’ordine 6 e sommando le due espressioni si ottiene
1 (4) 1
2f (x) = f (x + h) + f (x − h) + f 00 (x) + h4 f (x) + h6 (f (6) (ξ) + f (6) (η))
12 6!
con ξ ∈ (x, x + h), η ∈ (x − h, x), da cui

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

con φi,j limitato in modulo da una costante.


2
Quindi per approssimare ∂ ∂xu(x,t)
2 con errore O(∆4x ) si può applicare la (89)
e si ha

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

per opportuni τi,j limitati in modulo da una costante.


Lo stencil di questa formula è
   
0 0 0 2 0 1 0
1   − ∆x 0 −2
1 −2 1 0 .
∆2x 12γ 2 ∆2t
0 0 0 0 1 0

Discretizzando la derivata prima con una differenza centrata, si ha

∂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

Cioè, posto r = 2γ∆t /∆2x si ha


 
0 1 + 1/(3r) 0
1 
−r 2r − 2/(3r) −r
2∆t
0 −1 + 1/(3r) 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.

Risoluzione esercizio 22.


a) Essendo b + c − a/4 = 0 si ha
       
b c b 0 1 0 1 0 1 1 −2 1
a 1 1
 c −a c =  1 −4 1  + b  −2 0 −2  + b  0 0 0 
4 2 2
b c b 0 1 0 1 0 1 1 −2 1

Il primo addendo è lo stencil che approssima a4 ∆u con errore locale O(h2 ), il


secondo addendo è lo stencil che dà la media delle approssimazioni, fatte con la
2
formula dei 3 punti, di b ∂∂xu2 nei punti (xi−1 , yj ) e (xi+1 , yj ). Quindi coincide con
2
il valore di b ∂∂xu2 nel punto (xi , yj ) a meno di un errore O(h2 ). Il terzo addendo
è la analoga quantità relativa alle derivata seconda rispetto alla y. Per cui la
somma del terzo e quarto addendo è l’approssimazione di b∆u(x, y) in (xi , yj )
con errore O(h2 ). Quindi, essendo a/4+b = 1, lo stencil è la media pesata di due
approssimazioni del Laplaciano discreto in (xi , yj ), con peso a/4 e b = 1 − a/4,
entrambe con errore locale O(h2 ). Per cui tale media è una approssimazione del
laplaciano con errore locale O(h2 ).
b) La matrice associata allo stencil è h12 (I ⊗ trid(c, −a, c) + trid(1, 0, 1) ⊗
trid(b, c, b)). I suoi elementi diagonali sono uguali a −a, gli elelementi non
diagonali sulla generica riga sono b, c, b, c, c, b, c, b e la somma dei loro moduli
è 4|b| + 4|c| = |4 − a| + |2a − 4|. Se 2 ≤ a ≤ 4 la matrice è dominante diagonale.
Per le proprietà del prodotto di Kronecker, e per il fatto che trid(1, 0, 1) ha
autovalori 2 cos(πi/(n + 1)), i suoi autovalori sono dati
1 πj πi πj
λi,j = 2
(−a + 2c cos + 2 cos (c + 2b cos )).
h n+1 n+1 n+1
Sapendo che b = 1 − a/4 e c = 1 − 2b = a/2 − 1
si ottiene
1 πj πi πj
λi,j = (−a + (a − 2) cos + cos (a − 2 + (4 − a) cos ))
h2 n+1 n+1 n+1
1 πi πj πi πj
= 2 (−a + (a − 2)(cos + cos ) + (4 − a) cos cos )
h n+1 n+1 n+1 n+1
Per la dominanza diagonale i suoi autovalori sono quindi non positivi.
L’autovalore in modulo più piccolo si ottiene per i = j = 1 e, facendo
l’approssimazione cos π/(n + 1) = 1 − π 2 h2 /2, si ha
1
λ1,1 = (−(a − 2)π 2 h2 − (4 − a)π 2 h2 ) + O(h2 ) = 2π 2 + O(h2 )
h2
c) È sufficiente scegliere i dati in modo tale che a, b, c > 0, quindi basta 2 ≤
a ≤ 4. In questo modo la condizione Ln,n (u) ≥ 0 implica ui,j ≤ (b(ui−1,j−1 +
ui+1,j+1 , ui−1,j+1 +ui+1,j−1 )+c(ui,j+1 +ui,j−1 +ui+1,j +ui−1,j ))/a che è la media

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.

Risoluzione esercizio 23.


La derivata lungo v = (1, a) in (x, t) è data da

d u((x, t) + vs) ∂u d (x + s) ∂u d (t + as) ∂u(x, t)
= + = ∂u(x, t)∂x + a .
ds
s=0 ∂x ds ∂t ds ∂t

a) Poiché f (x, t) = f (x + 2kπ, t), se u(x, t) è soluzione, allora

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

b) La formula che approssima la derivata prima di f (x) si ottiene scrivendo


gli sviluppi in serie di f (x + h), f (x − h), f (x + 2h), f (x − 2h) fino al termine di
ordine 5, combinando linearmente le espressioni cosı̀ ottenute con pesi opportuni.
Fissato n, m > 0 interi e T > 0, si introducono i valori xi = i∆x , i ∈ Z,
∆x = 2π/n, tj = j∆t , ∆t = T /m, e si pone ui,j = u(xi , tj ). Dalla periodicità
di u(x, y) si deduce che ui,j = ui+kn,j per k ∈ Z.
Basta allora fare scorrere i da 0 a n − 1 e abbiamo quindi
1 a
(ui,j+1 −ui,j )+ (−ui−2,j +8ui−1,j −8ui+1,j +ui+2,j ) = fi,j −∆t σi,j −∆4x τi,j
∆t 12∆x
per i = 0, . . . , n−1, j = 0, 1, . . . , m, dove gli indici i sono da considerarsi modulo
n e dove ∆t σi,j e ∆4x τi,j sono gli errori locali dell’approssimazione della derivata
temporale e spaziale con gli schemi alle differenze. Denotando con u(j) il vettore

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

Au = f − (∆t σ + ∆4x τ ) + (u(0)T , 0, . . . , 0)T

dove u(0) = (ui,0 ), ui,0 = g(xi ), i = 0, 1, . . . , n − 1, f = (fi ), fi = f (xi ), e la


matrice A ha la seguente forma
 
A
−B A 

−B A
 1
A= , A = I, B = A + H
 
 . .. . ..  ∆ t
 
−B A

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

Risoluzione esercizio 24.

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

Ripetendo in modo analogo si ha

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

da cui sommando, essendo v1 v2 = −w1 w2 ,

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.

Risoluzione esercizio 25.

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

dove τ (j) = (τi,j )i=0,n , per j = 1, 2, . . . , m. Usando le condizioni al contorno


scritte nella forma u1,j −u−1,j = −2σ0 ∆3x , un+1,j −un−1,j = −2σ1 ∆3x , è possibile
eliminare u−1,j e un+1,j nell’espressione precedente. In questo modo si ottiene
  
−2 2 u0,j
 2   1 −2 1   u1,j 
∂ 1  . . .

  .. 

2
u(x, t)|x=xi ,t=tj = 2
 .. .. ..  . 
∂x i=0,...,n ∆x   
 1 −2 1  un−1,j 
2 −2 un,j
+ ∆2x τ (j) − 2σ0 ∆x e1 − 2σ1 ∆x en
dove e1 ed en sono il primo e l’ultimo versore della base canonica.
L’equazione del calore, in forma discreta, diventa allora
1 γ (j)
Hu(j) − (u − u(j−1) ) = −∆t µ(j) − ∆2x τ (j) + 2σ0 ∆x e1 + 2σ1 ∆x en , j = 1, . . . , m,
∆2x ∆t
u(0) = (f (x0 ), f (x1 ), . . . , f (xn ))T .

dove u(j) = (ui,j )i=0,n , H è la matrice tridiagonale che ha -2 sulla diagonale


principale, 1 sulla sopra e sotto diagonale tranne che per i valori h1,2 = 2
e hn,n−1 = 2, dove inoltre u(0) è noto. Mentre l’approssimazione vi,j della
soluzione ui,j che siamo in grado di calcolare è tale che
1 γ (j)
Hv (j) − (v − v (j−1) ) = 0, j = 1, . . . , m,
∆2x ∆t
v (0) = (f (x0 ), f (x1 ), . . . , f (xn ))T ,

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.

Cioè il sistema diventa M  = η con  = ((1)T , . . . , (n)T )T , η = (η (1)T , . . . , η (n)T )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

norma infinito è uguale a kM −1 êk, dove ê = (1, . . . , 1)T ∈ Rmn . Poiché He = 0


e A = I − rH, vale Ae = e per cui A−1 e = e e quindi A−k e = e. Si ha allora
che M −1 e = (eT , 2eT , . . . , meT )T . Vale quindi kM −1 k∞ = kM −1 êk∞ = m =
1/∆t . Quindi kk∞ ≤ ∆1t kηk∞ = O(∆x + ∆t ) per cui il metodo è convergente
indipendentemente dal valore di r.

Risoluzione esercizio 26.


1. Vale L = (`i,j ), `i,i = 1, `i+1,i = −1. Vale inoltre
 
0 a
0 0   
..  , V T = 1 0 . . . 0 .
 
U =  ...

 . 

0 ... 0 1
0 0 
b −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

Per cui la matrice K ha la forma


     
1 0 b na − 1 1+b na − 1
+ =
0 1 b a−1 b a

e risulta det K = a + b − (n − 1)ab. Quindi la condizione di invertibilità per


A(a, b) è a + b 6= (n − 1)ab. Inoltre
 
1 a −na + 1
K −1 =
a + b − (n − 1)ab −b 1+b

3. Vale

A(a, b)−1 = (I+B −1 U V T )−1 B −1 = (I−B −1 U K −1 V T )B −1 = B −1 −B −1 U K −1 V T B −1 .


" #" #
1 ... 1 1
Tenendo conto che B =−1 .. .. .
.. . . . si ha
..
1 1 ... 1
 
b na − 1
b (n − 1)a − 1  
 −1 n n−1 ... 1
A(a, b)−1 = B −1 − . K =: B −1 −U
b K −1 Vb T

..
 .. 1 1 ... 1

. 
b a−1
Rx RxRt
1’. Con successive integrazioni si ha u0 (x) = 0 f (t)dt+c, u(x) = 0 0 f (s)dsdt+
1
cx + d, con c e d costanti arbitrarie. Poiché u0 (0) = c, u0 (1) = 0 f (t)dt + c,
R
R1Rt
u(0) = d, u(1) = 0 0 f (s)dsdt + c + d, le condizioni al contorno diventano
Z 1 Z 1 Z t
d = α(c + f (t)dt), c+d+ f (s)dsdt = βc
0 0 0

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 )

Si deduce quindi che kA−1n k∞ è limitata superiormente da una costante.


Per quanto riguarda il termine in σ occorre valutare la norma infinito di
hA−1 −1
n σ = hAn ((σ0 /2)e1 + (σn /2)en ). Per questo basta valutare la norma
infinito della prima e dell’ultima colonna di A−1 n e far vedere che tendono a
zero come O(h). Questo infatti garantisce che l’errore va a zero come O(h2 ).
Basta quindi mostrare che la prima e l’ultima colonna di A(a, b)−1 hanno norma
infinito che è O(n). Per questo è sufficiente valutare separatamente la norma
infinito della prima e ultima colonna di B −1 che valgono n, e la norma infinito
della prima e ultima colonna di Ub K −1 Vb T che valgono ancora O(n) come si può
dedurre dalla (2).

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.

[7] Josef Stoer, Roland Bulirsch, Introduzione all’Analisi Numerica (2).


Zanichelli, Bologna 1975.
[8] Gerald Wheatley, Applied Numerical Analysis, Pearson, Addison Wesley,
New York 2004.

[9] Richard Barret et Al., Templates For the Solution of Li-


near Systems: Building Blocks For Iterative Methods.
http://www.netlib.org/linalg/html templates/Templates.html

172

Potrebbero piacerti anche