Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
7 Equazione di Laplace
L’equazione di Laplace è usata come modello per le equazioni differenziali alle derivate
parziali ellittiche. Nel caso bidimensionale e usando un riferimento cartesiano, l’equazione
di Laplace si scrive
∂2u ∂2u
+ = 0. (7.1)
∂x2 ∂y 2
Alcuni importanti fenomeni legati al trasferimento del calore e alla meccanica dei fluidi
sono governati da una EDDP ellittica. Vista allora l’importanza di questa famiglia di
equazioni, porremo seria attenzione ai metodi di risoluzione dell’equazione di Laplace, per
poi utilizzarli come punto di partenza nello sviluppo di problemi di maggiore rilevanza
pratica. Come ultima precisazione, si osservi che, vista la natura stazionaria dei fenomeni
legati a questo tipo di equazioni, non essendoci termini riguardanti derivate temporali, si
affronterà il probelma della sola accuratezza spaziale. In alcuni casi si preferisce ottenere
la soluzione dell’equazione (7.1) come soluzione stazinaria del problema
2
∂ u ∂2u
∂u
− + = 0, (7.2)
∂τ ∂x2 ∂y 2
dove τ indica un tempo fittizio; in questi casi l’accuratezza nel tempo non riveste alcuna
importanza purché si raggiunga velocemente la soluzione stazionaria.
Formula a cinque punti. La rappresentazione alle differenze finite più comune per
l’equazione di Laplace bidimensionale è la formula a cinque punti usata per la prima volta
da Runge nel 1908:
ui+1,j − 2 ui,j + ui−1,j ui,j+1 − 2 ui,j + ui,j−1
+ = 0, (7.3)
(∆x)2 (∆y)2
che ha errore di troncamento O[(∆x)2 , (∆y)2 ].
Formula a nove punti. L’uso della formula a nove punti si rende necessario quando è
richiesta una accuratezza maggiore di quella della formula a cinque punti. Posto ∆x = h
e ∆y = k, la formula è la seguente:
h2 − 5 k 2
ui+1,j+1 + ui−1,j+1 + ui+1,j−1 + ui−1,j−1 − 2 2 (ui+1,j + ui−1,j )
h + k2
(7.4)
5 h2 − k 2
+2 2 (ui,j+1 + ui,j−1) − 20 ui,j = 0 .
h + k2
7 EQUAZIONE DI LAPLACE 101
per ogni punto della griglia di calcolo in cui u è incognita. In questo esempio, con le
condizioni al contorno di Dirichlet, si hanno 81 incognite, corrispondenti ai punti interni
della griglia di calcolo. Quindi il problema discreto si riduce a risolvere un sistema di
81 equazioni algebriche lineari simultaneamente nelle 81 ui,j incognite. Il problema può
essere espresso come segue:
dove [A] è la matrice dei coefficienti, u è il vettore delle incognite e C è il vettore dei
termini noti. Si nota che la matrice dei coefficienti risulterà sparsa, poiché circa 76 degli
81 coefficienti ai,j in ogni riga saranno pari a zero. Per rendere l’esempio algebrico il più
semplice possibile, si è posto ∆x = ∆y. Nel caso in cui ∆x 6= ∆y, i coefficienti sarebbero
stati un po’ differenti, ma il problema discreto sarebbe stato rappresentato dalla stessa
forma precedente [A]u = C.
I metodi per risolvere i sistemi di equazioni algebriche lineari possono essere classificati
in diretti o iterativi. Sono metodi diretti quelli che danno la soluzione (esatta se l’errore
di round-off non esistesse) in un numero di operazioni predeterminato basandosi su un
algoritmo che spesso risulta complicato. Questi metodi utilizzano un numero molto alto
di operazioni per giungere alla soluzione e sono molto suscettibili nei confronti dell’errore
di round-off, poiché nella risoluzione utilizzano tutti i termini contemporaneamente. I
metodi iterativi si basano sull’applicazione ripetuta di un algoritmo, che è di solito più
semplice rispetto a quello dei metodi diretti, e quindi raggiungono il risultato convergendo
verso la soluzione in un numero finito, ma non predeterminabile, di operazioni.
bile. Tale risultato si ottiene applicando una procedura in cui la prima equazione viene
utilizzata per eliminare la prima incognita dalle restanti n−1 equazioni, quindi la seconda
equazione cosı̀ ottenuta viene usata per eliminare la seconda incognita dalle restanti n − 2
equazioni, e cosı̀ via. Il primo passo di questa procedura consiste nel dividere la prima
equazione per il coefficiente a11 della prima incognita:
a12 a13 a1n c1
u1 + u2 + u3 + . . . + un = . (7.6)
a11 a11 a11 a11
Questa operazione viene detta normalizzazione e il suo scopo è di rendere pari ad uno il
coefficiente della prima incognita, u1 , nella prima equazione. Successivamente si moltiplica
l’equazione cosı̀ normalizzata per il coefficiente di u1 nella seconda equazione, a21 :
a12 a13 a1n c1
a21 u1 + a21 u2 + a21 u3 + . . . + a21 un = a21 . (7.7)
a11 a11 a11 a11
Il coefficiente di u1 nella prima equazione è ora identico al quello della seconda equazio-
ne. Pertanto possiamo eliminare la prima incognita dalla seconda equazione sottraendo
l’equazione (7.7) dalla seconda equazione del sistema:
a12 a1n c1
a22 − a21 u2 + . . . + a2n − a21 un = c2 − a21 . (7.8)
a11 a11 a11
Questa equazione, che verrà sostituita alla seconda equazione del sistema, può essere
riscritta:
(2) (2) (2) (2)
a22 u2 + a23 u3 + . . . + a2n un = c2 , (7.9)
dove l’apice (2) indica che il valore dei coefficienti è diverso da quello originale. La
procedura vista fin qui viene ripetuta per eliminare la prima incognita dalle equazioni
rimanenti. Per esempio la prima equazione normalizzata (7.6) viene moltiplicata per a31
e il risultato viene sottratto dalla terza equazione per ottenere
(2) (2) (2) (2)
a32 u2 + a33 u3 + . . . + a3n un = c3 . (7.10)
dove l’apice (1) alla prima equazione è stato introdotto per comodità di notazione in
quanto tale equazione resta identica a quella di partenza. Nella procedura vista fin qui, la
prima equazione non modificata viene detta equazione pivot e a11 viene detto coefficiente
pivot o semplicemente pivot.
7 EQUAZIONE DI LAPLACE 104
Questa procedura può ora essere applicata per eliminare la seconda incognita, u2 , nelle
equazioni dalla terza alla n-esima. Per fare questo si utilizza la seconda equazione come
(2)
pivot dopo averne operato la normalizzazione dividendo ambo i membri per a22 ; si molti-
(2)
plica quindi l’equazione normalizzata per a32 e si sottrae il risultato dalla terza equazione
per eliminare l’incognita u2 . Ripetendo queste operazioni sulle rimanenti equazioni, si
ottiene
(1) (1) (1) (1) (1)
a11 u1 + a12 u2 + a13 u3 + . . . + a1n un = c1 ,
(2) (2) (2) (2)
a22 u2 + a23 u3 + . . . + a2n un = c2 ,
(3) (3) (3)
a33 u3 + . . . + a3n un = c3 , (7.12)
..
.
(3) (3) (3)
an3 u3 + . . . + ann un = cn ,
dove l’apice (3) indica che il valore dei coefficienti è stato modificato una seconda volta.
Questa procedura viene cosı̀ ripetuta usando via via una delle equazioni rimaste come
pivot. Il passo finale consiste nell’usare la penultima equazione per eliminare la penul-
tima incognita dall’ultima equazione. A questo punto il sistema risulta trasformato in
un sistema equivalente a quello di partenza e avente matrice dei coefficienti triangolare
superiore
(1) (1) (1) (1) (1)
a11 u1 + a12 u2 + a13 u3 + . . . + a1n un = c1 ,
(2) (2) (2) (2)
a22 u2 + a23 u3 + . . . + a2n un = c2 ,
(3) (3) (3)
a33 u3 + . . . + a3n un = c3 , (7.13)
..
.
(n) (n)
ann un = cn .
A questo punto si può risolvere l’ultima equazione rispetto a un :
(n)
cn
un = (n)
. (7.14)
ann
Questo risultato può essere sostituito nella penultima equazione del sistema (7.13) per
ricavare un−1 . Questa procedura di sostituzione, che deve essere ripetuta per ricavare le
incognite rimanenti, può essere rappresentata dalla seguente formula ricorsiva
n
(i) P (i)
ci − aij uj
j=i+1
ui = (i)
, i = n − 1, n − 2, ..., 1. (7.15)
aii
Quindi l’applicazione del metodo di Gauss equivale ad una fattorizzazione LU; è quindi
possibile riarrangiare le operazioni in modo da valutare direttamente gli elementi delle
matrici [L] ed [U ]. Il metodo risultante si chiama metodo di Doolittle.
Per capire come l’eliminazione di Gauss possa essere modificata in maniera efficace
per ottenere vantaggi dalla forma tridiagonale della matrice dei coefficienti, si consideri
lo schema implicito semplice per la soluzione dell’equazione del calore:
un+1
j − unj α n+1 n+1 n+1
= u j+1 + u j−1 − 2u j .
∆t (∆x)2
Quest’ultima può essere riscritta come:
bj un+1 n+1
j−1 + dj uj + aj un+1
j+1 = cj
dove
α∆t 2α∆t
aj = bj = − , cj = unj , dj = 1 + .
(∆x)2 (∆x)2
Nel caso di condizioni al contorno di Dirichlet, un+1
j−1 è noto su uno degli estremi del dominio
e un+1
j+1 sull’altro. Pertanto il sistema risulterà
un+1
d1 a1 0 ... ... ... ... ... 0 1 c1
n+1
u2
b2 d2 a2 c2
0 b3 d3 a3
. .. .. ..
..
. . .
.. .. .. ..
. . . .
= .
. .. .. ..
..
. . .
.. .. .. ..
. . . .
.
..
n+1
bNj −1 dNj −1 aNj −1 u cN −1
Nj −1 j
0 bNj d Nj un+1
Nj c Nj
Nel momento in cui fossero applicate altre condizioni al contorno, il sistema potrebbe
sempre essere riportato nella forma precedente. Per il sistema tridiagonale è semplice
modificare il metodo di eliminazione di Gauss per ottenere vantaggi dagli zeri nella matrice
dei coefficienti.
7 EQUAZIONE DI LAPLACE 106
uj = rj uj−1 + tj . (7.18)
Per trovare l’espressione delle due costanti rj e tj consideriamo la generica equazione del
sistema (si omette per brevità l’apice n + 1)
da cui
bj cj − aj tj+1
uj = − uj−1 + . (7.22)
dj + aj rj+1 dj + aj rj+1
Confrontando questa equazione con la (7.18) si ottiene
bj cj − aj tj+1
rj = − , tj = . (7.23)
dj + aj rj+1 dj + aj rj+1
Per applicare questa formula ricorsiva si deve conoscere rNj e tNj ; per condizioni al con-
torno di Dirichlet, uNj = uR , per cui rNj = 0 e tNj = uR , per cui si possono applicare
le (7.23) a ritroso. Quindi, si valuta la soluzione usando la (7.18) a partire dal valore noto
u1 = uL .
predefinito. Un vantaggio dei metodi iterativi è quindi che l’errore può essere tenuto sotto
controllo durante il processo iterativo. Questi metodi vengono anche detti di rilassamento.
Un’ampia classe di metodi iterativi può essere definita come segue. Dato il sistema
[A] x = b, (7.24)
con det([A]) 6= 0, la matrice dei coefficienti può essere riscritta, usando una tecnica nota
come splitting additivo, come
[A] = [P ] − [N ], (7.25)
dove [N ] e [P ] sono matrici dello stesso ordine di [A] e la matrice [P ], detta matrice di
precondizionamento, è non singolare. Allora il sistema di partenza diventa:
[P ] x = [N ] x + b, (7.26)
È chiaro che la matrice [P ] deve essere scelta in modo che la soluzione del sistema (7.28)
risulti semplice, quindi [P ] deve essere più semplice da invertire rispetto alla matrice
[A]. La convergenza della sequenza x(k) alla soluzione x si può studiare introducendo la
matrice di iterazione,
[M ] = [P ]−1 [N ], (7.29)
e il vettore degli errori
e(k) = x(k) − x, k = 0, 1, 2, . . . (7.30)
Sottraendo le equazioni (7.26) e (7.27),
e(k+1) = [M ] e(k) ,
= [M ]2 e(k−1) ,
.. (7.32)
.
= [M ]k+1 e(0) ,
lim e(k) = 0,
k→∞
7 EQUAZIONE DI LAPLACE 108
se
lim [M ]k = 0.
k→∞
oppure
n
X
||M||1 = max |mij | < 1.
j
i=1
Infatti, si può dimostrare che per ogni ǫ > 0 esiste una norma tale che
||M|| ≤ ρ([M ]) + ǫ.
con
aii , i=j −aij , i>j 0, i≥j
[D] = , [E] = , [F ] = (7.35)
0, i 6= j 0, i≤j −aij , i<j
ovvero
a11 0 0 −aij
[A] = .. − .. − .. .
. . .
ann −aij 0 0
5
Il raggio spettrale di una matrice è il massimo in valore assoluto tra gli autovalori della matrice.
7 EQUAZIONE DI LAPLACE 109
[P ] = [D] , [N ] = [E] + [F ]
È importante osservare che in questo metodo ciascuna delle equazioni del sistema contiene,
all’iterazione k, una sola incognita; pertanto, ad ogni iterazione le componenti del vettore
x(k+1) possono essere valutate simultaneamente, noto x(k) .
Applicando il metodo di Jacobi alla soluzione dell’equazione di Laplace discretizzata
con la formula a cinque punti, equazione (7.3), si ottiene la seguente formula ricorsiva:
Si può osservare che questa formula è operativa solo se applicata per valori crescenti
dell’indice i. Quindi, poiché la componente i-esima di x(k+1) dipende dalle componenti
con indice compreso tra 1 e i − 1, nel metodo di Gauss–Seidel la soluzione non si può
ottenere in maniera simultanea. Tuttavia tale metodo in molte occasioni converge più
rapidamente del metodo di Jacobi, cioè richiede meno iterazioni per raggiungere una data
accuratezza.
7 EQUAZIONE DI LAPLACE 110
[P ] = [D] − [E], [N ] = [F ],
da cui segue che il metodo è convergente in quanto la sua norma infinito è minore di uno.
Quello enunciato è un criterio sufficiente ma non necessario: il metodo può talvolta
convergere anche se tale condizione non viene soddisfatta, ma se essa è soddisfatta la
convergenza è garantita.
Si può inoltre dimostrare che se A è simmetrica definita positiva allora il metodo di
Gauss–Seidel converge.
Dal punto di vista implementativo, si nota che il metodo di Jacobi necessita di due
vettori per il calcolo di una iterazione, uno per la soluzione all’iterazione vecchia e uno
per la nuova. Al metodo di Gauss–Seidel, invece, è sufficiente un solo vettore, in quanto è
possibile implementare l’algoritmo facendo in modo che gli elementi del vettore alla nuova
iterazione sovrascrivano i vecchi.
7 EQUAZIONE DI LAPLACE 111
I due metodi iterativi fin qui analizzati possono essere espressi dalla formula seguente:
con
[M ] = [P ]−1 [N ] = ([I] − [P ]−1 [A]), f = [P ]−1 b.
Poiché a convergenza x(k+1) = x(k) , il sistema nell’equazione (7.43) equivale al sistema
lineare
([I] − [M ]) x = f ,
ossia
[P ]−1 [A] x = [P ]−1 b.
Quindi il metodo iterativo risolve il sistema lineare precondizionato dalla matrice [P ], det-
ta matrice di precondizionamento. I metodi di Jacobi e di Gauss–Seidel presentano due
possibili matrici di precondizionamento, [P ] = [D] e [P ] = [D] − [E], rispettivamente.
Per matrici di dimensioni molto elevate si cerca di introdurre precondizionatori che pre-
servino la struttura o la sparsità di [A]. In ogni caso, al fine di accelerare la convergenza
del metodo, è necessario fare in modo che [P ] approssimi la matrice [A], in modo che
[P ]−1 [A] ∼
= [I], e sia facile da invertire. Si ricorda, inoltre, che la condizione necessaria e
sufficiente per la convergenza di un metodo iterativo è
Poiché la convergenza è tanto più veloce quanto più il raggio spettrale di [M ] è prossimo a
zero, l’obiettivo di un buon precondizionatore deve essere quello di riscalare gli autovalori
della matrice precondizionata [P ]−1 [A] in modo che si avvicinino tutti ad 1.
Nei metodi fin qui analizzati, basati sullo splitting di [A], si ha:
si ha
x(k+1) = x(k) + [P ]−1 r (k) . (7.44)
Questo significa che il precondizionatore agisce sul residuo.
dove x̃(k+1) è ottenuto dal metodo di Jacobi o di Gauss–Seidel. Nel secondo caso si ha
il metodo del rilassamento successivo, successive over relaxation (SOR). Si può osservare
come per ω = 1 il metodo SOR coincide con quello di base, ottenuto per ricavare x̃(k+1) .
Se invece ω ha un valore compreso tra zero e uno il risultato è una media pesata tra il
risultato dell’iterazione (k + 1)-esima del metodo di base e quello dell’iterazione k: in
questo caso si parla di sottorilassamento. Questa opzione viene usata tipicamente per
rendere convergente un sistema che non lo è. Per 1 < ω ≤ 2 il valore ottenuto dall’itera-
zione attuale viene incrementato in valore assoluto: si sta implicitamente assumendo che
la soluzione si sta muovendo nella direzione giusta ma troppo lentamente; questa opzione,
detta sovrarilassamento consente di accelerare la convergenza di un sistema che conver-
gerebbe in ogni caso. Infatti, si può dimostrare che in questo caso la tecnica SOR porta
ad avere raggi spettrali più piccoli per la matrice [M ].
Per quanto detto, il parametro ω sarà compreso tra 0 e 2. Infatti, il metodo SOR converge
se
| ω − 1 |< 1,
quindi, per
0 < ω < 2.
dove si è ipotizzato di raggruppare le incognite per righe del dominio di calcolo (j =cost.)
e di spazzare il dominio procedendo per valori di j crescenti. Quindi nell’equazione (7.46)
le incognite sono uk+1 k+1 k+1 k+1
i,j , ui+1,j e ui−1,j , mentre ui,j−1 è noto dall’applicazione appena effet-
tuata sulla riga precedente o dall’imposizione della condizione al contorno. La soluzione
delle Nj − 2 equazioni (7.46) costituisce una iterazione, che dovrà essere ripetuta sino a
convergenza. La procedura iterativa può anche essere applicata raggruppando le incognite
per colonne del diminio di calcolo (i =cost) e spazzando il dominio per valori crescenti di
i:
uki+1,j + uk+1 2 k+1 k+1
i−1,j + β (ui,j+1 + ui,j−1 )
uk+1
i,j = , i = 2, . . . Ni − 1 , (7.47)
2 (1 + β 2 )
Il metodo per linee riportato nelle equazioni (7.46) e (7.47) può essere modificato
applicando la procedura di sovrarilassamento; quindi, ad esempio, l’equazione (7.46)
diventa:
ω 2
uk+1 k
k+1 k+1 k k+1
i,j = (1 − ω) ui,j + u i+1,j + u i−1,j + β (u i,j+1 + u i,j−1 ) j = 2, . . . Nj − 1 .
2 (1 + β 2 )
(7.48)
Per assicurare la dominanza diagonale si dovrà assicurare che ω ≤ (1 + β 2 ).
Infine si può applicare la tecnica di sovrarilassamento alla combinazione dei metodi
per righe, equazione (7.46), e per linee, equazione (7.47): una iterazione è costituita da
una spazzata del dominio per righe seguita da una per colonne, ottenendo il metodo
chiamato alternating direction line-Gauss–Seidel con sovrarilassamento, che può essere
espresso come segue:
k+ 21 k ω h
k+ 21 k+ 21 2 k k+ 21
i
ui,j = (1−ω) ui,j + u + ui−1,j + β (ui,j+1 + ui,j−1) j = 2, . . . Nj −1 ,
2 (1 + β 2 ) i+1,j
(7.49)
2
con ω ≤ (1 + β ),
k+ 21 ω h
k+ 21 2
i
uk+1
i,j = (1−ω) u i,j + u + u k+1
+ β (u k+1
+ u k+1
) i = 2, . . . Ni −1 .
2 (1 + β 2 ) i+1,j i−1,j i,j+1 i,j−1
(7.50)
2 2
con ω ≤ (1 + β )/β .
Si può notare come quest’ultimo schema, nella variante di Jacobi (denominato alterna-
ting direction line-Jacobi ), ovvero considerando nell’equazione (7.49) ui,j−1 all’iterazione
k e nell’equazione (7.50) ui−1,j all’iterazione k + 12 , possa essere interpretato come un
metodo ADI. Infatti, se si introduce una derivata temporale fittizia nell’equazione di La-
place, si ottiene l’equazione parabolica (7.2) che può essere integrata nel tempo (fittizio)
fino al raggiungimento della soluzione stazionaria, ovvero dell’equazione di Laplace. Per
risolvere l’equazione (7.2) possiamo usare il metodo ADI (6.38): in questo caso lo scopo
è raggiungere quanto prima la soluzione stazionaria senza preoccuparci dell’accuratezza
nel tempo. Si può verificare che il sistema (6.38) e quello costituito dalle equazioni (7.49)
e (7.50) sono equivalenti per
α ∆t (1 + β 2 )
ω= .
(∆y)2 β 2 + α ∆t
7 EQUAZIONE DI LAPLACE 114
Nel metodo SIP, in analogia ai metodi ILU, le matrici triangolare bassa, [L], e triangolare
alta, [U ], presentano elementi non nulli solo sulle diagonali in cui [A] presenta elementi
non nulli; inoltre, la matrice [U ] ha elementi pari ad uno sulla diagonale principale in
maniera da rendere unica la fattorizzazione. Il prodotto delle matrici triangolari bassa
e alta cosı̀ definite produce una matrice con un maggior numero di diagonali non nulle
rispetto a quelle presenti in [A]. In particolare, per lo schema dell’equazione (7.3) sono
presenti due diagonali in più, relative ai punti (i−1, j +1) e (i+1, j −1) oppure (i+1, j +1)
e (i − 1, j − 1) a seconda dell’ordinamento dei nodi nel vettore delle incognite. Quindi,
posto [M ] = [L] [U ] = [A] + [N ], nel punto (i, j) si avrà un’equazione del tipo
Il problema richiede il calcolo di 5 set di coefficienti (tre per [L] e due per [U ]) che si
ottengono mediante le regole del prodotto di matrici;
i,j
MW = Li,j
W
MNi,jW = Li,j
W UN
i−1,j
MSi,j = Li,j
S
MPi,j = Li,j
W UE
i−1,j
+ Li,j
S UE
i,j−1
+ Li,j
P (7.53)
ovvero che il contributo dei primi cinque termini cancelli quello degli ultimi due. L’equa-
zione (7.54) si riduce a
dove u∗i−1,j+1 e u∗i+1,j−1 sono valori approssimati rispettivamente di ui−1,j+1 e ui+1,j−1. Poi-
ché il sistema che si sta risolvendo deriva dall’approssimazione di una equazione ellittica,
la seguente apprissimazione risulta adeguata:
sinistra, ovvero da (1, 1), si possono ottenere i coefficienti delle matrici triangolari
V k+1 = [U ] uk+1 ,
[L] V k+1 = c + [N ] uk ,
(7.60)
[U ] uk+1 = V k+1 .
δ k+1 = uk+1 − uk
e il residuo
rk = [A] uk − c ,
l’equazione (7.58) diventa
([A] + [N ]) δ k+1 = −r k ; (7.61)
quindi, definito il vettore
W k+1 = [U ] δ k+1
i due passi del metodo vengono riformulati come segue:
[L] W k+1 = −r k ,
(7.62)
[U ] δ k+1 = W k+1 .