04. Sistemi di equazioni lineari

❗❗❗❗❗❗❗❗❗❗❗❗❗
❗❗❗ COMPLETARE ❗❗❗
❗❗❗❗❗❗❗❗❗❗❗❗❗

4. Sistemi di equazioni lineari


È dato un sistema lineare n×n, nella forma

AX=B

dove:

Vogliamo risolvere il problema cercando la soluzione X che soddisfi l'equazione.

I metodi per la soluzione di sistemi lineari sono di tue tipi:

Metodi diretti

metodi diretti

Metodi per la soluzione di sistemi lineari basati sulla trasformazione del sistema di partenza in uno equivalente che abbia una struttura particolarmente semplice.

  • Sfruttano un numero finito di passi

  • Teoricamente, i metodi diretti fornirebbero la soluzione esatta, se non fosse per gli errori di arrotondamento nei calcoli e errori di rappresentazione dei dati.

  • Vengono usati quando la dimensione della matrice dei coefficienti non è troppo elevata.

Sono:

Metodo di Cramer

Algoritmo per Cramer

Dato un vettore delle incognite

X=[x1x2xn]
algoritmo

Per il Teo di Kramer, xi=Didet(A), dove
Di=det[A1A2BAn]
Con B nella i-esima colonna.

Costo computazionale per Cramer

Poiché dobbiamo implementare questi metodi al calcolatore, ci chiediamo quale sia il Costo Computazionale (Cc) del Metodo di Cramer. Sappiamo che ad interessare sono solo le moltiplicazioni e le divisioni, mentre possiamo ignorare il costo computazionale di addizioni e sottrazioni.

Per calcolare un determinante, il costo computazionale è dato dal numero di moltiplicazioni.

Per ogni determinante, il numero di prodotti (a1a2an) è n!.
Ogni prodotto contiene n1 moltiplicazioni.
Allora, per un determinante si compiono n!(n1) moltiplicazioni.

Nel metodo di Cramer calcoliamo n determinanti per le matrici Di e 1 determinante per la matrice A.
Calcoliamo quindi n+1 determinanti.

In definitiva, il numero totale di moltiplicazioni per la risoluzione di un sistema lineare con il metodo di Cramer è:

n!(n1)(n+1)n!n2

ignorando gli n di ordine minore al secondo.

prop - costo computazionale

Il [[#Costo computazionale per Cramer]] è:
n!(n1)(n+1)n!n2

Un computer modesto impiega circa 102s per una operazione pesante, che corrisponde a 1Gflops dove un flops è il numero di operazioni eseguibili in un secondo.

Vediamo che già per n=15, il costo computazionale ammonta a circa 3 giorni!

Metodo di eliminazione di Gauss

Consiste nel ridurre a scala la matrice dei coefficienti.
Anche il costo computazionale di questo metodo è molto elevato: per n grandi, è dell'ordine di

Metodi iterativi

metodi iterativi

Si tratta di metodi che sfruttano il Teorema del punto unito.

Sono soggetti a errori anche in assenza di errori di approssimazione, in quanto richiedono in teoria un numero infinito di iterazioni. Pertanto sono soggetti a errore di troncamento.

Si adattano bene alla soluzione di #Matrici sparse, e di grandi dimensioni (n>1000,n>>1000)

Metodo delle approssimazioni successive

Consiste nel trasformare il sistema

AX=B

in una forma equivalente

X=Φ(X)

con Φ:RnRn funzione di iterazione.

Sia X la soluzione esatta, questa risulterà essere punto unito di Φ in quanto:

X=Φ(X)

☑️ Ipotesi

ipotesi

Elencare le ipotesi del metodo

❗❗❗❗❗❗❗❗❗❗❗❗❗
❗❗❗ COMPLETARE ❗❗❗
❗❗❗❗❗❗❗❗❗❗❗❗❗

Algoritmo

Dato il sistema

AX=B

lo scriviamo come

AXB=0

Equivalente a

X=CX+Q

dove CX+Q=Φ(X).

schema numerico

{X(0)RnApprossimazione inizialeX(k+1)=Φ(X(k))=CX(k)+Qk=1,2,...

Matrice di iterazione

(<#Algoritmo)

matrice di iterazione

La matrice C in
X=CX+Q
prende il nome di matrice di iterazione

Errori

Valutazione degli errori

Errore di troncamento

errore di troncamento

Errore di troncamento è definito come:

E(k+1)=XX(k+1)

errore di troncamento

L'errore di troncamento in un metodo iterativo è
E(k+1)=CE(k)=C(k+1)CC...C k+1 volteE(0)


Dimostrazione:

Dimostriamo un'uguaglianza alla volta. La prima:
$
\begin{align}
E^{(k+1)} &= \overline X - X^{(k+1)} = \

&= (C \overline X + Q) - (C X^{(k)} + Q) = \

&= C \overline X - C X^{(k+1)} = \

&= C(\overline X - X^{(k+1)}) = \

&= CE^{(k)}
\end{align}
Lasecondauguaglianzainvece:
\begin{align}
E^{(k+1)} &= CE^{(k)} = \
&= C(C+E^{(k-1)}) = \
&= C^{2}E^{(k-1)} = \
&= C^{3}E^{(k-2)} = \
& \vdots \
&= C^{(k+1)}E^{(0)}
\end{align}
$

c.v.d.

Da ciò deriva che

limkE(k)=0limkCkE(0)=0

In una qualsiasi norma.

Convergenza

convergenza

Il metodo converge se
limkE(k)=limkCkE(0)=0

Condizioni di convergenza

Condizione Necessaria
teorema

Condizione necessaria alla convergenza è che
limkX(k)=X

Condizione Sufficiente
cs di convergenza

Condizione Sufficiente affinché il metodo converga è che la [[#Matrice di iterazione]]

||C||<1


Dimostrazione

Combinando la relazione di compatibilità e la norma del prodotto, scriviamo:

CkE(o)=CCCCE(o)CCE(o)CCCE(o)CkE(o)
Un metodo converge se è verificato questo limite:
limkE(k)=limkCkE(0)=[limkCk]E(0)=0
che è verificato se e solo se ||C||<1.

c.v.d.

Condizione Necessaria & Sufficiente
teorema

Condizione Necessaria e Sufficiente alla Convergenza del metodo è che il raggio spettrale della convergente, il che avviene se è rispettata la relazione
ρ(C)<1

Ordine di convergenza

Ordine di Convergenza

Criterio di arresto

Fornire dei criteri di arresto, se pertinente

Criterio di arresto a Posteriori

E(k)kX(k)X(k1)ε

Criterio di arresto a Priori

teorema

Mi posso fermare dopo aver eseguito un numero di iteriazioni k, tale che

klog(εX(1)X(0))1log||C||

E(k)=XX(k)=XX(k+1)E(k+1)+X(k+1)+X(x)E(k+1)+X(k+1)+X(x)

Velocità Asintotica di Convergenza

velocità asintotica di convergenza

V=log10(ρ(C))

Esempi

esempio

Trovare per quali valori reali di β lo schema seguente converge

{x(k+1)=βy(k)β2z(k)+78y(k+1)=βy(k)β2z(k)+78z(k+1)=12y(k)+14z(k)12

Si ha quindi:
C=[0ββ20ββ201214]Q=[787812]
Verifichiamo la [[#Condizione Sufficiente]] di [[#Convergenza]], sia in norma 1 che in norma infinito.

||C||1=max(0,2|β|+12,|β|+14)1
Che si verifica se
{β<14β>0β>14β<0

Oppure
||C||=max(32|β|,32|β|,34)1
Verificato se
{β|β|12|β|<23|β|>12

Metodo di Jacobi

Metodo di Jacobi

Metodo di Jacobi


Siano
ARn×nBRnCRn×nQRn
Data un sistema
AX=B
riscrivibile nella forma
X=CX+Q

Riscrivo A come somma di tre matrici:
A=D+L+U
dove

D=[a11000a220000ann]L=[000a2100an1an20]U=[0a12a1n00a2n000]

Sostituendo questa scomposizione nel problema, troviamo
AX=(D+L+U)X=BDX+(L+U)X=BDX=(L+U)X+BD1DX=D1[(L+U)X+B]X=D1[(L+U)X+B]X=D1(L+U)=CJX+D1B=QJ
Il metodo di Jacobi consiste quindi nel risolvere
X=CJX+QJ

Scritta in forma estesa, CJ e QJ diventano:

CJ=[0a12a11 a1na11a21a220 a2na22an1annan2ann 0]QJ=[b1a11000b2a22000bnann]

☑️ Ipotesi

ipotesi

Elencare le ipotesi del metodo
❗❗❗❗❗❗❗❗❗❗❗
❗❗❗COMPLETARE❗❗❗
❗❗❗❗❗❗❗❗❗❗❗

Algoritmo

Lo schema iterativo è costituito da
X(k+1)=CJX(k)+QJ
Scrivendolo in forma esplicita diventa:

$
\begin{bmatrix}
x_{1}^{(k+1)} \ x_{2}^{(k+1)} \ \vdots \ x_{n}^{(k+1)}
\end

\begin{bmatrix}
0 & - \frac{a_{12}}{a_{11}} & \cdots\ & - \frac{a_{1n}}{a_{11}} \
-\frac{a_{21}}{a_{22}} & 0 & \cdots\ & - \frac{a_{2n}}{a_{22}}
\ \vdots & \vdots & \ddots & \vdots \
-\frac{a_{n1}}{a_{nn}} & - \frac{a_{n2}}{a_{nn}} & \cdots\ & 0 \
\end{bmatrix}
\begin{bmatrix}
x_{1}^{(k)} \ x_{2}^{(k)} \ \vdots \ x_{n}^{(k)}
\end{bmatrix}
+
\begin{bmatrix}
\frac{b_{1}}{a_{11}} & 0 & \cdots & 0 \
0 & \frac{b_{2}}{a_{22}} & \cdots & 0 \
\vdots & \vdots & \ddots & \vdots \
0 & 0 & \cdots & \frac{b_{n}}{a_{nn}}
\end{bmatrix}
$

Questo diventa
x1(k+1)=a12a11x2(k)a13a11x3(k)a1na11xn(k)b1a11=1a11(j=1,j1n(a1jxj(k))+b1)
Facendo anche per le altre righe, possiamo riassumere e compattare con la scrittura:
xi(k+1)=1aij(j=1,jin(aijxj(k))+bi)1in

Errori

Valutazione degli errori

❗❗❗❗❗❗❗❗❗❗❗
❗❗❗COMPLETARE❗❗❗
❗❗❗❗❗❗❗❗❗❗❗

Errore di troncamento

Errore di troncamento

❗❗❗❗❗❗❗❗❗❗❗
❗❗❗COMPLETARE❗❗❗
❗❗❗❗❗❗❗❗❗❗❗

Convergenza

La convergenza è garantita secondo le condizioni della convergenza per sistemi lineari condizioni della convergenza per sistemi lineari:
CS:||CJ||<1CN:limkX(k)=XCNS:ρ(CJ)<1

(cs) - matrici diagonalmente dominanti

Sia A una matrice Diagonalmente Dominante per Righe o per Colonne,

allora

il metodo di Jacobi Converge.

teorema

Il metodo converge se A è una matrice definita positiva.

Ordine di convergenza

Ordine di Convergenza

Stima iterazioni necessarie

Fornire, se possibile, un modo di stimare le iterazioni necessarie

Criterio di arresto

Fornire dei criteri di arresto, se pertinente

Criterio di arresto a posteriori

Implementazione in Matlab

Copiare il codice di implementazione in Matlab

Metodo di Gauss-Seidel

4.2 Metodo di Gauss-Seidel

Metodo di Gauss-Seidel


Siano

ARn×nBRnCRn×nQRn
Data un sistema

AX=B
riscrivibile nella forma

X=CX+Q

Riscrivo A come somma di tre matrici:

A=D+L+U

dove

D=[a11000a220000ann]L=[000a2100an1an20]U=[0a12a1n00a2n000]

Sostituendo questa scomposizione nel problema, troviamo

AX=(D+L+U)X=B(D+L)X+UX=B(D+L)X=BUXX=(D+L)1U=CGSX+(D+L)1B=QGS

Il metodo di Gauss-Seidel consiste quindi nel risolvere

X=CGSX+QGS

Scritta in forma estesa, CGS e QGS diventano:

☑️ Ipotesi

ipotesi

Elencare le ipotesi del metodo

Algoritmo

Lo schema iterativo è costituito da

X(k+1)=CGSX(k)+QGS

Facendo anche per le altre righe, possiamo riassumere e compattare con la scrittura:

xi(k+1)=1aij(j=1,jii1(aijxj(k+1))+j=i+1,jin(aijxj(k))+bi)1in;k0

Errori

Valutazione degli errori

Errore di troncamento

Errore di troncamento

Convergenza

La convergenza è garantita secondo le condizioni della convergenza per sistemi lineari condizioni della convergenza per sistemi lineari:

CS:||CGS||<1CN:limkX(k)=XCNS:ρ(CGS)<1

matrici diagonalmente dominanti

Sia A una matrice Diagonalmente Dominante per Righe o per Colonne,

allora

il metodo di Gasuss-Seidel converge.

teorema

Il metodo converge se A è una [[02. Richiami di algebra lineare#Matrice definita positiva]]

Ordine di convergenza

Ordine di Convergenza

Stima iterazioni necessarie

Fornire, se possibile, un modo di stimare le iterazioni necessarie

Criterio di arresto

Fornire dei criteri di arresto, se pertinente

Criterio di arresto a posteriori

Implementazione in Matlab

Copiare il codice di implementazione in Matlab

Condizionamento

Nella realtà, gli input di un problema sono il più delle volte perturbati. Questo per via degli errori di troncamento e per il fatto che i dati derivano da misure sperimentali.
Ci chiediamo come cambia l'output di un problema quando è presente una perturbazione nell'input.

Problema ben condizionato

problema ben condizionato

Un problema si dice ben condizionato se una perturbazione nell'input induce piccole variazioni nell'output.

INPUT: A,B
AX+B
OUTPUT: X

Pasted image 20230630125302.png
Immaginiamo di avere un problema in cui solo B sia perturbata. Da

AX=B

Otteniamo

A(X+δX)=B+δBAX+AδX=B+δB

Si noti come si ha all'interno il sistema lineare di partenza non perturbato. Sappiamo che AX=B allora li posso cancellare dall'equazione.

AδX=δB

A questo punto, se esiste A1 scriviamo δX come:

δX=A1δB

Ci interessa misurare quanto è grande la perturbazione. Passiamo alle norme. Vale, per la Relazione di Compatibilità la seguente disuguaglianza:

||δX||=||A1δB||||A1||||δB||

Dal sistema ||AX||=||B||||A||||X||, ottengo:

1||X||||A||||B||

Errore relativo

errore relativo

||δX||||X||||A1||||A||||δB||||B||
Dove ||A1||||A|| è detto [[#Coefficiente di Amplificazione]]

Numero di Condizionamento

numero di condizionamento

K(A)=||A1||||A||1
Nell'[[#Errore relativo]] il numero di condizionamento si riferisce al termine ||A1||||A|| e dice, al massimo, di quanto viene amplificato l'errore sul termine noto.

Rispetta la seguente proprietà:
1K(A)

Sia ||δA||||A∣<1 si dimostra che vale

||δX||||X||K(A)1K(A)||δA||||A||(||δB||||B||+||δA||||A||)
teorema

Se la matrice A è definita positiva allora
K2(A)=maxiλi(A)miniλi(A)
dove λi sono gli autovalori di A.

Matrice di Hilbert

matrice di hilbert

H=[112131n1213141n+11n1n+11n+212n1]Rn×n

è una matrice mal condizionata

❗❗❗❗❗❗❗❗❗❗❗❗❗
❗❗❗ COMPLETARE ❗❗❗ --> Fattorizzazione di LU e altra merda varia
❗❗❗❗❗❗❗❗❗❗❗❗❗