Sei sulla pagina 1di 17

7 EQUAZIONE DI LAPLACE 100

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.

7.1 Rappresentazione alle differenze finite


Le differenze nei metodi di risoluzione dell’equazione di Laplace e, in generale, delle equa-
zioni ellittiche si osservano non nelle rappresentazioni alle differenze finite, che risultano
comuni a tutti i metodi, ma nelle tecniche usate per risolvere il sistema di equazioni al-
gebriche lineari risultante. A tale proposito è di scarsa rilevanza il caso unidimensionale,
per cui ci si soffermerà sul caso bidimensionale.

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

L’errore di troncamento di questo schema è O[h2 , k 2 ], ma diviene O[h6 ] su una griglia


quadrata uniforme. Altri schemi alle differenze finite dell’equazione di Laplace possono
essere trovati in letteratura, ma nessuno offre significativi vantaggi rispetto a quello a
cinque o nove punti. Per ottenere un ET di ordine superiore si deve coinvolgere un mag-
gior numero di punti nella discretizzazione, ovvero allargare la molecola computazionale.
Tuttavia in questi casi è difficile conservare l’ordine di accuratezza nei pressi del contorno
del dominio di calcolo.
In alcune schemi numerici può risultare vantaggioso risolvere le equazioni in forma
delta. In questo caso, indicato con H l’operatore alle differenze usato nella discretizzazione
del laplaciano (ad esempio la formula su cinque punti), l’equazione alle differenze finite
si scrive H(ui,j ) = 0; introducendo la differenza tra la soluzione esatta della EDF, uei,j , e
la soluzione ũi,j che si ha durante il processo iterativo di soluzione, ∆ui,j = uei,j − ũi,j , la
EDF si scrive
H(uei,j ) = H(ũi,j ) + H(∆ui,j ) = 0 ,
da cui
H(∆ui,j ) = −H(ũi,j ) = −Ri,j .
In questo modo il problema è stato riscritto in forma delta e è stato introdotto il residuo,
Ri,j , che deve essere annullato mediante il processo iterativo.

Esempio. Si vuole trovare la soluzione dell’equazione (7.1) nel dominio quadrato 0 ≤


x ≤ 1 e 0 ≤ y ≤ 1, soggetto alle condizioni al contorno di Dirichlet. In questo esempio si
userà una rappresentazione a cinque punti e ∆x = ∆y = 0.1, avendo una griglia uniforme
con 11×11 punti. In questo caso l’equazione alle differenze finite può essere riscritta come

ui+1,j + ui−1,j + ui,j+1 + ui,j−1 − 4 ui,j = 0

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:

a11 u1 + a12 u2 + .......................... + a1n un = c1


a21 u1 + a22 u2 + .......................... + a2n un = c2
. . .
. . .
(7.5)
. . .
. . .
. . .
an1 u1 + an2 u2 + .......................... + ann un = cn

o in maniera compatta come


[A]u = C,
7 EQUAZIONE DI LAPLACE 102

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.

7.2 Metodi diretti per la risoluzione dei sistemi di equazioni


algebriche lineari
7.2.1 Metodo di Cramer
Im metodo di Cramer è il metodo comunemente adoperato per risolvere sistemi lineari
su carta. Il problema principale è legato all’enorme numero di operazioni necessarie per
risolvere il sistema, che risulta approssimativamente pari a (n + 1)!, dove n indica il
numero di incognite. Quindi, per l’esempio precedente, in cui erano presenti 81 incognite,
le operazioni da effettuare sono circa 82!, un numero decisamente eccessivo e tale da
scoraggiare l’applicazione di tale algoritmo alla soluzione mediante calcolatore.

7.2.2 Metodo di eliminazione di Gauss


Il metodo di eliminazione di Gauss è un metodo efficiente e facile da usare per risolvere
sistemi di equazioni algebriche, in particolare nel caso di sistemi di equazioni tridiagona-
3
li. Tuttavia l’algoritmo non è estremamente veloce, in quanto sono necessarie circa n3
moltiplicazioni e divisioni per risolvere un sistema di n equazioni. A causa dell’elevato
numero di operazioni, si può avere un accumulo dell’errore di round-off che può provocare
un deterioramento dell’accuratezza per valori di n troppo elevati. Per migliorare l’accu-
ratezza della soluzione le equazioni del sistema possono essere riarrangiate in modo da
avere i coefficienti con modulo maggiore sulla diagonale principale (tecnica del pivoting).
Consideriamo il sistema (7.5). Questo metodo si compone di due fasi: l’eliminazione in
avanti delle incognite e la loro determinazione per mezzo della sostituzione all’indietro.
Nella prima fase si vuole trasformare il sistema di equazioni di partenza in un sistema
equivalente4 avente matrice dei coefficienti triangolare alta e, quindi, facilmente risolvi-
4
due sistemi si dicono equivalenti quando la soluzione di uno di essi è anche soluzione dell’altro
7 EQUAZIONE DI LAPLACE 103

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)

Ripetendo queste operazioni su tutte le equazioni, si arriva al seguente sistema modificato:


(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 ,
(2) (2) (2) (2)
a32 u2 + a33 u3 + . . . + a3n un = c3 , (7.11)
..
.
(2) (2) (2) (2)
an2 u2 + an3 u3 + . . . + ann un = cn ,

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

Se la matrice [A] è tale che la procedura di eliminazione di Gauss definita in precedenza


(k)
può essere completata (ak,k 6= 0), allora si può dimostrare che [A] è una matrice non
singolare. Inoltre, la matrice finale [A](n) ≡ [U ] risulta triangolare alta e, quindi, [A] può
essere fattorizzata,
[A] = [L] [U ], (7.16)
7 EQUAZIONE DI LAPLACE 105

dove [L] è una matrice triagolare bassa i cui elementi valgono:



 0 per i < k,
lik = 1 per i = k, (7.17)
 (k) (k)
ai,k /ak,k per i > k.

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

7.2.3 Algoritmo di Thomas


In generale in una matrice tridiagonale sono diversi da zero i soli termini della diagonale
principale, della sopradiagonale e della sottodiagonale. Per risolvere questi sistemi si uti-
lizza l’algoritmo di Thomas. Per ottenere la formula ricorsiva di soluzione basta applicare
il metodo di risoluzione gaussiana combinando due righe della matrice. Tale combinazio-
ne elimina una incognita, per cui l’equazione finale contiene solamente due incognite, al
posto delle tre iniziali. Essa pertanto si può scrivere nella seguente maniera:

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)

bj uj−1 + dj uj + aj uj+1 = cj . (7.19)

La formula ricorsiva, scritta come

uj+1 = rj+1 uj + tj+1 , (7.20)

può essere sostituita nell’equazione precedente

bj uj−1 + dj uj + aj (rj+1 uj + tj+1 ) = cj , (7.21)

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 .

7.3 Metodi iterativi per la risoluzione dei sistemi di equazioni


algebriche lineari
In questo paragrafo vengono considerati i metodi iterativi per la risoluzione dei sistemi, in
cui si valuta una soluzione approssimata mediante un numero di operazioni per iterazione
minore rispetto a quello richiesto dai metodi diretti. In generale, questi metodi partono
da una soluzione iniziale di tentativo, x(0) , e definiscono una sequenza di approssimazioni
successive, x(1) , x(2) , . . ., sino a convergere al valore esatto entro un margine di errore
7 EQUAZIONE DI LAPLACE 107

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)

Partendo da un vettore soluzione di tentativo arbitrario, x(0) , si può definire il metodo


iterativo:
[P ] x(k+1) = [N ] x(k) + b, k = 0, 1, 2, . . . (7.27)
Poiché det([P ]) 6= 0 è possibile determinare la soluzione al passo k + 1:

x(k+1) = [P ]−1 [N ] x(k) + [P ]−1 b (7.28)

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

[P ] x(k+1) − x = [N ] x(k) − x [P ] e(k+1) = [N ]e(k)


 
=⇒ (7.31)

e premoltiplicando per [P ]−1 si ha:

e(k+1) = [M ] e(k) ,
= [M ]2 e(k−1) ,
.. (7.32)
.
= [M ]k+1 e(0) ,

dove e(0) è l’errore iniziale.


Il metodo iterativo dell’equazione (7.27) è convergente, cioè

lim e(k) = 0,
k→∞
7 EQUAZIONE DI LAPLACE 108

se
lim [M ]k = 0.
k→∞

Se la matrice [M ] soddisfa tale condizione si dice convergente. Si dimostra che la matrice


[M ] è convergente se e solo se il suo raggio spettrale5 , ρ([M ]), risulta minore di uno.
Poiché in generale non è agevole verificare questa proprietà, si può adoperare una proprietà
equivalente che afferma che la matrice [M ] risulta convergente se una sua qualsiasi norma,
||M||, risulta minore di uno. In particolare,
n
X
||M||∞ = max |mij | < 1;
i
j=1

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

7.3.1 Metodi di Jacobi e di Gauss–Seidel


Dato un sistema di n equazioni [A] x = b, se gli elementi della diagonale principale sono
tutti diversi da zero, aii 6= 0, i = 1, . . . , n, è possibile, partendo da una soluzione iniziale
di tentativo, x(0) , risolvere l’equazione i-esima rispetto all’i-esima incognita xi , secondo
la seguente formula ricorsiva compatta:
n
!
(k+1) 1 X (k)
xi = bi − aij xj , i = 1, . . . , n. (7.33)
aii j=1, j6=i

Si consideri il seguente splitting additivo,

[A] = [D] − [E] − [F ], (7.34)

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

Il metodo di Jacobi corrisponde alla scelta

[P ] = [D] , [N ] = [E] + [F ]

e la non singolarità di [P ] corrisponde alla richiesta che i coefficienti sulla diagonale


principale siano diversi da zero. Quando questa condizione non è verificata e la matrice
[A] è non singolare, si potrà effettuare una permutazione delle righe che rende la diagonale
priva di elementi nulli. Qundi l’equazione (7.33) si può riscrivere in forma matriciale:

x(k+1) = [D]−1 ([E] + [F ]) x(k) + [D]−1 b. (7.36)

In questo caso, la matrice di iterazione diventa:

[M ] = [P ]−1 [N ] = [D]−1 ([E] + [F ]) = [I] − [D]−1 [A],

e la formula ricorsiva, equazione (7.36), si può riscrivere:

x(k+1) = ([I] − [D]−1 [A]) x(k) + [D]−1 b. (7.37)

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

uki+1,j + uki−1,j + β 2 (uki,j+1 + uki,j−1)


uk+1
i,j = , (7.38)
2 (1 + β 2 )
dove β = ∆x/∆y.
Dall’analisi del metodo di Jacobi appare che all’iterazione k alcune componenti del vet-
tore x(k) sono già state valutate ma non vengono utilizzate nel calcolo delle componenti
rimanenti. Il metodo di Gauss–Seidel è una modifica del metodo di Jacobi in cui all’ite-
razione k le componenti del vettore incognito già valutate vengono utilizzate nel calcolo
delle rimanenti componenti. Quindi, nota la soluzione all’iterazione k, quella all’itera-
zione successiva si ottiene mediante la seguente espressione ricorsiva in forma compatta,
ottenuta a partire dall’equazione (7.33):
i−1 n
!
(k+1) 1 X (k+1)
X (k)
xi = bi − aij xj − aij xj , i = 1, . . . , n. (7.39)
aii j=1 j=i+1

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

Lo splitting adoperato nel metodo di Gauss–Seidel corrisponde alla scelta

[P ] = [D] − [E], [N ] = [F ],

e il metodo iterativo si può rappresentare in forma matriciale come segue:

([D] − [E]) x(k+1) = [F ] x(k) + b. (7.40)

La soluzione all’iterazione k + 1 si ottiene quindi risolvendo un sistema con matrice dei


coefficienti triangolare bassa:

x(k+1) = ([D] − [E])−1 [F ] x(k) + ([D] − [E])−1 b , (7.41)

dove ([D] − [E])−1 [F ] è la matrice di iterazione.


Applicando il metodo di Gauss–Seidel alla soluzione dell’equazione di Laplace discre-
tizzata con la formula a cinque punti, equazione (7.3), si ottiene la seguente formula
ricorsiva:
k+1
uki+1,j + uk+1 2 k k+1
i−1,j + β (ui,j+1 + ui,j−1 )
ui,j = , (7.42)
2 (1 + β 2 )
dove si è ipotizzato che la soluzione proceda per valori crescenti di i e j.
Per entrambi i metodi esiste una condizione sufficiente per la convergenza di facile
verifica. Infatti, se la matrice A dei coefficienti è a dominanza diagonale stretta, allora
entrambi tali metodi iterativi convergono. La condizione di dominanza diagonale stretta
per righe impone che i coefficienti sulla diagonale principale debbano essere maggiori in
valore assoluto della somma dei valori assoluti degli altri coefficienti della stessa equazione:
X
| aii |> | aij |;
j=1,j6=i

questa condizione implica che


n
X |aij |
||MJ ||∞ = max < 1,
i |aii |
j=1,j6=i

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:

x(k+1) = [M ] x(k) + f , (7.43)

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 è

ρ([M ]) = ρ([I] − [P ]−1 [A]) < 1.

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:

x(k+1) = ([I] − [P ]−1 [A]) x(k) + [P ]−1 b,

ovvero, ricordando la definizione di residuo,

r (k) = b − [A] x(k) ,

si ha
x(k+1) = x(k) + [P ]−1 r (k) . (7.44)
Questo significa che il precondizionatore agisce sul residuo.

7.3.2 Metodo di sovrarilassamento


La convergenza dei metodi iterativi può essere accelerata mediante l’introduzione di un
parametro di rilassamento, ω. La formula iterativa ricorsiva si scrive:

x(k+1) = ω x̃(k+1) + (1 − ω) x(k) , (7.45)


7 EQUAZIONE DI LAPLACE 112

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.

7.3.3 Metodi iterativi a blocchi


Dei metodi finora esposti, denominati metodi di rilassamento per punti, quello di Gauss–
Seidel con sovrarilassamento risulta il più efficiente per la soluzione di problemi ellittici.
Il numero di iterazioni può essere ridotto in maniera considerevole usando la strategia dei
metodi iterativi a blocchi, in cui viene selezionato un sottoinsieme tra tutte le incognite
del problema e il loro valore viene calcolato simultaneamente mediante la soluzione di un
sistema lineare più semplice di quello relativo all’intero problema discreto. Tuttavia, in
questo modo si incrementa il numero di operazioni richiesto per completare una iterazione
e quindi non si può affermare in generale che la riduzione delle iterazioni (rispetto al
corrispondente metodo per punti) comporti una riduzione delle operazioni complessive (e
quindi del tempo di calcolo) richieste per ottenere la soluzione 6 . Nei metodi a blocchi più
comuni le incognite vengono raggruppate in modo da portare ad un sistema lineare con
matrice dei coefficienti tridiagonale, che può essere risolto mediante l’algoritmo di Thomas.
La procedura più semplice è quella che raggruppa le incognite per linee; questa strategia
è particolarmente agevole nel caso di griglie strutturate in cui si possono raggruppare le
incognite sia lungo le righe che lungo le colonne di una maglia bidimensionale. Ad esempio,
riferendoci ancora una volta al caso dell’equazione di Laplace discretizzata mendiante la
formula a cinque punti, equazione (7.3), e usando il metodo di Gauss–Seidel, si può scrivere
la seguente espressione

uk+1 k+1 2 k k+1


i+1,j + ui−1,j + β (ui,j+1 + ui,j−1 )
uk+1
i,j = , j = 2, . . . Nj − 1 , (7.46)
2 (1 + β 2 )
6
la risposta dipende da diversi fattori, tra cui il tipo di problema, le condizioni al contorno e il numero
di punti della griglia
7 EQUAZIONE DI LAPLACE 113

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

Quindi si può pensare all’operazione di sottorilassamento o di sovrarilassamento in ma-


niera equivalente ad una riduzione o un incremento del passo temporale (fittizio).

7.3.4 Metodo SIP


Abbiamo osservato come la fattorizzazione LU sia una metodologia generale per la solu-
zione di sistemi lineari; tuttavia essa non trae vantaggio dalla struttura della matrice e in
particolare dalla sua sparsità, ovvero dalla presenza di un numero elevato di elementi nulli,
e quindi richiede all’incirca lo stesso numero di operazioni del metodo di eliminazione di
Gauss. D’altra parte, si può pensare di realizzare una fattorizzazione LU approssimata
o incompleta, che richieda uno sforzo computazionale minore rispetto a quella completa,
da usare in una procedura iterativa. Questa osservazione ha portato alla definizione di
diversi metodi ILU (incomplete LU decomposition) per la soluzione iterativa di sistemi
lineari. Il metodo SIP (strongly implicit procedure) di Stone (1968) appartiene a questa
classe e si applica specificatamente a sistemi di equazioni algebriche ottenute dalla discre-
tizzazione di EDDP, non avendo validità generale. Lo scopo del metodo è approssimare
la matrice dei coefficienti [A] (sparsa) con una matrice modificata [A] + [N ] in modo che
quest’ultima sia facilmente fattorizzabile. Per illustrare il metodo facciamo riferimento
ala discretizzazione su cinque punti dell’equazione di Laplace, equzione (7.3), che, riscritta
nella forma generale [A] u = c, è caratterizzata da una matrice dei coefficiente a struttura
pentadiagonale, in cui l’equazione per il generico nodo di calcolo (i, j) si può scrivere come
segue

([A] u)i,j = AP ui,j + AS ui,j−1 + AN ui,j+1 + AE ui+1,j + AW ui−1,j . (7.51)

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

([M ] u)i,j = MP ui,j + MS ui,j−1 +MN ui,j+1 + ME ui+1,j + MW ui−1,j


(7.52)
+MN W ui−1,j+1 + MSE ui+1,j−1 .
7 EQUAZIONE DI LAPLACE 115

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)

MNi,j = UNi,j Li,j


P
i,j
MSE = Li,j
S UE
i,j−1

MEi,j = UEi,j Li,j


P

Poiché si vogliono selezionare le matrici [L] e [U ] in modo che [M ] approssimi bene la


matrice [A], la scelta più semplice è selezionare [N ] in modo che contenga le due diagonali
di [M ] che corrispondono a diagonali nulle di [A], ovvero forzare [N ] ad avere elementi
non nulli su queste due diagonali e uguagliare le rimanenti diagonali di [M ] a quelle di
[A]. Questa scelta, che rappresenta una metodologia standard dei metodi ILU, in realtà
comporta basse velocità di convergenza. Stone ha osservato come la convergenza migliora
quando [N ] presenta elementi non nulli su tutte le sette diagonali di [M ] in modo che

NP ui,j + NS ui,j−1 +NN ui,j+1 + NE ui+1,j + NW ui−1,j


(7.54)
+MN W ui−1,j+1 + MSE ui+1,j−1 ≈ 0 ,

ovvero che il contributo dei primi cinque termini cancelli quello degli ultimi due. L’equa-
zione (7.54) si riduce a

MN W (ui−1,j+1 − u∗i−1,j+1) + MSE (ui+1,j−1 − u∗i+1,j−1) ≈ 0 , (7.55)

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:

u∗i−1,j+1 ≈ α (ui−1,j + ui,j+1 − ui,j )


(7.56)
u∗i+1,j−1 ≈ α (ui,j−1 + ui+1,j − ui,j ) ,

dove α è un parametro di rilassamento minore di uno (per α = 1 si ha un’interpolazione


accurata al second’ordine). A questo punto, procedendo dal punto di griglia in basso a
7 EQUAZIONE DI LAPLACE 116

sinistra, ovvero da (1, 1), si possono ottenere i coefficienti delle matrici triangolari

Li,j i,j i−1,j


W = AW /(1 + α UN )
Li,j i,j i,j−1
S = AS /(1 + α UE )
Li,j i,j i,j
P = AP + α (LW UN
i−1,j
+ Li,j
S UE
i,j−1
) − Li,j
W UE
i−1,j
− Li,j
S UN
i,j−1
(7.57)

UNi,j = (Ai,j i,j


N − α LW UN
i−1,j
)/Li,j
P

UEi,j = (Ai,j i,j


E − α LS UE
i,j−1
)/Li,j
P

Quindi la sequenza iterativa procede come segue. Nota la soluzione all’iterazione k, si


risolve il sistema
([A] + [N ]) uk+1 = c + [N ] uk ; (7.58)
fattorizzata la matrice [A] + [N ] nelle matrici [L] e [U ], come precedentemente descritto,
il problema viene riformulato come

[L] [U ] uk+1 = c + [N ] uk ; (7.59)

da cui, definito il vettore intermedio

V k+1 = [U ] uk+1 ,

si possono effettuare i due passi

[L] V k+1 = c + [N ] uk ,
(7.60)
[U ] uk+1 = V k+1 .

Alternativamente, definito il vettore

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

Potrebbero piacerti anche