Corsi di Laurea in Ingegneria Meccanica
Trasmissione del calore con applicazioni
numeriche: informatica applicata
a.a. 16/17
Teoria – Parte II
Ing. Nicola Forgione
Dipartimento di Ingegneria Civile
E-mail: [email protected]; tel. 0502218057
Sistemi di equazioni algebriche lineari
Introduzione
• La regola di Cramer è inefficiente per la soluzione dei sistemi lineari perché
coinvolge un numero elevato di operazioni.
• Si adottano perciò altri metodi che vengono suddivisi in due categorie:
• metodi diretti: forniscono virtualmente la soluzione esatta (l’errore dipende solo
dall’arrotondamento) con un numero finito di operazioni (es.: metodo di Gauss,
di Gauss Jordan, ecc.) ;
• metodi iterativi: forniscono la soluzione come limite di successive approssimazioni
(metodo di Jacobi, di Gauss-Seidel, SOR, ecc.).
• Nel seguito faremo riferimento ad un sistema lineare avente la forma matriciale:
Ax=b
in cui si suppone la matrice dei coefficienti, A, non singolare per garantire l'esistenza
e l’unicità della soluzione.
Il teorema di Rouché-Capelli afferma che esistono soluzioni per il sistema
se e solo se il rango della matrice completa è uguale al rango della matrice incompleta.
Sistemi di equazioni algebriche lineari
Metodo di Gauss (o delle eliminazioni successive)
• Il metodo consiste nel sommare le equazioni tra loro dopo averle moltiplicate per
opportuni coefficienti in modo da ottenere un sistema lineare equivalente,
caratterizzato da una matrice triangolare superiore (eliminazione in avanti).
 a11
a
 21
 a31

 a41
 a51
a12
a13
a14
a22
a23
a24
a32
a33
a34
a42
a52
a43
a53
a44
a54
a15   x1   b1   aˆ11
a25   x2   b2   0
     
a35    x3    b3    0
     
a45   x4   b4   0
a55   x5   b5   0
aˆ12
aˆ22
aˆ13
aˆ23
aˆ14
aˆ24
0
aˆ33
0
0
0
0
aˆ34
aˆ44
ˆ
aˆ15   x1   b1 
 



bˆ2 
aˆ25
x2

    
aˆ35    x3    bˆ3 
  
aˆ45   x4   bˆ 
 4
aˆ55   x5   ˆ 
 b5 
0
• La soluzione del sistema così ottenuto è immediata, perché basta risolvere l’ultima
equazione (che è banale) e sostituire nelle precedenti fino alla prima (sostituzione
all’indietro).
x 5 = bˆ5 / aˆ 55 ;

x 4 = bˆ4  aˆ 45 x 5

 ˆ
/ aˆ 44 ; ... x i =  b i 

n

aˆ ij x j  / aˆ ii ; ...

j  i 1

Sistemi di equazioni algebriche lineari
Metodo di Gauss
• I passi da eseguire per ottenere la matrice triangolare sono i seguenti:
1. si somma la prima equazione a ciascuna delle successive dopo averla moltiplicata per
opportuni coefficienti; in particolare, per l’ r-esima equazione (r ≥ 2) il coefficiente per cui
moltiplicare la prima è pari a (-ar1/a11); si ha:
Elemento pivot
Equazione pivot
 a11
a
 21
 a31

 a41
 a51
a12
a22
a32
a42
a13
a23
a33
a43
a14
a24
a34
a44
a52
a53
a54
a15   x1   b1   a11
a25   x2   b2   0
     
a35    x3    b3    0
     
a45   x4   b4   0
a55   x5   b5   0
a12

a22
a13

a23
a14

a24

a32

a42

a52

a33

a43

a53

a34

a44

a54
a15   x1   b1 
   x2   b2 
a25
    
    x3    b3 
a35
   x4   b4 
a45
   x5   b5 
a55
2. si somma la seconda equazione a tutte le successive (r ≥ 3) dopo averla moltiplicata per
(-a´r2/a´22), ottenendo:
Elemento pivot
Equazione pivot
 a11
0

0

0
 0
a12

a22

a32

a42

a52
a13

a23

a33

a43

a53
a14

a24

a34

a44

a54
a15   x1   b1 
 a11
0
   x2   b2 
a25
    











0
a35
x3
b3

   x4   b4 
a45
0
 0
   x5   b5 
a55
a12

a22
0
0
0
a13

a23

a33

a43

a53
a14

a24

a34

a44

a54
a15   x1   b1 
   x2   b2 
a25
    

a35    x3    b3
   x4   b4
a45
   x5   b5
a55
3. si procede analogamente fino alla (n-1)-esima equazione ottenendo il sistema con matrice
triangolare superiore, U.
Sistemi di equazioni algebriche lineari
Metodo di Gauss, problema del mal condizionamento
• La bontà della soluzione del metodo di Gauss dipende da come è costituito il sistema
in esame. In termini matematici, i sistemi ben condizionati sono quelli per i quali un
piccolo cambiamento in uno o più coefficienti risulta in un cambiamento della stessa
entità nella soluzione. Nei sistemi mal condizionati, invece, piccole variazioni nei
coefficienti portano a grandi variazioni nella soluzione.
• L’algoritmo di eliminazione gaussiano fallisce quando l’elemento pivot è uguale a
zero. Anche se il pivot è prossimo a zero, ma non esattamente uguale a zero, possono
sorgere problemi di amplificazione degli errori di arrotondamento nei calcoli (mal
condizionamento).
• In generale, per ridurre gli errori di arrotondamento si può cambiare l’ordine delle
equazioni (righe della matrice) in modo che risulti:
a11  ar 1
 r  3, 4..  ecc.
 r  2, 3, ..  , a22  ar 2
tecnica detta del pivoting parziale.
• Se la ricerca dell’elemento adatto ed il successivo scambio avvengono sia secondo le
righe che secondo le colonne della matrice dei coefficienti, si parla di pivoting
completo.
Sistemi di equazioni algebriche lineari
Metodo di Gauss-Jordan
• Si tratta di una variante dell’eliminazione gaussiana; la differenza principale è che nel
metodo di Gauss-Jordan quando si elimina una variabile la si elimina da tutte le
equazioni del sistema e non solo da quelle al di sotto della riga corrente.
• La fase di eliminazione dà luogo pertanto ad una matrice diagonale anziché
triangolare superiore. Non è quindi necessaria la sostituzione all’indietro per
arrivare alla soluzione.
 a11
a
 21
 a31

 a41
 a51
a12
a22
a13
a23
a14
a24
a32
a33
a34
a42
a43
a44
a52
a53
a54
a15   x1   b1 
 aˆ11
0
a25   x2   b2 
    

a35    x3    b3    0
    

a45   x4   b4 
0
 0
a55   x5   b5 
0
aˆ22
0
0
0
aˆ33
0
0
0
0
0
aˆ44
0
0
0
• E’ possibile anche in questo caso adottare la tecnica del pivoting.
ˆ
0   x1   b1 
 



bˆ2 
0
x2

    
0    x3    bˆ3 
  
0   x4   bˆ 
4


aˆ55   x5   ˆ 
 b5 
Sistemi di equazioni algebriche lineari
Metodi di fattorizzazione
• Il metodo di Gauss può essere considerato un particolare metodo di fattorizzazione
triangolare
• si decompone la matrice A nel prodotto di una matrice triangolare inferiore L ed
una triangolare superiore U.
A=LU
(fattorizzazione LU)
dove U è la matrice ottenuta dal processo di eliminazione in avanti del metodo di
Gauss ed L è una matrice triangolare inferiore tale che lii=1, lik=-aik(k)/akk(k).
• La soluzione del sistema si riconduce a quella di due sistemi con matrice
triangolare (che è immediata):
LUx  b

Ly = b,
Ux=y
• Esistono altri metodi di fattorizzazione che non ricorrono al processo delle
eliminazioni del metodo di Gauss, ma sono basati sulla costruzione diretta delle
matrici L ed U. Ad esempio: metodi di Doolittle, Crout, Choleski (v. ad es.
Ghelardoni- Marzulli, ETS 1979).
Sistemi di equazioni algebriche lineari
Norme e raggio spettrale
Def. Una norma vettoriale è una applicazione n :  n   0 tale che, dati due vettori u e
w   n ed uno scalare    , si abbia:
n v  0 , e n v  0  v  0
n  v    n  v  ,
 v   n ,   
n v  w  n v  n w ,
 v, w   n
Le norme vettoriali più comunemente adottate sono:
 max vi
• norma ∞ o norma massima:
v
• norma 1 o norma assoluta:
v 1   vi

i
i
n
• norma 2 o norma euclidea: v 2  v  v 
2
i
v
i 1
e possono essere ottenute ponendo p = ∞, 1, 2 nella formula generale
v
p
p

   vi 
 i

1 p
Sistemi di equazioni algebriche lineari
Norme e raggio spettrale
Data una norma vettoriale,  p si dice norma matriciale indotta dalla (o compatibile con
la) norma vettoriale l’applicazione da  nxn in  0 che soddisfa la relazione
B
p
 sup
v0
Bv
v
p
p
Si può dimostrare che le tre norme vettoriali viste inducono le seguenti norme
matriciali (dette naturali)
• norma ∞ o norma massima sulle righe:
B

 max  bi , j
i
j
• norma 1 o norma massima sulle colonne: B 1  max
 bi , j
j
i
• norma 2 o norma spettrale o di Hilbert:
B 2  r  BT B 
N.B.: Il raggio spettrale r(H) di una matrice H è il massimo modulo dei suoi
autovalori.
Sistemi di equazioni algebriche lineari
Norme e raggio spettrale
Valgono alcune proprietà delle norme matriciali e vettoriali che richiamiamo
brevemente:
B
 0  B  0
•
B 0
•
B   B
•
AB  A  B
AB  A B
B v  B v
Ai nostri scopi è poi interessante notare che vale il seguente:
Teorema di Hirsch: Per ognuna delle tre norme matriciali considerate si ha: r  B   B
Sistemi di equazioni algebriche lineari
Metodi iterativi
Nei metodi iterativi la soluzione del sistema lineare
Ax=b
viene ottenuta come limite di una successione di vettori x(k) con x(0) dato.
Ci occuperemo di metodi della forma
x(k+1) = B x(k) + g,
k ≥ 0 (*)
dove B è la matrice di iterazione e g è un opportuno vettore; la definizione di B e di g
caratterizza il particolare metodo iterativo. Tali metodi vengono detti:
• stazionari se B e g non dipendono da k;
• non stazionari in caso contrario.
Nel seguito tratteremo solo alcuni metodi iterativi stazionari (Jacobi, Gauss-Seidel,
SOR).
Sistemi di equazioni algebriche lineari
Metodi iterativi
Se f è il vettore soluzione esatta del sistema A x = b , si avrà
f=Bf+g
sottraendo membro a membro questa equazione con la x(k+1) = B x(k) + g , si ha
x(k+1) – f = B (x(k)-f,
k≥1
e introducendo il vettore errore e(k+1)  x(k+1) - f, si ottiene
e(k+1) = B e(k),
k≥1
e quindi
e(k+1) = Bk+1 e(0),
k≥1
Passando alle norme, si ha
e
k 1
 Bk 1 e
0
Sistemi di equazioni algebriche lineari
Metodi iterativi
Condizione necessaria e sufficiente perché il metodo iterativo converga, e cioè perché si
abbia
k
lim e    0
k 
per qualunque e(0), è che sia anche
lim B k  0
k 
che si esprime dicendo che la matrice di iterazione deve essere convergente.
Def. Una matrice B si dice convergente se:
lim B k  0
k 
Ai nostri scopi, è utile ricordare che:
TEOREMA: Condizione necessaria e sufficiente perché una matrice B sia convergente
è che sia r(B) < 1.
Perciò, per poter applicare con successo un metodo iterativo è necessario
che la matrice di iterazione, B, abbia raggio spettrale r(B) < 1.
Dal teorema di Hirsch discende poi che condizione sufficiente perché una matrice B
sia convergente è che una sua qualunque norma naturale sia minore di uno.
Sistemi di equazioni algebriche lineari
Metodo di Jacobi (o delle sostituzioni simultanee)
Per ottenere lo schema iterativo di questo metodo si decompone la matrice A come
segue:
A
 a11 a12
a
a22
 21
 a31 a32


 
 an1 an 2


D
a13  a1n   a11 0
a23  a2 n   0 a22
 
a33  a3n    0
0
 
    

an3  ann   0
0
e si scrive il sistema lineare come
0
0
a33

0


0   0
 a12


0
a
0
  21
 0     a31  a32
 
    

 ann    an1  an 2
E
 a13   a1n 
 a23   a2 n 

0
  a3n 



 
 an 3 
0 
D x  Ex  b
E’ bene notare che, poiché nel nostro caso si suppone ai,i ≠ 0 , esiste D-1, che è data dalla
matrice diagonale avente come elementi i reciproci degli elementi diagonali di D.
Perciò, si può scrivere:
x  D 1 E x  D  1 b
ovvero
  D 1 E
g  D 1 b
x  Bx  g
Sistemi di equazioni algebriche lineari
Metodo di Jacobi (o delle sostituzioni simultanee)
Si nota che bi,i = 0 :

 0

 a21
 a
 22
B    a31
 a
 33
 

  an1
 ann



a12
a11

a13
a11
 
0

a23
a22

a32
a33
0




an 3
ann

an 2
ann

a1n 
a11 

a2 n 

a22 

a3 n 

a33 

 

0 

Se A è diagonalmente dominante (in senso stretto), cioè se ai ,i 
a
i, j
, i , si ha, quindi:
j
ji
n
b
i, j
1
 i  1, ..., n

B

 1  r B  1
j 1
La maggior parte dei problemi di ingegneria possiedono questa caratteristica.
Sistemi di equazioni algebriche lineari
Metodo di Jacobi (o delle sostituzioni simultanee)
Viene, quindi, spontaneo definire il processo iterativo:
x   g ,
x
1
k 1 
 B x   g
k
Si ha allora
x   g
1
x   B g  g
2
x   B2 g  B g  g
3
......
x
k 1 
 B k g  B k 1 g  .....  B g  g (Serie geometrica di ragione B con r (B) <1)
x  Bx g

1
f   I  B  g  lim x 
k  1
k 
perciò, la soluzione esatta viene ottenuta nella forma di una serie di Neumann; infatti:
La dominanza diagonale in senso stretto della matrice A
è condizione sufficiente per la convergenza del metodo di Jacobi
Sistemi di equazioni algebriche lineari
Metodo di Jacobi (o delle sostituzioni simultanee)
Le singole equazioni algebriche dell’equazione iterativa matriciale
x
k 1 
 B x   g
k
si possono scrivere, in termini di componenti, come:
n
  a1 j x (jk )  b1
x1( k 1) 
j2
a11
i 1
  aij x
xi( k 1) 
j 1
k  0,1, 2, ....
,
n
(k )
j


j  i 1
aii
aij x (j k )  bi
,
i  2, ..., n  1
k  0,1, 2, ....
n 1
  anj x (j k )  bn
xn( k  1) 
j 1
,
k  0,1, 2, ....
ann
Il vettore x(k+1) ottenuto con l’algoritmo di Jacobi viene prima memorizzato in una
posizione di memoria distinta da quella occupata da x(k) poi le n componenti xi(k+1)
vengono trasferite simultaneamente nelle posizioni prima occupate dalle xi(k).
Per questo motivo il metodo è detto anche metodo delle sostituzioni simultanee.
Sistemi di equazioni algebriche lineari
Esempio applicativo del metodo di Jacobi
Il sistema di equazioni Ax = b lo si scrive in forma estesa come:
 a11 x1  a12 x2  a13 x3  b1

 a21 x1  a22 x2  a23 x3  b2
a x  a x  a x  b
 31 1
32 2
33 3
3

 x1    a12 x2  a13 x3  / a11  b1 / a11

 x2    a21 x1  a23 x3  / a22  b2 / a22
 x   a x  a x  / a  b / a
31 1
32 2
33
3
33
 3
(*)
Il procedimento comincia con la scelta dei valori iniziali per x (la scelta più semplice è
quella di assumere tutte le xi siano uguali a zero). I valori iniziali vengono sostituiti a
secondo membro delle equazioni del sistema (*) precedente e si ottengono i seguenti
nuovi valori per xi
 x1( k 1 )    a12 x2( k )  a13 x3( k )  / a11  b1 / a11

 ( k 1 )
   a21 x1( k )  a23 x3( k )  / a22  b2 / a22
 x2
 ( k 1 )
   a31 x1( k )  a32 x2( k )  / a33  b3 / a33
 x3

 x1(1)  b1 / a11
 (1)
 x2  b2 / a22
 x (1)  b / a
3
33
 3
A questo punto si sostituiscono questi nuovi valori delle xi a secondo membro delle
equazioni del sistema (*) per ottenere una nuova stima della soluzione esatta del
sistema Ax=b.
Si ripete questo processo finché non risulta soddisfatto il criterio di arresto.
Sistemi di equazioni algebriche lineari
Metodo di Gauss-Seidel (o delle sostituzioni successive)
La matrice B del metodo di Jacobi viene ulteriormente suddivisa:

BJ

 0

 a21
 a22
 a
  31
 a33
 
 an1

 ann

a12
a11
0
a32
a33

an 2

ann

a13
a11
a
 23
a22

0



an 3

ann
a1n 
 0
a11   a

21
a2 n   
a22

a22   a
31
a3n    
a33


a33   
   a n1
 
0   ann






L
0
0
0
0
a
 32
a33

an 2

ann
 0 0  a12
 
a11
 0 
0
 0

 0  

0
0
  


 0  
 0
0

0

a n3

ann
U
a13
a11
a23

a22

0



0



a1n 
a11 

a2 n 

a22 
a3n 


a33 
 

0 

si ha perciò
x  BJ x  g

x  Lx  Ux  g
Si definisce il processo iterativo
x
k 1
 L x
k 1
 U x   g
k
che in termini di componenti
i 1
  aij x
xi( k 1) 
j 1
n
( k 1)
j


j  i 1
aii
aij x (j k )  bi
,
i  1, 2, ..., n
k  0,1, 2, ....
NB: L’idea di base è di utilizzare subito nel calcolo le componenti aggiornate nel corso della iterazione stessa
Sistemi di equazioni algebriche lineari
Metodo di Gauss-Seidel (o delle sostituzioni successive)
L’algoritmo di Gauss-Seidel consente una maggiore economia di memoria rispetto a
quello di Jacobi, in quanto ogni singola componente xi(k+1) appena calcolata può essere
subito memorizzata nella posizione di memoria prima occupata dalla vecchia
componente xi(k). Ciò giustifica la denominazione di metodo delle sostituzioni successive
spesso usata per il processo.
La matrice di iterazione si ottiene scrivendo il processo iterativo nella forma
x
k  1
 L x
k 1 
 U x   g  x 
k
k  1
1
1
  I  L  U x    I  L  g


BGS
k
gGS
ovvero:
1
BGS   I  L  U
Sotto ipotesi non troppo restrittive per la matrice A si può dimostrare che:
r  BGS   r 2  BJ 
perciò il metodo di Gauss-Seidel converge più rapidamente di quello di Jacobi,
impiegando un numero di iterazioni pari a circa la metà.
Sistemi di equazioni algebriche lineari
Esempio applicativo del metodo di Gauss-Seidel
Il sistema di equazioni Ax=b lo si scrive in forma estesa come:
 a11 x1  a12 x2  a13 x3  b1

 a21 x1  a22 x2  a23 x3  b2
a x  a x  a x  b
 31 1
32 2
33 3
3

 x1    a12 x2  a13 x3  / a11  b1 / a11

 x2    a21 x1  a23 x3  / a22  b2 / a22
 x   a x  a x  / a  b / a
31 1
32 2
33
3
33
 3
(*)
Il procedimento comincia con la scelta dei valori iniziali per x (la scelta più semplice è
quella di assumere tutte le xi siano uguali a zero). I valori iniziali vengono sostituiti a
secondo membro della prima equazione del sistema (*) in modo da ottenere un nuovo
valore della componente x1 che poi viene subito utilizzato nella seconda equazione per
trovare il nuovo valore della componente x2 e così via.
 x1( k 1 )    a12 x2( k )  a13 x3( k )  / a11  b1 / a11

 ( k 1 )
   a21 x1( k 1 )  a23 x3( k )  / a22  b2 / a22
 x2
 ( k 1 )
   a31 x1( k 1 )  a32 x2( k 1 )  / a33  b3 / a33
 x3

 x1( 1 )  b1 / a11
 (1)
(1)
 x2   a21 x1  b2 / a22
 x( 1 )  a x( 1 )  a x( 1 )  b / a
31 1
13 2
3
33
 3
A questo punto si sostituiscono questi nuovi valori delle xi a secondo membro delle
equazioni del sistema (*) per ottenere una nuova stima della soluzione esatta del
sistema Ax=b, sempre utilizzando immediatamente nelle equazioni successive i nuovi
valori delle componenti incognite a mano a mano trovate.
Si ripete questo processo finché non risulta soddisfatto il criterio di arresto.
Sistemi di equazioni algebriche lineari
Metodo di sovrarilassamento (SOR=Successive Over-Relaxation)
L’idea di base è quella di estrapolare la predizione ottenuta dal metodo di Gauss-Seidel
per mezzo di un fattore di sovrarilassamento w > 1
x
k 1 
k
k 1
k
 x   w x   x  

 GS
in cui
 x  k 1  x  k    L x  k 1   U  I  x  k   g

 GS
Per componenti si ha:
xi
k 1 
 xi   w  xi

k
i  1, 2, ..., n
k 1 
k
 xi  
 GS
k  0,1, 2, ....
n
 i 1

( k 1)
(k)

a
x

a
x

b
 ij j i  k  
  ij j
k
j 1
j  i 1
 xi  w 
 xi 
aii





 GS
Sistemi di equazioni algebriche lineari
Metodo di sovrarilassamento (SOR=Successive OverRelaxation)
Per la matrice di iterazione del SOR si ottiene:
x
k 1 
1
1
  I  w L    1  w  I  w U  x    w  I  w L  g




k
g SOR
BSOR
Si può dimostrare che il raggio spettrale della matrice di iterazione del SOR è minimo
quando si scelga:
w  wopt 
2
1 1 r
2
BJ
 1  wopt  2
dove rB è il raggio spettrale della matrice di iterazione del metodo di Jacobi.
La scelta del valore più appropriato del fattore di sovrarilassamento dipende
strettamente dal problema e viene spesso determinato per tentativi.
Sistemi di equazioni algebriche lineari
Criteri di arresto
Un criterio di arresto di un metodo iterativo visto in precedenza potrebbe essere quello
basato sull’uso del residuo:
k
k
r   b  A x 
Essendo r(k) = 0 quando x(k) = f è logico pensare di arrestare il processo iterativo
quando:
r
k

Sfortunatamente questa conclusione è vera solo per matrici ben condizionate in quanto
(dall’analisi a priori per i sistemi lineari) si ricava che
f  x
f
k
 m  A
r
k
b
In generale non si conosce la matrice inversa di A (il calcolo di A-1 equivarrebbe,
infatti, alla risoluzione diretta del sistema Ax=b) e quindi il numero di condizionamento
m(A) ( ||A|| ||A-1|| ≥ 1); tuttavia l’equazione precedente può essere effettivamente
utilizzata ricorrendo ad appositi procedimenti per il calcolo approssimato di m(A).
Sistemi di equazioni algebriche lineari
Criteri di arresto
Un criterio di arresto alternativo potrebbe essere quello basato sulla differenza fra
iterate consecutive: il metodo si arresta al primo k tale che
x   x
k
x
k
k 1 

(errore relativo approssimato)
Questo criterio ha però l’inconveniente che se la velocità di convergenza è molto bassa
l’errore relativo approssimato, calcolato con la formula precedente, può essere piccolo
senza che lo sia l’errore effettivo.
NF1
Sistemi di equazioni algebriche lineari (riepilogo)
Soluzione numerica dei sistemi di equazioni lineari
Ax=b
Metodi diretti
Metodi iterativi
A x = b  x = B x + g  x ( k 1) = B x ( k ) + g
Metodo di
Gauss
Metodo di
Gauss-Jordan
Metodi di fattorizzazione
Metodo di Jacobi
(o delle sostituzioni
simultanee)
Condizione necessaria e sufficiente
perché il metodo iterativo converga
è che sia r(B) < 1
Metodo di Gauss-Seidel
(o delle sostituzioni
successive)
Criteri di arresto
Metodo di
sovrarilassamento
SOR
Diapositiva 26
NF1
jacobi.m
gauss_sidel.m
SOR.m
Nicola Forgione; 29/04/2015