In questa sezione andiamo ad indagare metodi di scomposizione, iterativi e non. Ci sono molte matrici importanti per questa parte che dovremmo prendere confidenza.

Immagini

![[Lab 2 images]]

Metodo di gauss

Vogliamo cercare un metodo per calcolare soluzioni a sistemi di equazione del genere:

, classico. Supponiamo che questo sistema abbia una soluzione.

Il nostro obiettivo sarebbe scomporre la matrice come prodotto di due matrici Lower triangular e Upper triangular.

Algoritmo per matrici Upper e lower triangular

Nel caso io abbia una matrice Lower o Upper triangular, i sistemi nella forma sono risolvibili con un algoritmo abbastanza banale che qui non riporto (sostituzioni via via…) Il costo è di e non ti scordare il /2 perché a lei piace (poi ho detto su alla professoressa di Bologna che diceva che è diverso da quanto sopra.)

Scomposizione A = LU

Questo è un algoritmo che necessita di una osservazione abbastanza difficile:

Noto che durante l'applicazione dell’algoritmo di gauss, per creare il pivot su una colonna, è esattamente come se moltiplicassi per una (matrice identità + fattori per la colonna di interesse).

Come in esempio

Untitled

Si può notare inoltre che che l’inverso di L1 è in una forma molto bella, esattamente la stessa con numeri invertiti di segno!, inoltre la moltiplicazione fra Ln è anch’essa in una forma molto carina! Facilita molto il prodotto. In questo modo mi creo una matrice L, in cui è molto facile invertire.

costo per la fattorizzazione LU e poi n2 due volte per risolvere L e U

Upper triangular matrix inversion

Let be an upper triangular matrix. We want to find its inverse , such that , where is the identity matrix. Let be the element in the -th row and -th column of , and be the element in the -th row and -th column of .

The algorithm proceeds as follows:

  1. Initialize the inverse matrix: Create an matrix and initialize it to the identity matrix .

  2. Iterate through the rows from bottom to top: For each row from down to 1:

    • Check for non-zero diagonal element: If , then the matrix is singular and not invertible. Stop the algorithm and indicate this.
    • Normalize the current row: Divide each element in the -th row of by . This effectively makes the diagonal element of in the -th row equal to 1 when considering the product .
  3. Eliminate off-diagonal elements above the current row: For each row from down to 1:

    • Calculate the multiplier .
    • Subtract times the -th row of from the -th row of . This will make the element (which is above the diagonal) effectively zero in the context of the inversion process.
  4. The resulting matrix is the inverse of .

In essence, the algorithm performs a form of Gaussian elimination, working from the bottom right of the matrix upwards and towards the left. Because of the upper triangular structure, we only need to eliminate the elements above the diagonal.

Example:

Let's consider the upper triangular matrix:

  1. Initialize .

  2. Row 3 ():

    • .
    • Normalize row 3 of : .
  3. Row 2 ():

    • .
    • Normalize row 2 of : .
    • Eliminate above: . .
      • Row 1 of becomes: .
      • .
  4. Row 1 ():

    • .
    • Normalize row 1 of : .
    • Eliminate above: (no rows above row 1).

Therefore, the inverse of is:

You can verify this by multiplying and to see if you get the identity matrix.

This algorithm efficiently computes the inverse by taking advantage of the zero entries in the lower triangle, reducing the number of operations required.

Scomposizione con permutazione

Ogni tanto potrebbe capitare che ci sia il bisogno di permutare, altrimenti non ho nessuna soluzione, da notare che questo è un passo all'interno dell’algoritmo di gauss.

Inoltre scegliere il maggiore dovrebbe aiutare ad eliminare mini-errorini dovuti all’imprecisione della somma floating point.

  • Algoritmo

    Untitled 1

Forma finale scomposizioni

Se utilizziamo una sorta di pivoting parziale ossia per ridurre gli errori scegliamo il massimo della colonna (come del resto fa l’algoritmo di sopra) allora non abbiamo bisogno di permutare colonne), se vogliamo invece un pivoting totale allora dobbiamo permutare le colonne e la matrice diventa qualcosa del tipo

con Q le permutazioni su riga, e P quelle su colonna (quelle su colonna non è che ci importa molto, perché basta moltiplicare per , ossia la sua inversa per x e si risolvono problemi di questo genere… dato che alla fine

Metodo di Cholesky

Se prendo una matrice A simmetrica definita positiva (ricorda analisi per questo), allora con questo metodo riesco a riscriverla nella forma , e so che la matrice L triangolare inferiore non è singolare perché ho tutti gli autovalori positivi.

Questo metodo costa leggermente più veloce della fattorizzazione di Gauss.

Una volta fatto la scomposizione poi va subito

e si risolve, sul come funziona l'algoritmo, per ora ci importa solamente che è più veloce.

Se non è simmetrico o non è definita positiva il programma crasha.

Metodo di Schur

Questo è un metodo nuovo che aggiungo in seguito. Una risorsa buona per questo metodo lo trovi qui. È utile quando vogliamo fare una cosa di questo tipo

Dove è una matrice di cambio di base. Questa cosa non si può fare sempre quando vogliamo che sia diagonale, però la decomposizione di Schur ci dà qualche nota in più riguardo a questo, usando però matrici upper triangular

Enunciato di Schur

Per qualunque matrice a valori complessi esiste una base ortonormale in e una matrice upper triangular tale per cui vale

NOTE: se è una matrice normale, allora è diagonale. Normale quando vale . Con la trasposta coniugata della matrice .

Idee generali per la dimostrazione di Schur

In pratica per un teorema dell'algebra (quello fondamentale) si ha che , dato che è quadrata, ha almeno un autovettore, allora prendi questo autovettore, usi il teorema di estensione per creare una base, e scomponi con questo. Questo ti creerà una matrice a blocchi grossi in cui quello in basso a destra è ancora quadrato con suo sottospazio. Continui così finché non finisce tutto e resta una matrice upper triangular. Nella reference ciò è descritto molto bene da un punto di vista intuitivo. La cosa carina con le è che per esempio è spesso più facile elevarli alla potenza, non quanto le diagonali, ma più semplice.

Matrici semi-definite o definite positive

Se prendo un qualunque vettore e vale

Oppure avendo autovalori sempre positivi sono maggiore di 0, si può vedere che è equivalente. Certi autori richiedono anche che la matrice sia simmetrica.

Guarda Massimi minimi multi-variabile nella sezione forme quadratiche per questo.

Metodi iterativi

Sono buoni perché l'errore di questi è molto più alto, ma spesso molto più veloce, mentre per i metodi diretti è esattamente il contrario (errore basso, alta complessità).

In modo molto generale, possiamo definire un metodo iterativo come una funzione applicata all'input stesso:

Note introduttive convergenza e iterazione

Questa sotto è la definizione di convergenza ad con ordine

Untitled 2

Spesso la convergenza è fissata da una condizione di arresto (che può essere dipendente anche dal numero di iterazioni. Possiamo definire C = fattore di convergenza quando , perché più è piccolo più converge in fretta. C'è anche una relazione simile fra i p, più è grande, in questo caso, più velocemente converge.

Metodi iterativi stazionari

Idee Generali

Questi sono nella forma Poi scriverlo come una differenza di matrici in particolare vorre , dove sia non singolare (e possibilmente facilmente invertibile). Se ciò è possibile allora

Una volta avuto questa matrice possiamo riutilizzarla per ogni iterazione di successione!

Avremo che , e si ha che deve essere che

E vorremmo che questo metodo converga per ogni input quindi potrei mettere un x_0 a casissimo

Una cosa non espressa durante la lezione è che quindi

Che ci permette di scrivere la stessa cosa sente fare utilizzo della matrice e secondo me è più clean. Questa cosa è presente nel libro.

Condizione necessaria e sufficiente di convergenza

Teorema sulla condizione di convergenza:

Untitled 3

Questo risultato si può connettere col raggio spettrale e si può concludere che converge sse

Untitled 4

Metodo di Jacobi

Sia la parte diagonale di , allora l’iterazione in questa forma converge e si chiama metodo di jacobi

Nota: attento che la prof non ha insegnato in questo modo! Quindi probabilmente se te la chiede diglielo nella forma che le piace,

Metodo Gauss-Seidel

Si ricorda che in modo molto strano di scriverlo…

Si fa uso della matrice Lower con anche la diagonale, per il resto è esattamente uguale a tutto il resto per i metodi iterativi., quindi

Condizioni di convergenza per Jacobi e Gauss-Seidel

Per comprendere questa parte è importante il concetto di matrice con diagonale dominante. In parole umane deve essere che ogni elemento sulla matrice deve essere maggiore della somma di tutto quanto non stia sulla diagonale maggiore.

  • Slide condizioni

    Untitled 5

Nota questi sono in pratica da imparare a memoria, ma non me ne ricordo!

Gradiente coniugato

Questo è un metodo di arresto molto misterioso, direi di cacharla 🤑.

Untitled 6

Metodi di cui non ha parlato

Metodo SOR

Metodi di Rilassamento

Metodi di Krylov