3. Risoluzione di Sistemi Lineari

Definizione problema

Sia e vogliamo trovare un vettore che soddisfi l'equazione .

Tratteremo solo sistemi quadrati, in cui esiste un'unica soluzione se e solo se:

  • esiste l'inversa della matrice
  • oppure il rango della matrice è
  • oppure e in tal caso

Teorema di Cramer

Se il determinante della matrice è non nullo, allora esiste unica una soluzione del sistema, ed è data da: Dove è a cui sostituiamo l'-esima riga con il vettore dei termini noti.

Numero di condizionamento nei sistemi lineari

Sia una matrice quadrata, il numero di condizionamento della matrice è un valore che misura la sensibilità della soluzione di alle perturbazioni nei dati. Idealmente vorremmo lavorare con matrici con numero di condizionamento basso. Supponendo l'esistenza dell'inversa, si calcola come segue:

La matrice identità ha il più basso numero di condizionamento (1) ed è l'esempio perfetto di matrice ben condizionata nel caso della risoluzione di un sistema lineare associato.

In generale, in numero di condizionamento è correlato all'errore sui dati come segue:

Problemi di calcolo del numero di condizionamento

La complessità del calcolo della matrice inversa cresce insieme alla crescita del numero di condizionamento. Ma per calcolare il numero di condizionamento è necessaria la matrice inversa! Affermiamo che:

  1. Se è vicino ad 1 allora è facilmente calcolabile
  2. Se è grande, allora è difficilmente ricavabile

Correlazione tra numero di condizionamento e raggio spettrale

Supponendo l'esistenza dell'inversa, è presente la seguente relazione tra i due valori: Questo implica che: Banalmente al numeratore è presente il raggio spettrale di . Sappiamo che se esiste autovalore di , allora è autovalore di . Dato che invertiamo tutti gli autovalori, l'autovalore più piccolo di , una volta invertito, diventa l'autovalore più grande di :

Matrice di Hilbert

La matrice di Hilbert è un esempio di matrice mal condizionata per i sistemi lineari (ma è ben condizionata per altri problemi). In generale, l'elemento , approfondire qui.

Metodi diretti

I metodi diretti trovano la soluzione del sistema lineare in un numero finito di passi. Sono adatti a sistemi con matrici piene, essendo che tendono a rimpire gli zeri della matrice.

Metodo delle sostituzioni in avanti

Supponiamo che la matrice del sistema sia triangolare inferiore. Il metodo delle sostituzioni in avanti risolve il sistema una soluzione per volta. Partendo da come segue: Si calcola il generico

Metodo delle sostituzioni indietro

Supponiamo che la matrice del sistema sia triangolare superiore. Il metodo delle sostituzioni indietro risolve il sistema una soluzione per volta, partendo dal basso. Partendo da come segue: Si calcola il generico

Complessità metodi di sostituzione e considerazioni

I metodi di sostituzione presentati eseguono circa divisioni e moltiplicazioni e somme algebriche, per un costo computazionale . Per derivare la complessità basta osservare che nella prima iterazione facciamo 1 div/mul, nella seconda 2, nella terza 3 e così via. Avendo righe totali basta calcolare la somma dei primi numeri naturali, che corrisponde proprio alla prima formula mostrata.

Questi metodi sono molto leggeri, ma necessitano di matrici triangolari. Gli altri metodi presentati cercheranno di triangolarizzare la matrice, per poi utilizzare i metodi di sostituzione per risolvere il sistema lineare. Se dell'istanza del problema cambia solo il vettore dei coefficienti, è possibile precalcolarsi alcuni dei parametri per rendere il metodo più rapido.

Metodo di eliminazione naive di Gauss (MEG)

Supponendo che la matrice sia non degenere, e sia (altrimenti scambia righe), allora è possibile applicare il metodo di Gauss (a meno di un'altra condizione che enunceremo dopo). Alla prima iterazione si calcolano i moltiplicatori: Aggiungiamo alla -esima equazione la prima equazione moltiplicata per . Così facendo andremo ad annullare tutti gli elementi della prima colonna meno che il primo. In generale, durante la -esima iterazione lo scopo è annullare tutti gli elementi della -esima colonna al di sotto dell'-esimo, quindi si calcolano i moltiplicatori tramite l'elemento , che prende il nome di pivot: E si aggiunge l'-esima equazione alle successive moltiplicata per il rispettivo moltiplicatore. Al passo si ottiene un sistema triangolare superiore che può essere risolto con la sostituzione all'indietro. Il costo computazionale del metodo è circa .

Affinché il metodo funzioni è necessario che gli elementi della diagonale siano non nulli ad ogni iterazione. Questo è garantito se tutti i minori principali di sono non nulli.

MEG con Pivot Parziale

La tecnica del pivot parziale evita le divisioni per zero o per numeri prossimi allo zero nel calcolo dei moltiplicatori. Alla -esima iterazione si cerca la riga con l'elemento maggiore nella colonna . Si sostituisce la riga -esima con la riga -esima. Il beneficio sta nel fatto che viene minimizzata la grandezza del moltiplicatore, minimizzando anche l'errore amplificato durante le moltiplicazioni. La complessità totale del metodo è .

MEG con Pivot Totale

Il pivot totale ha gli stessi benefici del pivot parziale, ma amplificati: il metodo può scegliere tra tutti gli elementi della matrice (incompleta) e non solo quelli della colonna analizzata. Il drawback sta nella complessità implementativa e nel cambio di variabile necessario.

Supponiamo che il pivot corrente sia e che l'elemento più grande della matrice sia . Allora prima si effettua una permutazione delle colonne e si memorizza il cambio di variabile, e dopodiché si scambiano le righe . Quando si ottiene la soluzione, per ottenere la soluzione rispetto al problema originale bisogna applicare i cambi di variabile a ritroso alla soluzione.

Fattorizzazione LU

Sia il sistema lineare da risolvere, un metodo di fattorizzazione matriciale consiste nei seguenti passi:

  1. Si trova una matrice non singolare tale che e triangolare superiore.
  2. Se è triangolare inferiore, lo sarà anche e poniamo
  3. Osserviamo che quindi è una fattorizzazione di

La fattorizzazione non dipende dai termini noti, quindi se nel sistema lineare in analisi variano solo i termini noti, precalcolando la fattorizzazione si ha un risparmio in efficienza. Attraverso la fattorizzazione LU riformuliamo il metodo di eliminazione di Gauss. Siano: dove per sono i moltiplicatori mostrati in precedenza. Il prodotto equivale al primo passo di Gauss. In generale, la matrice è definita come segue: Alla fine si ha: Poniamo , quindi . Poniamo e osserviamo che: Adesso, la soluzione del sistema lineare si risolve in due passaggi:

  1. e si risolve per
  2. e si risolve per

Questo poiché con il passo (1) si trova , mentre con il passo 2 si trova , che è sicuramente soluzione del sistema , ed entrambi possono essere risolti con sostituzioni in avanti ed indietro, essendo matrici triangolari inferiori (L) e superiori (U).

Non sempre esiste una fattorizzazione LU della matrice. Condizione necessaria di esistenza è che la matrice sia non degenere, quindi che abbia il determinante non nullo. Se vale tale condizione, allora esiste sicuramente una matrice di permutazione tale che . L'esistenza è garantita per le matrici diagonalmente dominanti e simmetriche definite positive, senza dover permutare la matrice.

Matrici di permutazione

Le tecniche del pivot parziale e totale possono essere implementate nella forma matriciale del metodo di eliminazione di Gauss attraverso delle matrici di permutazione. Una matrice di permutazione è una matrice ottenuta scambiando righe o colonne della matrice identità. In particolare, scambiando la riga con la riga di e

  • premoltiplicandola per si scambiano le righe
  • postmoltiplicandola per si scambiano le colonne

Esempio: scambiamo la riga 1 e la riga 3 della matrice identità e vediamo cosa succede se la premoltiplichiamo ad una matrice qualunque: L'effetto è stato uno scambio di righe. Se invece postmoltiplichiamo la matrice di permutazione: L'effetto è stato uno scambio di colonne.

Metodo di Doolittle e di Croud

Se esplicitassimo il sistema lineare avremmo equazioni (una per ogni elemento di ) ed incognite (elementi di ed supponendo che siano rispettivamente triangolari inferiore e superiore), questo implica che abbiamo gradi di libertà, ovvero la fattorizzazione non è unica.

I seguenti metodi eliminano i gradi di liberta imponendo dei vincoli:

  • Doolittle: si fissa in (equivalente a eliminazione gaussiana senza pivot)
  • Crout: si fissa in

Effetto Fill-in

I metodi di fattorizzazione modificano la matrice iniziale causando un effetto fill-in, ovvero gli zeri diventano elementi non nulli. Se la matrice è inizialmente sparsa, conviene optare per metodi iterativi.

Metodo di Cholesky

Sia una matrice simmetrica () e definita positiva, allora esiste almeno una matrice triangolare inferiore tale che . Inoltre, se si impone che la fattorizzazione è unica.

Dimostrazione (costruttiva).

Per il criterio di Sylvester, la matrice ha determinante strettamente positivo, e quindi esiste una fattorizzazione LU. Proviamo a costruire la fattorizzazione come segue: Dato che le incognite sono gli elementi di , che sono , possiamo strutturare equazioni (non lineari) tramite il prodotto riga-colonna.

Esplicitiamo il calcolo dell'elemento supponendo che (le moltiplicazioni per indici maggiori di sono nulle per la triangolarità delle matrici), quindi abbiamo: Estraiamo l'elemento dall'equazione: Vediamo invece come calcolare un elemento della diagonale . Tramite la seguente equazione cerchiamo di calcolare l'elemento : Oss. la sommatoria termina a e non ad perché per la struttura triangolare della matrice gli elementi sono nulli. Ora possiamo estrapolare l'elemento come: Calcolando la sommatoria verrebbe annullata, quindi . Bisogna seguire un certo andamento per poter calcolare tutti gli elementi di , dato che un calcolo potrebbe richiedere dei calcoli di altri elementi della matrice. Nella seguente foto è illustrato tale andamento su una matrice :

image-20220614092522592

Algoritmo di Thomas

L'algoritmo di Thomas è un TDMA (tridiagonal matrix algorithm), ovvero un algoritmo che opera su matrici tridiagonali. Una matrice tridiagonale di dimensione ha elementi. Scriviamola come prodotto di due matrici particolari, in cui le incognite sono per e per .

image-20220614100743948

I coefficienti sono determinabili come segue:

  • e per
  • e per

Per una trattazione completa consultare il seguente documento.

Metodi iterativi

Un metodo iterativo produce una successione di soluzioni che, sotto opportune condizioni, converge alla soluzione reale. Comunemente si parte da una soluzione randomica , in quanto si dimostra che il metodo converge comunque.

Descrizione generale di un algoritmo iterativo

Sia una matrice non degenere, si impone che: Quindi si ha: E quindi si determina la soluzione al passo dalla soluzione al passo precedente: L'equazione prende il nome di decomposizione, e si dice regolare se non è degenere e gli elementi dell'inversa e di sono tutti maggiori di zero. Spesso la matrice viene chiamata "matrice del metodo" a cui si fa riferimento, poiché studiandola è possibile studiarne la convergenza.

Criteri d'arresto

Fissata una tolleranza , allora un criterio d'arresto standard utilizzabile per fermare un algoritmo iterativo è il seguente:

Metodo iterativo convergente

Un metodo iterativo si dice convergente se per qualunque vettore iniziale il metodo sarà convergente.

Teorema sulla convergenza (1)

Sia una decomposizione regolare di e sia . Allora:

  1. non è singolare
  2. Il metodo iterativo associato alla decomposizione è convergente
  3. ci dà un limite all'errore commesso

Teorema sulla convergenza (2)

Condizione necessaria e sufficiente affinché il metodo iterativo sia convergente è che il raggio spettrale della matrice sia minore di 1:

Corollario sulla convergenza (3)

Dato che il determinante di una matrice è anche definito come il prodotto dei suoi autovalori, allora condizione necessaria affinché il metodo converga è che Se il determinante è maggiore di 1 allora esiste almeno un autovalore , e quindi il metodo non può convergere per il teorema precedente.

Corollario sulla convergenza (4)

La traccia di una matrice è definita come la somma dei suoi autovalori. Condizione necessaria affinché il metodo converga è che: Se vale il contrario, allora almeno uno degli autovalori è , quindi il metodo non può convergere per il teorema precedente.

Correlazione tra raggio spettrale e convergenza

Il raggio spettrale relativo alla matrice di uno specifico metodo è correlato alla convergenza dello stesso come segue:

  • Se il metodo diverge
  • Se il metodo converge
  • Tanto più si avvicina ad 1, tanto più il metodo convergerà lentamente

Velocità di convergenza di un metodo iterativo

Tramite la seguente valutazione è possibile ricavare il numero di iterazioni affinché l'errore generato da un certo metodo scenda al di sotto di un errore assegnato . Siano ed rispettivamente l'errore e la soluzione generati al passo . L'errore è ricavato come segue: Che deriva dalla formula di approssimazione dell'errore, dove l' soluzione reale viene approssimato con la soluzione calcolata allo step successivo. È possibile calcolare un lower bound del numero di iterazioni necessarie a far scendere l'errore sotto , come segue: Dove è la matrice del metodo. Sia il fattore di convergenza del metodo iterativo, definito come segue: Allora si avrà: Più grande è , più la convergenza sarà veloce. Da questo deriva che più è vicino ad 1, più l'intero denominatore si annulla e più le esecuzioni necessarie crescono. Se il logaritmo assumerà un valore negativo che è più grande tanto più è vicino allo zero.

Metodo di Jacobi

Partendo da una soluzione iniziale , la soluzione si determina dalla soluzione come segue:

image-20220614105106441

Condizione sufficiente di convergenza per Jacobi

Sia il sistema da risolvere, condizione sufficiente affinché Jacobi converga è che sia strettamente diagonalmente dominante.

Formulazione matriciale

La decomposizione presa in considerazione nel metodo è la seguente: Se si pone ed allora si ottiene la decomposizione classica: Le tre matrici rappresentano:

  • la diagonale principale di
  • gli elementi al di sotto della diagonale principale di , cambiati di segno.
  • gli elementi al di sopra della diagonale principale di , cambiati di segno.

Dalle matrici, ritroviamo l'equazione di aggiornamento del metodo di Jacobi: Applichiamo gli indici all'ultimo passaggio per indicare l'aggiornamento:

Ricordiamo che l'inversa di una matrice diagonale è pari al reciproco dei singoli elementi non nulli.

La matrice del metodo è e studiandola è possibile studiare la convergenza.

Metodo di Gauss-Seidel (GS)

È una variante del metodo di Jacobi che sfrutta il calcolo delle componenti precedenti della soluzione corrente per calcolare le successive. Si vede empiricamente che il metodo converge spesso più velocemente rispetto a quello di Jacobi (quindi il raggio spettrale di GS è minore). Nell'esempio sottostante, gli apici rossi sono quelli di Gauss-Seidel, mentre quelli neri sono di Jacobi.

image-20220615090632759

Condizione sufficiente di convergenza per GS

Sia il sistema da risolvere, condizione sufficiente affinché Jacobi converga è che sia strettamente diagonalmente dominante o che sia simmetrica definita positiva.

Formulazione matriciale

La formulazione è analoga a quella di Jacobi, ma viene isolata la matrice anziché isolare solo la matrice . Se volessimo affibiare le matrici alla trattazione generale, avremmo che e . Vediamo i passaggi: Supponendo l'esistenza dell'inversa. Applichiamo gli indici all'ultimo passaggio per indicare l'aggiornamento: La matrice del metodo in questo caso è e studiandola è possibile studiare la convergenza.

Metodo Successive Over-Relaxation (SOR)

SOR è un metodo basato su GS che applica un rilassamento al calcolo della soluzione. Si fissa un certo parametro e si calcola la soluzione utilizzata come la media pesata tra la soluzione di GS e la soluzione precedente:

Formulazione matriciale

Ricaviamo l'equazione di aggiornamento del metodo, partendo dal sistema lineare: Introduciamo la matrice , sostituiamo nell'ultima equazione, e introduciamo gli apici del metodo iterativo: Poniamo: E manipoliamo la matrice come segue: La matrice finale è data da: E studiando non solo è possibile studiare la convergenza del metodo, ma dato il parametro arbitrario sarà possibile aggiustare la matrice per manipolare la sua convergenza.

Teorema di condizionamento del parametro di SOR

Si ha la seguente relazione sempre verificata Da cui osserviamo che:

\begin{cases} \text{SOR diverge} & \omega \le 0 \or \omega \ge 2 \ \text{SOR converge} & 0 < \omega < 2 \end{cases}

Fissato nel range convergente, è possibile muoversi all'interno del range di convergenza per tarare l'algoritmo e renderlo più rapido.

Variante SSOR

Symmetric SOR (SSOR) è una variante di SOR in cui viene preservata la possibile simmetria della matrice.

Metodo di discesa del gradiente

Quando un sistema è molto grande, è possibile risolverlo riconducendolo ad un problema di minimizzazione. Si considera la forma quadratica del problema: Si calcola il gradiente della funzione: Utilizziamo il l'opposto del gradiente come direzione di discesa: Sia la lunghezza del passo di aggiornamento all'-esimo passo, aggiorniamo la soluzione: