Dott.ssa Maria Carmela De Bonis a.a. 203-4
I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano mediante equazioni lineari, cioè equazioni in cui le incognite appaiono con esponente uguale ad uno e sono legate tra loro da relazioni lineari (prodotto per scalari e somme algebriche). Un sistema di n equazioni lineari in n incognite è definito come segue: a, x +a,2 x 2 + +a,n x n = b a 2, x +a 2,2 x 2 + +a 2,n x n = b 2..... () a n, x +a n,2 x 2 + +a n,n x n = b n a n, x +a n,2 x 2 + +a n,n x n = b n Assumeremo che tutte le quantità in gioco sono numeri reali.
Ponendo a, a,2 a,n a,n a 2, a 2,2 a n,n a 2,n A =....... a n, a n,2 a n,n a n,n a n, a n,2 a n,n a n,n, b = b b 2. b n b n, x = [x x 2 x n x n ] T, il sistema () si può riscrivere come Ax = b dove A R n n è detta matrice dei coefficienti, b R n è detto vettore dei termini noti e x R n è il vettore delle soluzioni.
È noto che il sistema () ammette un unica soluzione se e solo se la matrice A è non singolare, o equivalentemente det(a) 0. In questo caso denotata con A la matrice inversa di A, si ha x = A b. La matrice inversa è infatti l unica matrice per la quale dove A A = AA = I 0... 0 0... 0 I =...... 0 0. è detta matrice identità (o identica).
La teoria dell Algebra Lineare, che è la branca della matematica che si occupa di tutti i problemi che coinvolgono matrici e vettori, propone come metodo risolutivo di un sistema lineare il metodo di Cramer x i = det(a i), i =,..., n, det(a) dove A i denota la matrice ottenuta da A sostituendo la colonna i esima con il vettore b. I determinanti coinvolti possono essere calcolati utilizzando la regola di Laplace.
Sfortunatamente il metodo di Cramer ha un costo computazionale molto elevato, pari a circa [(n + )(n )n]! operazioni elementari (flops= prodotto + somma + indirizzamento in memoria). Ciò si traduce in tempi effettivi per la computazione inaccettabili. Supponendo per esempio di poter effettuare 0 6 flops al secondo, per risolvere un sistema di 20 equazioni occorrono circa 3 0 7 anni=300000 secoli!! Si potrebbe pensare di calcolare A e risolvere il sistema utilizzando la formula x = A b. Ma i metodi classici per il calcolo dell inversa hanno un costo computazionale a loro volta di tipo fattoriale.
Nei problemi reali, di cui si parlava all inizio, non è raro che i sistemi da risolvere siano costituiti da centinaia, se non migliaia di equazioni. È allora evidente che occorrono dei metodi di tipo numerico per la risoluzione efficiente di tale problema. Tali metodi in genere tengono conto sia della dimensione del problema (cioè del numero di equazioni), sia delle particolari (eventuali) proprietà della matrice dei coefficienti.
Vogliamo ora studiare il condizionamento del sistema lineare Ax = b. In altre parole ci chiediamo come il problema risponda a eventuali perturbazioni nei dati iniziali. In questo caso i dati iniziali sono gli elementi della matrice e quelli del vettore dei termini noti. Occorre capire come muta la soluzione x se la matrice A ed il vettore b si discostano da quelli del problema in esame.
Supponiamo di introdurre una perturbazione δa R n n sulla matrice A e una perturbazione δb R n sul vettore dei termini noti b. La soluzione del problema perturbato, che si presuppone calcolata in precisione infinita (cioè supponendo che i numeri siano rappresentabili con infinite cifre e che tutte le operazioni aritmetiche siano computate esattamente), non sarà x ma y = x + δx, δx R n, cioè la soluzione sarà a sua volta perturbata. In altri termini guardiamo al sistema perturbato (A + δa)y = (b + δb).
Osserviamo innanzitutto che anche se la matrice A è non singolare, A + δa potrebbe risultare singolare. Tuttavia, supponendo che A + δa sia non singolare e che A δa < 2 è possibile ottenere la seguente maggiorazione per l errore relativo indotto sulla soluzione x: ( δx δa x 2 A A A + δb ), b dove le considerate norme di vettore e di matrice sono tra loro compatibili.
Dalla stima δx x 2 A A ( δa A + δb ), b si evince che l eventuale amplificazione delle perturbazioni introdotte su matrice dei coefficienti e vettore dei termini noti si deve alla quantità A A. Tale quantità viene chiamata indice o numero di condizionamento della matrice A e si denota cond(a) = A A. Dunque se cond(a) è piccolo il problema si dice ben condizionato, altrimenti si dice mal condizionato.
Osservazioni Generalità sui sistemi lineari Per ogni norma matriciale naturale, che soddisfi la proprietà 4., si ha cond(a) = A A AA = I = Il condizionamento è una caratteristica propria del sistema lineare e non è legato al particolare metodo numerico usato per determinarne la soluzione Dalla stima δx x 2cond(A) ( δa A + δb ), se b δx x 2cond(A)eps 2 0 p, p cifre significative della soluzione calcolata mediante un algoritmo stabile sono da ritenere corrette.
In Matlab esiste una function predefinita per calcolare cond(a): cond(a, inf ) condizionamento di A in norma infinito cond(a, ) condizionamento di A in norma cond(a) condizionamento di A in norma 2
Il seguente teorema fornisce il significato geometrico di cond(a). Teorema Per ogni matrice non singolare A R n n e per ogni norma matriciale naturale, la quantità cond(a) rappresenta la distanza relativa minima di A dall insieme di tutte le matrici singolari di ordine n, cioè { } A B cond(a) = min : B R n n singolare A
det(a) piccolo A mal condizionata Esempio n = 200; A = diag((/4) ones(n, )); det(a) = 4 n 3.87e 2, cond(a, inf) = 4 4 =
A mal condizionata det(a) piccolo Esempio A = [99, 98; 00, 99] det(a) =, cond(a, inf) = 3960
Esempi di matrici mal condizionate. ) Matrici di Hilbert 2 H n = 3. n 2 3 4. n + 3 4 5. n + 2. n n +, cond(h 5 ) 0 5 n + 2. 2n Tale matrice risulta essere mal condizionata anche per piccoli valori di n.
2) Matrici di Vandermonde Fissato un vettore [y,..., y n ], con y i y j, i j, sono matrici non singolari definite da V n = y y 2 y 3 y n y 2 y 2 2 y 2 3 y 2 n..... y n y n 2 y n 3 y n n Anche in questo caso l indice di condizionamento cresce esponenzialmente rispetto alla dimensione della matrice.
I metodi numerici per la risoluzione di un sistema lineare si suddividono in due classi: Metodi diretti: in assenza di errori di arrotondamento la soluzione viene calcolata esattamente in un numero finito di passi; Metodi iterativi: attraverso un processo iterativo viene generata una successione infinita di vettori che, sotto opportune condizioni, converge alla soluzione cercata.
La scelta di un algoritmo avviene in base a opportuni criteri. stabilità; occupazione di memoria; costo computazionale. Non esiste un algoritmo che possa definirsi migliore degli altri in assoluto. La scelta in genere viene fatta in funzione delle caratteristiche della matrice A del sistema (dimensione, sparsità, struttura).
I metodi diretti risolvono il problema iniziale trasformandolo in problemi equivalenti che quindi hanno la stessa soluzione, ma matrici dei coefficienti differenti. In generale, se la matrice A del sistema è densa, i metodi diretti sono più efficienti. Se, invece, la matrice A del sistema è sparsa, i metodi diretti non preservano la sparsità delle matrici coinvolte nel procedimento, anzi con il procedere del metodo il numero degli elementi non nulli presenti in queste matrici generalmente cresce. Tale fenomeno, noto come fill-in (riempimento), se n è molto grande, può ben presto saturare la memoria centrale del calcolatore. In questi casi è utile, e spesso indispensabile, utilizzare i metodi iterativi che al contrario lasciano inalterata la matrice A del sistema.