Introduzione Un sistema di equazioni algebriche lineari ha la forma seguente: a11 x1 a12 x2 a13 x3 a1N xN b1 a21x1 a22 x2 a23 x3 a2 N x N b2 aM 1 x1 aM 2 x2 aM 3 x3 aMN xN bM le N incognite x1,x2,...,xN sono legate da M equazioni lineari le quantità aij e bi (i=1,2,...,M e j=1,2,...,N) sono note se N=M il numero di equazioni è pari al numero delle incognite ed esiste la possibilità che il sistema abbia un’unica soluzione nel caso M=N la soluzione non è unica se: una equazione è una combinazione lineare delle altre (degenerazione di riga) tutte le equazioni contengono certe variabili nelle stesse combinazioni lineari (degenerazione di colonna) Alcuni esempi Degenerazione di riga: x1 x2 2 x3 3 x1 x2 5 x3 1 2 x1 2 x2 4 x3 0 x1 x2 3 x1 5 x2 2 x3 1 3x1 3x2 9 il primo sistema è impossibile, il secondo è indeterminato Degenerazione di colonna: 2 x1 x2 x3 5 x1 x2 x3 1 7 x1 2 x2 2 x3 3 le variabili x2 e x3 compaiono sempre nella combinazione lineare x2-x3 il sistema in esame è impossibile Soluzioni numeriche Nella soluzione numerica di un sistema si possono presentare due tipi di problemi: gli errori di arrotondamento del computer possono rendere alcune equazioni (che inizialmente non lo sono!) linearmente dipendenti, rendendo il sistema irrisolvibile gli errori di arrotondamento che si accumulano nel corso della risoluzione numerica possono avere effetti significativi sulla soluzione, che risulterà errata è sempre opportuno verificare la correttezza della soluzione andando a sostituirla nelle equazioni di partenza questa situazione tende a verificarsi se N è grande e se il sistema è vicino ad essere singolare Matrici Un sistema lineare può scriversi nella forma: dove: a11 a12 a1N a21 a22 a2 N A aM 1 aM 2 aMN A x b x1 x2 x x N b1 b2 b bM La matrice A è detta “matrice dei coefficienti” il primo indice di ciascun elemento aij è quello di riga, il secondo indice è quello di colonna Il vettore b è detto “vettore dei termini noti” Definizioni (1) Matrice quadrata: M=N Sia A una matrice quadrata: a11 a12 a1N a21 a22 a2 N A a N 1 a N 2 a NN diagonale principale diagonale secondaria diagonale principale: è formata dagli elementi con indici uguali a11,a22,...,aNN diagonale secondaria: è formata dagli elementi con indici la cui somma è N+1: a1N,a2N-1,...,aN1 Matrice diagonale: tutti gli elementi al di fuori della diagonale principale sono nulli Matrice simmetrica: aik=aki Definizioni (2) Matrice unità: è una matrice quadrata che ha uguali a 1 tutti gli elementi della diagonale principale e uguali a 0 tutti gli altri elementi 1 0 0 0 1 0 I 0 0 1 Simbolo di Kronecker: 1 se i j ij 0 se i j gli elementi della matrice unità possono essere rappresentati con il simbolo di Kronecker Definizioni (3) Matrice trasposta: data una matrice A, la trasposta AT è la matrice che si ottiene da A scambiando le righe con le colonne se A è una matrice MN, AT sarà una matrice NM a11 a12 a1N a11 a21 a22 a2 N a12 T A A aM 1 aM 2 aMN a1N a21 a22 a2 N aM 1 aM 2 aMN se A è quadrata, anche AT è quadrata la matrice trasposta della trasposta è nuovamente la matrice di partenza: (AT)T=A una matrice quadrata simmetrica coincide con la sua trasposta Somma e differenza tra matrici La somma tra due matrici A e B si può effettuare solo se le due matrici hanno le stesse dimensioni la matrice somma ha le stesse dimensioni di A e di B Detta C=A+B la matrice somma, i suoi elementi si ottengono sommando quelli di A e B: cik=aik+bik Data una matrice A, si definisce la matrice opposta –A tale che A+(-A)=0 la matrice nulla (0) è una matrice i cui elementi sono tutti nulli la matrice opposta ha le stesse dimensioni della matrice A gli elementi della matrice opposta sono gli opposti di quelli della matrice A: (-a)ik=-aik Analogamente alla somma, la differenza tra due matrici A e B si può calcolare solo se A e B hanno le stesse dimensioni la matrice differenza ha le stesse dimensioni di A e B e si ottiene sommando la matrice A con l’opposta di B Detta D=A-B la matrice differenza, i suoi elementi sono: dik=aik-bik Prodotto di una matrice per un numero Data una matrice A ed un numero r, il prodotto del numero r per la matrice A è una matrice delle stesse dimensioni di A, i cui elementi sono pari agli elementi di A moltiplicati per il numero r: a11 a12 a1N ra11 ra12 ra1N a21 a22 a2 N ra21 ra22 ra2 N rA Ar A aM 1 aM 2 aMN ra M 1 ra M 2 raMN Prodotto tra matrici (1) Il prodotto tra matrici si può effettuare solo se il numero di colonne della prima matrice è uguale al numero di righe della seconda matrice Data una matrice A di tipo MP ed una matrice B di tipo PN, la matrice prodotto C=AB sarà una matrice di tipo MN si noti che in generale AB ≠ BA (sono due matrici di tipo diverso, ammesso che esistano entrambe!) Gli elementi di C=AB si calcolano con la regola del prodotto righe per colonne: P cik aijb jk j 1 Prodotto tra matrici (2) Regola del prodotto: P cik aijb jk ai1b1k ai 2b2k aiPbPk j 1 colonna k a11 a21 riga i ai1 a M1 a12 a22 ai 2 aM 2 a1P b11 b12 b1k b1N c11 c12 a2 P b21 b22 b2 k b2 N c21 c22 aiP bPN cM 1 cM 2 aMP bP1 bP 2 bPk cik c1N cMN Determinante (1) Il determinante può essere definito solamente nel caso di matrici quadrate Per una matrice quadrata 11 (del primo ordine) il determinante è pari all’unico elemento della matrice: A a11 det A A a11 Per matrici quadrate di ordine superiore il determinante si definisce in maniera induttiva, partendo dalla definizione data nel caso della matrice di ordine 1 Determinante (2) A seconda della sua posizione nella matrice A, un elemento aik di una matrice può essere: di classe pari (dispari) se i+k è pari (dispari) A ciascun elemento aik viene associata una matrice quadrata, che si ottiene dalla matrice A eliminando la i-esima riga e la k-esima colonna il determinante di tale matrice, Mik, si chiama minore complementare dell’elemento aik a11 a12 a21 a22 A ai1 ai 2 a N1 aN 2 a1k a2 k aik a Nk a1N aiN aiN a NN si chiama complemento algebrico Cik dell’elemento aik il minore complementare Mik moltiplicato per +1 o -1 a seconda che aik sia di classe pari o dispari: Cik 1 M ik i k Determinante (3) Il determinante di una matrice quadrata è definito come somma dei prodotti degli elementi di una linea (riga o colonna) per i corrispondenti complementi algebrici N det A aik Cik (k arbitrario ) i 1 N det A aik Cik (i arbitrario ) k 1 Il valore del determinante non dipende dalla linea scelta Una matrice con determinante nullo è detta singolare Determinante di una matrice 22 Calcoliamo il determinante di una matrice 22: a11 a12 A a21 a22 Sviluppando il determinante lungo la prima riga si ha: det A a11C11 a12C12 a11 1 a22 a12 1 a21 a11a22 a12a21 2 3 Il determinante della matrice 22 si calcola come il prodotto degli elementi della diagonale principale meno il prodotto degli elementi della diagonale secondaria Determinante di una matrice 33 Calcoliamo il determinante di una matrice 33: a11 a12 A a21 a22 a31 a32 a13 a23 a33 Sviluppando il determinante lungo la prima riga si ha: det A a11C11 a12C12 a13C13 a11 1 2 a22 a23 a32 a33 a12 1 3 a21 a23 a31 a33 a13 1 4 a21 a22 a31 a32 a11 a22a33 a23a32 a12 a21a33 a23a31 a13 a21a32 a22a31 a11a22a33 a12a23a31 a13a21a32 a11a23a32 a12a21a33 a13a22a31 Regola empirica: il determinante di una matrice 33 si calcola sommando i prodotti degli elementi della diagonale principale e delle sue parallele e sottraendo i prodotti degli elementi della diagonale secondaria e delle sue parallele Alcune proprietà dei determinanti Il determinante della matrice trasposta è uguale al determinante della matrice di partenza: detAT=detA Se tutti gli elementi di una riga (o di una colonna) sono nulli, il determinante è nullo Scambiando tra loro due righe (o due colonne) il determinante cambia segno Se due righe (o due colonne) parallele sono proporzionali, il determinante è nullo Se gli elementi di una riga (o di una colonna) vengono moltiplicati per un numero r, il determinante viene anch’esso moltiplicato per r Il determinante di una matrice quadrata non cambia quando agli elementi di una linea si aggiungono i corrispondenti elementi di una linea parallela moltiplicati per un numero arbitrario r Date due matrici quadrate A e B, se C=AB, allora risulta anche detC=detAdetB Matrici triangolari Una matrice quadrata si dice triangolare se tutti i suoi elementi al di sopra o al di sotto della diagonale principale sono nulli matrice triangolare superiore (alta) se aik=0 con i>k matrice triangolare inferiore (bassa) se aik=0 con i<k a11 a12 a1N 0 a22 a2 N TU 0 0 a NN 0 0 a11 a21 a22 0 TL a N 1 a N 2 a NN Il determinante di una matrice triangolare è pari al prodotto degli elementi della diagonale principale: N det T a11a22 a NN aii i 1 Matrice inversa Data una matrice quadrata A di ordine N, si dice inversa (se esiste) la matrice A-1 tale che: AA1 I A1 A dove I è la matrice unità di ordine N Ogni matrice che ammette un’inversa si dice invertibile Se la matrice inversa esiste è anch’essa di ordine N l’inversa della matrice unità è ancora la matrice unità Teorema: se la matrice inversa esiste, essa è unica Teorema: ogni matrice non singolare possiede una matrice inversa se una matrice ha determinante nullo, allora non è invertibile Metodo di Gauss-Jordan (1) Il problema della risoluzione di un sistema lineare è strettamente connesso a quello dell’inversione della matrice dei coefficienti i due problemi possono essere affrontati insieme Sia quindi data una matrice A di NN coefficienti ed un vettore b di N termini noti Vogliamo trovare un vettore x ed una matrice Y tali che: Ax b AY I il vettore x è la soluzione di un sistema lineare di N equazioni in N incognite la matrice Y è l’inversa della matrice A Metodo di Gauss-Jordan (2) Osservazioni preliminari: se si scambiano tra loro due righe di A, e le corrispondenti due righe di b e di I (che in seguito allo scambio non sarà più la matrice unità), le soluzioni x e Y non cambiano se sostituiamo una riga di A con una combinazione lineare della riga stessa e di una qualsiasi altra riga, e facciamo la stessa cosa nelle righe di b e di I (che, ancora una volta, in seguito allo scambio non sarà più la matrice unità), le soluzioni x e Y non cambiano se si scambiano due colonne di A, si ottengono le stesse soluzioni solo se simultaneamente vengono scambiate le righe corrispondenti di x e di Y lo scambio di colonne comporta uno scambio delle righe nella soluzione Il metodo di eliminazione di Gauss-Jordan sfrutta tutte queste proprietà Un esempio (1) Consideriamo il sistema: x1 2 x2 4 x3 3 2 x1 x2 x3 5 x1 x2 3x3 8 1 2 4 A 2 1 1 1 1 3 3 b 5 8 La soluzione è il vettore x1=3, x2=2, x3=1 Scambiamo la prima e la seconda riga di A e la prima e la seconda riga di b 2 1 1 A 1 2 4 1 1 3 5 b 3 8 2 x1 x2 x3 5 x1 2 x2 4 x3 3 x1 x2 3x3 8 è evidente che il sistema è rimasto lo stesso, e quindi anche la soluzione non è cambiata Un esempio (2) Sostituiamo ora la prima riga di A e di b con la somma della prima riga e della seconda riga 1 2 4 A 2 1 1 1 1 3 3 b 5 8 3 1 3 A 2 1 1 1 1 3 8 b 5 8 3x1 x2 3x3 8 2 x1 x2 x3 5 x1 x2 3x3 8 Ancora una volta la soluzione del sistema non cambia (x1=3, x2=2, x3=1) Un esempio (3) Infine scambiamo la seconda e la terza colonna di A: 1 2 4 A 2 1 1 1 1 3 3 b 5 8 1 4 2 A 2 1 1 1 3 1 3 b 5 8 x1 4 x2 2 x3 3 2 x1 x2 x3 5 x1 3x2 x3 8 Adesso la soluzione è diventata x1=3, x2=1, x3=2, cioè si sono scambiati x2 con x3 Per ripristinare la soluzione precedente è necessario scambiare la seconda e la terza riga del vettore x Metodo di Gauss-Jordan (3) In ciascuna iterazione la matrice A, il vettore b e la matrice I vengono modificati sfruttando le proprietà enunciate in precedenza Alla n-esima iterazione le equazioni da risolvere avranno la forma: An x bn AnY I n se si riesce a trasformare la matrice A nella matrice unità, ossia se An=I, allora sarà: x bn Y In cioè il vettore dei termini noti modificato e la matrice unità modificata forniranno la soluzione del problema Esempio (1) Vediamo come si applica il metodo di eliminazione di Gauss-Jordan nell’esempio studiato in precedenza: 1 2 4 A 2 1 1 1 1 3 3 b 5 8 1 0 0 I 0 1 0 0 0 1 Prima iterazione: dividiamo la prima riga per l’elemento a11 (pivot) in modo che il primo elemento della diagonale principale sia 1 in questo caso particolare a11=1 e le matrici restano invariate 1 2 4 A1 2 1 1 1 1 3 3 b1 5 8 1 0 0 I1 0 1 0 0 0 1 Esempio (2) Seconda iterazione: lo scopo è quello di far sì che la prima colonna riproduca la prima colonna della matrice unità seconda riga seconda riga – a21prima riga terza riga terza riga – a31prima riga 1 2 4 A1 2 1 1 1 1 3 1 2 4 A2 0 5 9 0 1 7 3 b1 5 8 3 b 2 1 5 1 0 0 I1 0 1 0 0 0 1 1 0 0 I 2 2 1 0 1 0 1 Esempio (3) Terza iterazione: lo scopo è quello di far sì che anche il secondo elemento della diagonale principale di A sia pari a 1 dividiamo quindi la seconda riga per l’elemento pivot a22 1 2 4 A2 0 5 9 0 1 7 4 1 2 A3 0 1 9 / 5 0 1 7 3 b 2 1 5 3 b3 1 / 5 5 1 0 0 I 2 2 1 0 1 0 1 0 0 1 I 3 2 / 5 1 / 5 0 1 0 1 Esempio (4) Quarta iterazione: lo scopo è quello di far sì che la seconda colonna riproduca la seconda colonna della matrice unità prima riga prima riga – a12seconda riga terza riga terza riga – a32seconda riga 4 1 2 A3 0 1 9 / 5 0 1 7 1 0 2 / 5 A4 0 1 9 / 5 0 0 26 / 5 3 b3 1 / 5 5 13 / 5 b4 1/ 5 26 / 5 0 0 1 I 3 2 / 5 1 / 5 0 1 0 1 2 / 5 0 1/ 5 I 4 2 / 5 1 / 5 0 3 / 5 1 / 5 1 Esempio (5) Quinta iterazione: lo scopo è quello di far sì che anche il terzo elemento della diagonale principale di A sia pari a 1 dividiamo quindi la terza riga per l’elemento pivot a33 1 0 2 / 5 A4 0 1 9 / 5 0 0 26 / 5 1 0 2 / 5 A5 0 1 9 / 5 0 0 1 13 / 5 b4 1/ 5 26 / 5 13 / 5 b5 1 / 5 1 2 / 5 0 1/ 5 I 4 2 / 5 1 / 5 0 3 / 5 1 / 5 1 2/5 0 1/ 5 I5 2 / 5 1/ 5 0 3 / 26 1 / 26 5 / 26 Esempio (6) Sesta iterazione: lo scopo è quello di far sì che la terza colonna riproduca la seconda colonna della matrice unità prima riga prima riga – a13terza riga seconda riga seconda riga – a23terza riga 1 0 2 / 5 A5 0 1 9 / 5 0 0 1 1 0 0 A6 0 1 0 0 0 1 13 / 5 b5 1 / 5 1 3 b 6 2 1 2/5 0 1/ 5 I5 2 / 5 1/ 5 0 3 / 26 1 / 26 5 / 26 5 / 13 1 / 13 2 / 13 I 6 5 / 26 7 / 26 9 / 26 3 / 26 1 / 26 5 / 26 Alcune considerazioni Nell’esempio precedente il vettore b6 rappresenta la soluzione x del sistema Ax=b e la matrice I6 rappresenta la matrice Y=A-1 Nell’applicare il metodo di Gauss-Jordan potrebbero nascere dei problemi se un elemento pivot dovesse essere nullo in tal caso gli elementi della riga corrispondente verrebbero divisi per zero Per evitare situazioni in cui un elemento pivot è nullo, si sfruttano le proprietà legate alla permutazione di righe e colonne delle matrici, in modo che nella posizione di pivot si venga a trovare un elemento di matrice “opportuno” “partial pivoting”: si sfruttano solo le proprietà legate alla permutazione delle righe “full pivoting”: si sfruttano le proprietà legate sia alla permutazione delle righe che delle colonne una volta trovate le soluzioni del problema, occorre poi effettuare le opportune permutazioni inverse una buona strategia è quella di scegliere volta per volta come elemento pivot quello più grande in valore assoluto, effettuando le permutazioni necessarie per portarlo nella posizione di pivot Metodo di eliminazione di Gauss Il metodo di eliminazione di Gauss trasforma una matrice A in una matrice triangolare Una volta effettuata questa operazione, il sistema Ax=b può essere risolto per sostituzione Alla fine della procedura, si ha: a11 a12 a1N b1 0 a22 a2 N b2 b A 0 bN 0 a NN a11x1 a12 x2 a1N xN b1 a22 x2 a2 N xN b2 Ax b a NN xN bN Il sistema così ottenuto può essere risolto per sostituzione: xN bN a NN 1 xi aii N b a x i ij j j i 1 Esempio (1) Consideriamo ancora il sistema precedente: 1 2 4 A 2 1 1 1 1 3 3 b 5 8 x1 2 x2 4 x3 3 2 x1 x2 x3 5 x1 x2 3x3 8 Prima iterazione: facciamo in modo che a21=0 e a31=0 seconda riga seconda riga – (a21/a11)prima riga terza riga terza riga – (a31/a11)prima riga 1 2 4 A1 0 5 9 0 1 7 3 b1 1 5 x1 2 x2 4 x3 3 5 x2 9 x3 1 x2 7 x3 5 Esempio (2) Seconda iterazione: facciamo in modo che a32=0 terza riga terza riga – (a32/a22)seconda riga 1 2 4 A1 0 5 9 0 1 7 4 1 2 A2 0 5 9 0 0 26 / 5 3 b1 1 5 3 b2 1 26 / 5 x1 2 x2 4 x3 3 5 x2 9 x3 1 x2 7 x3 5 x 2x 4x 3 2 3 1 5 x2 9 x3 1 26 26 x 3 5 5 Esempio (3) Il sistema può quindi essere risolto per sostituzione partendo dall’ultima equazione: x3 1 9 x3 1 x2 2 5 x1 3 2 x2 4 x3 3 Considerazioni sul metodo di Gauss Anche in questo caso bisogna evitare le situazioni in cui l’elemento pivot è nullo, sfruttando le proprietà delle matrici Il metodo di eliminazione di Gauss è più veloce rispetto a quello di Gauss-Jordan negli algoritmi in cui viene applicato il metodo di Gauss- Jordan sono richieste N3 operazioni per ciclo negli algoritmi in cui si applica il metodo di Gauss sono richieste N3/3 operazioni per ciclo Il metodo di eliminazione di Gauss non fornisce la matrice inversa A-1 Tale matrice può essere calcolata risolvendo gli N sistemi Axi=bi dove bi è il vettore contenente l’i-esima colonna della matrice unità Decomposizione LU (1) Supponiamo che sia possibile scrivere la matrice A come prodotto A=LU dove: L è una matrice triangolare inferiore U è una matrice triangolare superiore a11 a21 A LU a N1 a12 a13 a22 a23 aN 2 aN 3 a1N 11 0 0 0 11 12 a2 N 21 22 0 0 0 22 a NN N 1 N 2 N 3 NN 0 0 13 1N 23 0 2N NN Se tale decomposizione è possibile, il sistema Ax=b si trasforma nel modo seguente: Ax b LU x b LUx b Decomposizione LU (2) Per risolvere il sistema di partenza occorre dunque risolvere i due sistemi: Ly = b Ux = y Il vantaggio di questo approccio è che entrambi i sistemi hanno una matrice dei coefficienti di forma triangolare, e possono essere risolti per sostituzione: y1 b1 11 i 1 1 yi b y i ij j ii j 1 xN i 2,3,, N yN NN N 1 xi yi ij x j ii j i 1 i N 1, N 2,,1 Decomposizione LU (3) Se vale la decomposizione A=LU si ha, dalla regola del prodotto: N aij ik kj ai11 j ai 2 2 j aiN Nj k 1 in totale si possono scrivere N2 equazioni di questo tipo ciascuna equazione contiene un numero di termini che dipende da i e j (km=0 se k<m e km=0 se k>m) le incognite sono N2+N (le ij e le ij non nulle) in ciascuna matrice L e U ci sono N(N+1)/2 incognite per effettuare la decomposizione occorre fissare N incognite Algoritmo di Crout (1) Si fissano i termini diagonali della matrice L ponendo: ii 1 i 1,2,, N Partiamo dalle equazioni che legano i coefficienti ij, ij e aij ed eliminiamo i termini nulli tenendo conto che km=0 se k<m e km=0 se k>m: aij i11 j i 2 2 j ii ij N aij ik kj aij i11 j i 2 2 j ii jj k 1 aij i11 j i 2 2 j ij jj i j i j i j Nell’algoritmo di Crout si sfruttano queste relazioni per ricavare, in maniera iterativa, i coefficienti ij e ij Algoritmo di Crout (2) Fissiamo l’indice di colonna j=1,2,...,N. Facciamo variare l’indice di riga i nell’intervallo i=1,2,...,j: i 1 aij i11 j i 2 2 j ii ij ik kj ij k 1 i 1 ij aij ik kj se i 1 la sommatoria è da considerar si nulla k 1 Facciamo ora variare l’indice di riga i nell’intervallo i=j+1,j+2,...,N: j 1 aij i11 j i 2 2 j ij jj ik kj ij jj k 1 j 1 1 ij a (se j 1 la sommatoria è da considerar si nulla) ij ik kj jj k 1 I coefficienti che compaiono nelle equazioni sono stati determinati nelle iterazioni precedenti Esempio (1) Applichiamo l’algoritmo di Crout per decomporre la matrice: 1 2 4 A 2 1 1 1 1 3 Alla fine del procedimento determineremo due matrici L e U tali che: A LU 0 0 1 L 21 1 0 31 32 1 11 12 U 0 22 0 0 13 23 33 Esempio (2) L’algoritmo di Crout viene applicato colonna per colonna si determinano prima i valori di ij e poi quelli di ij Colonna 1 (j=1): 11 a11 1 21 31 1 11 1 11 a21 1 2 2 1 a31 1 1 1 1 Colonna 2 (j=2): 12 a12 2 22 a22 2112 1 2 2 5 32 1 22 a32 3112 1 1 1 1 2 5 5 Esempio (3) Colonna 3 (j=3): 13 a13 4 23 a23 2113 1 2 4 9 33 a33 3113 32 23 3 3 4 9 1 5 26 5 Riassumendo, si ha: 1 0 0 L 2 1 0 1 1 / 5 1 4 1 2 U 0 5 9 0 0 26 / 5 e si può verificare che A=LU Commenti sull’algoritmo di Crout Anche nell’algoritmo di Crout compaiono delle divisioni per gli elementi pivot jj la scelta dell’elemento pivot può essere effettuata mediante scambi di righe (“partial pivoting”) una volta calcolati tutti i ij della j-esima colonna, si effettua la permutazione delle righe che porta sulla diagonale l’elemento voluto (di solito si sceglie il più grande) in questo caso la matrice che viene decomposta non è la matrice originaria A, ma una matrice ottenuta permutando le righe di A: occorre quindi ricordare le permutazioni effettuate La soluzione di un sistema lineare tramite la decomposizione LU richiede circa 1/3 delle operazioni richieste dal metodo di Gauss-Jordan Applicazioni della decomposizione LU Calcolo della matrice inversa: come nel caso del metodo di Gauss, la matrice inversa può essere calcolata risolvendo gli N sistemi Axi=bi dove bi è il vettore contenente l’i-esima colonna della matrice unità Calcolo del determinante: si sfruttano le proprietà del determinante di un prodotto tra matrici e del determinante delle matrici triangolari: N N N det A det L det U ii ii ii i 1 i 1 i 1 Sistemi tridiagonali (1) Si tratta di sistemi in cui la matrice dei coefficienti ha elementi non nulli solo sulla diagonale principale e nelle posizioni adiacenti ad essa: 1 1 0 2 2 2 0 3 3 A 0 0 0 0 0 0 N 0 0 0 N In generale gli elementi sulla diagonale principale sono più grandi rispetto a quelli fuori diagonale: i i i Sistemi tridiagonali (2) La soluzione di un sistema tridiagonale richiede un numero di operazioni minore rispetto a quella di un sistema normale tipicamente per risolvere un sistema normale sono richieste O(N3) operazioni, mentre per risolvere un sistema tridiagonale ne occorrono O(N) Un algoritmo per la soluzione di un sistema tridiagonale richiede meno memoria rispetto ad uno stesso algoritmo applicato ad un sistema normale non è necessario immagazzinare le informazioni complete sulla matrice dei coefficienti, ma solo quelle relative ai coefficienti non nulli Si può sviluppare un algoritmo per la soluzione di sistemi tridiagonali che sfrutta il metodo eliminazione di Gauss la soluzione si ricava per sostituzione poiché solitamente gli elementi sulla diagonale sono diversi da zero e più grandi in modulo di quelli fuori diagonale, in genere non ci sono problemi di scelta dell’elemento pivot Esempio (1) Consideriamo il seguente sistema tridiagonale: 5 x1 x2 7 5 1 0 0 x1 5 x2 2 x3 15 1 5 2 0 A 0 1 8 3 x2 8 x3 3x4 8 0 0 3x3 10 x4 13 3 10 7 15 B 8 13 la cui soluzione è x1=2, x2=3, x3=1, x4=1 Risolviamo il sistema trasformando la matrice A in una matrice triangolare con il metodo di eliminazione di Gauss Esempio (2) Prima iterazione: seconda riga seconda riga - 2/1prima riga 5 1 0 0 1 5 2 0 A 0 1 8 3 0 0 3 10 0 0 5 1 0 26 / 5 2 0 A1 0 1 8 3 0 0 3 10 7 15 B 8 13 7 68 / 5 B1 8 13 Esempio (3) Seconda iterazione: terza riga terza riga - 3/2seconda riga 0 0 5 1 0 26 / 5 2 0 A1 0 1 8 3 0 0 3 10 0 0 5 1 0 26 / 5 2 0 A2 0 0 109 / 13 3 0 0 3 10 7 68 / 5 B1 8 13 7 68 / 5 B2 70 / 13 13 Esempio (4) Terza iterazione: quarta riga quarta riga - 4/3terza riga 0 0 5 1 0 26 / 5 2 0 A2 0 0 109 / 13 3 0 0 3 10 7 68 / 5 B2 70 / 13 13 0 0 5 1 0 26 / 5 2 0 A3 0 0 109 / 13 3 0 0 0 1207 / 109 7 68 / 5 B3 70 / 13 1207 / 109 Esempio (5) A questo punto il sistema può essere risolto per sostituzione: 1207 1207 x4 x4 1 109 109 109 70 13 70 x3 3 x4 x3 3 x4 1 13 13 109 13 26 68 5 68 x2 2 x3 x2 2 x3 3 5 5 26 5 1 5 x1 x2 7 x1 7 x2 2 5 In pratica, data la struttura tridiagonale, in ogni iterazione viene cambiato soltanto un elemento della matrice A Metodi iterativi Un sistema di equazioni lineari può essere risolto in maniera iterativa Si parte da una soluzione «di prova» e, attraverso iterazioni successive, si arriva alla soluzione del sistema Non sempre le procedure iterative convergono verso la soluzione del sistema Se la matrice dei coefficienti soddisfa una serie di condizioni opportune, la convergenza è garantita Una volta stabilita la convergenza della procedura iterativa, occorre stabilire un criterio per arrestare le iterazioni Metodo di Jacobi (1) Consideriamo come esempio il sistema seguente: 4x y z 7 4 x 8 y z 21 2 x y 5 z 15 la cui soluzione è x=2, y=4, z=3 Le equazioni del sistema possono essere riscritte nel modo seguente: 7 yz 4 21 4 x z y 8 15 2 x y z 5 x Metodo di Jacobi (2) Si può quindi pensare, data la soluzione (xk,yk,zk) dopo k iterazioni, di valutare la soluzione (xk+1,yk+1,zk+1) all’iterazione successiva come: 7 yk z k xk 1 4 21 4 xk zk yk 1 8 15 2 xk yk zk 1 5 Partendo da una soluzione di prova (x0,y0,z0) ci si aspetta che la procedura iterativa converga verso la soluzione esatta del sistema in un numero ragionevole di passi Metodo di Jacobi (3) Partendo dai valori (x0,y0,z0)=(1,2,2) il metodo di Jacobi converge verso la soluzione in 10 iterazioni (con una precisione alla quinta cifra significativa) Iterazione x y z 0 1 2 2 1 1.75 3.375 3 2 1.8438 3.875 3.025 3 1.9625 3.925 2.9625 4 1.9906 3.9766 3 5 1.9941 3.9953 3.0009 6 1.9986 3.9972 2.9986 7 1.9996 3.9991 3 8 1.9998 3.9998 3 9 1.9999 3.9999 2.9999 10 2 4 3 Metodo di Jacobi (4) Riscriviamo il sistema di partenza riordinando le equazioni nel modo seguente: 2 x y 5 z 15 4 x 8 y z 21 4x y z 7 Ricavando x dalla prima equazione, y dalla seconda e z dall’ultima possiamo scrivere le formule di Jacobi nel modo seguente: 15 y 5 z x 2 21 4 x z y 8 z 7 4x y 15 yk 5 z k xk 1 2 21 4 xk z k yk 1 8 z k 1 7 4 xk yk Metodo di Jacobi (5) Partendo dai valori (x0,y0,z0)=(1,2,2) e utilizzando le formule ricorsive ricavate in precedenza, il metodo di Jacobi stavolta non converge verso la soluzione! Iterazione x y z 0 1 2 2 1 -1.5 3.375 5 2 6.6875 2.5 16.375 3 34.6875 8.0156 -17.25 4 -46.6172 17.8125 -123.7344 5 -307.9227 -36.1504 211.2813 6 502.6279 -124.9297 1202.5684 Metodo di Gauss-Seidel (1) Consideriamo lo stesso sistema dell’esempio precedente 4x y z 7 4 x 8 y z 21 2 x y 5 z 15 7 yz x 4 21 4 x z y 8 15 2 x y z 5 L’idea alla base del metodo di Gauss-Seidel è quella di velocizzare la ricerca della soluzione sfruttando i valori di ciascuna incognita, man mano che questi vengono calcolati Metodo di Gauss-Seidel (2) La formula che permette di passare dalla k-esima alla (k+1)-esima iterazione sarà dunque la seguente: 7 yk z k xk 1 4 21 4 xk 1 z k yk 1 8 15 2 xk 1 yk 1 z k 1 5 Anche in questo caso si parte da una soluzione di prova (x0,y0,z0) e si procede iterativamente Metodo di Gauss-Seidel (3) Partendo dai valori (x0,y0,z0)=(1,2,2) e utilizzando le formule ricorsive ricavate in precedenza, il metodo di Gauss-Seidel converge verso la soluzione in 6 iterazioni (con una precisione alla quinta cifra significativa) Iterazione x y z 0 1 2 2 1 1.75 3.75 2.95 2 1.95 3.9688 2.9862 3 1.9956 3.9961 2.999 4 1.9993 3.9995 2.9998 5 1.9999 3.9999 3 6 2 4 3 Matrici a diagonale dominante Una matrice A è detta a diagonale dominante (per righe) in senso stretto se è verificata la condizione: N akk akj k 1 N j 1 j k Questo significa che in ciascuna riga l’elemento che si trova sulla diagonale è in valore assoluto maggiore della somma dei valori assoluti degli altri elementi In maniera analoga si definiscono le matrici a diagonale dominante per colonne In questo caso, considerata ciascuna colonna, l’elemento che si trova sulla diagonale deve essere in valore assoluto maggiore della somma dei valori assoluti degli altri elementi Teorema: una matrice a diagonale dominante è non singolare Esempio Consideriamo il sistema visto negli esempi precedenti: 4x y z 7 4 x 8 y z 21 2 x y 5 z 15 4 1 1 A 4 8 1 2 1 5 Come si può facilmente verificare, la matrice A è strettamente a diagonale dominante (per righe) Se però riscriviamo il sistema scambiando la prima e l’ultima equazione si ha: 2 x y 5 z 15 4 x 8 y z 21 4x y z 7 2 1 5 A 4 8 1 4 1 1 In questo caso, invece, la matrice A non è più strettamente a diagonale dominante Condizione sufficiente di convergenza Se la matrice dei coefficienti A è strettamente a diagonale dominante, allora il sistema Ax=b ammette un’unica soluzione Si può dimostrare che in tal caso la procedura di Jacobi converge verso la soluzione, comunque si scelga il vettore x0 di partenza Lo stesso risultato vale anche per il metodo di Gauss-Seidel In generale, il metodo di Gauss-Seidel converge più velocemente rispetto al metodo di Jacobi, e quindi viene preferito Vi sono però dei casi in cui il metodo di Jacobi converge, mentre il metodo di Gauss-Seidel non converge! Formalismo generale Dato il sistema Ax=b, le formule generali utilizzate per le iterazioni di Jacobi e di Gauss-Seidel sono le seguenti: Iterazione di Jacobi: x jk 1 b j a j1 x1( k ) a j j 1 x (jk1) a j j 1 x (jk1) a jN xN( k ) a jj N b j a ji xi( k ) k 1 xj Iterazione di Gauss-Seidel: x jk 1 i 1 i j a jj b j a j1 x1( k 1) a j j 1 x (jk11) a j j 1 x (jk1) a jN xN( k ) a jj j 1 x jk 1 bj a x i 1 ( k 1) ji i a jj N (k ) a x ji i i j 1 Criterio di convergenza Per fermare la procedura iterativa occorre che il vettore x(k+1) sia sufficientemente vicino al vettore x(k) Si va quindi a valutare la distanza tra i due vettori e si richiede che essa sia minore di un valore di soglia prefissato ε Possibili condizioni di convergenza: Condizione sulla norma euclidea: x ( k 1) x k x N j 1 ( k 1) j x (k ) 2 j Condizione sulla norma generalizzata: x ( k 1) x N k 1 x (jk 1) x (jk ) j 1 La condizione sulla norma generalizzata è più forte di quella sulla norma euclidea