Sei sulla pagina 1di 24

Sistemi lineari Lucia Gastaldi

Sistemi lineari
Lucia Gastaldi
Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori

Indice

1 Risoluzione di sistemi lineari

Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

2 Analisi degli errori

Norme di vettore e di matrici Numero di condizionamento

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Ax=b

Analisi degli errori

Tre casi possibili: Sistemi quadrati, m = n. Sistemi sovradeterminati, m > n. Sistemi sottodeterminati, m < n.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Come risolvere un sistema lineare con MATLAB


La risoluzione del sistema lineare si ottiene usando i simboli di divisione: backslash \ e slash /. x = A\b indica la soluzione di Ax = b , x e b vettori colonna. x = b /A indica la soluzione di xA = b , x e b vettori riga. Loperatore backslash usa algoritmi dierenti per trattare diversi tipi di matrici:
Permutazioni di matrici triangolari. Matrici simmetriche e denite positive. Matrici quadrate, non singolari e piene. Matrici quadrate, non singolari e sparse. Sistemi rettangolari sovradeterminati. Sistemi rettangolari sottodeterminati.

Analisi degli errori

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Risoluzione di sistemi triangolari


Metodo di sostituzione in avanti
L matrice triangolare inferiore. x1 = xi = b1
11

Analisi degli errori

bi

i 1 j =1 ij xj ii

per i = 2, . . . , n

Metodo di sostituzione allindietro


U matrice triangolare superiore. xn = xi = bn unn bi

n j =i +1 uij xj

uii

per i = n 1, . . . , 1

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Algoritmo di eliminazione di Gauss

Analisi degli errori

for k = 1, . . . , n 1 for i = k + 1, . . . , n (k ) a mik = ik (k ) akk for j = k + 1, . . . , n (k +1) (k ) (k ) aij = aij mik akj end (k +1) (k ) (k ) bi = bi mik bk end end

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Fattorizzazione LU
Teorema
Costruiamo le seguenti matrici: 1 0 m21 1 L= mn 1 U= Allora a11 0 0
(1) (1)

Analisi degli errori

0 0 mnn1 1 a1n (2) a2n (n) ann


(1)

a12 (2) a22 0

LU = A.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Strategia di pivoting

Analisi degli errori

Per evitare possibili divisioni per 0 e per rendere lalgoritmo di eliminazione (oppure lalgoritmo di fattorizzazione LU) stabili rispetto alla propagazione degli errori di arrotondamento si usa la strategia di pivoting che consiste nello scambio sistematico di righe opportune. Il risultato della fattorizzazione LU ` e: PA = LU essendo P una matrice di permutazione che tiene conto degli scambi di righe avvenuti.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Algoritmo di eliminazione di Gauss con pivoting


for k = 1, . . . , n 1 (k ) (k ) cerco pi` u piccolo p tale che |apk | = max |aik |
k i n

Analisi degli errori

scambio la riga k con la riga p for i = k + 1, . . . , n (k ) aik mik = (k ) akk for j = k + 1, . . . , n (k +1) (k ) (k ) aij = aij mik akj end (k +1) (k ) (k ) bi = bi mik bk end end

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Le funzioni MATLAB per la fattorizzazione

Analisi degli errori

Funzione lu chol qr qz schur

Signicato Fattorizzazione PA = LU . Fattorizzazione di Cholesky A = LLT . Fattorizzazione A = QR . Fattorizzazione QZ . Decomposizione di Schur A = UTU H .

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Uso della function lu


Data la matrice A Rnn , la function lu fornisce il risultato della fattorizzazione nelle seguenti forme:
[L,U,P]=lu(A):

Analisi degli errori

fornisce le matrici L, U e P in modo che L*U=P*A.


[L1,U]=lu(A):

fornisce le matrici L1 e U in modo che L1*U=A. In questo caso la matrice L1 si ottiene dalla permutazione delle righe di L mediante P ossia L1 = P1 L Vericare il comportamento di 1 A= 3 2 lu sulla matrice: 2 1 2 1 1 0

e confrontare quanto ottenuto con la function lunopiv.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Matrici di permutazione
Denizione
Una matrice di permutazione P ` e ottenuta dalla matrice identit` a scambiando le righe e le colonne. Su ciascuna riga e colonna si trova uno ed uno solo 1 mentre tutti gli altri elementi sono nulli. 0 0 0 1 1 0 0 0 P= 0 0 1 0 0 1 0 0 Il prodotto P A permuta le righe della matrice A. Il prodotto A P permuta le colonne della matrice A. Leetto della moltiplicazione per P pu` o essere anche ottenuto usando il vettore p=[4 1 3 2]. I comandi P*A e A(p,:) hanno lo stesso eetto. La matrice inversa ` e data da: P 1 = P T

Analisi degli errori

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari


Risoluzione di sistemi lineari in Matlab Metodi di risoluzione Fattorizzazione

Propagazione degli errori


Esercizio

Analisi degli errori

Consideriamo al variare di da: 1 1 A= 2 2+a 3 6

a R la matrice A e il vettore b dati 3 3 20 b = 20 a 1 4

Dati i seguenti valori di a: a = 1, a = 0, a = 0.5 1015 , calcolare la fattorizzazione LU di A mediante la function miaLU; calcolare la dierenza A LU ; usare la fattorizzazione ottenuta per risolvere il sistema lineare Ax = b , la cui soluzione esatta ` e x = (1, 1, 1)T ; ripetere la procedura usando le apposite function di Matlab per la fattorizzazione LU e la risoluzione dei due sistemi relativi alle matrici triangolari.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Norma di vettore
Sia x un vettore di dimensione n, per 1 p , il comando norm(x,p) fornisce il valore della norma:
n 1/p

=
i =1

|xi |

Le norme pi` u usate sono:


n

=
i =1

|xi |
n 1/2 2

norm(x,1)

x x

=
i =1

|xi |
1i n

norm(x,2)=norm(x) norm(x,Inf)

= max |xi |

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Norma di matrice
La moltiplicazione Ax pu` o produrre un vettore con una norma completamente diversa da quella di x . La norma della matrice A si denisce come segue A = M = max
x =0

Ax . x

Valgono le seguenti propriet` a: I = 1 per I matrice identit` a Ax A x AB A B norm(A,p) fornisce la norma di matrice per p = 1, 2, :
n n

A A

= max =

1j n

|aij |
i =1

= max

1i n

|aij |
j =1

(AT A)

essendo (AT A) = maxi i , e i autovalore di AT A.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Numero di condizionamento
Denizione
K (A) = A1 A

si dice numero di condizionamento della matrice A.

Teorema
Si consideri il sistema lineare Ax = b . Siano A e b perturbazioni di A e di b rispettivamente e sia x + x la soluzion del sistema lineare: (A + A)(x + x ) = b + b . Allora vale la seguente maggiorazione: x K (A) x 1 K (A) A / A b A + A b .

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Numero di condizionamento
K (A) = A1 A

La norma A indica il rapporto massimo tra la norma del vettore Ax e quella di x . Osserviamo che, ponendo Ay = x e y = A1 x , si ha A1 = max
x =0

y 1 A1 x = max = y =0 Ay x miny =0

Ay y

1 m

Il numero m indica il rapporto minimo tra la norma di Ax e quella di x . Di conseguenza K (A) = maxx =0
Ax x Ax minx =0 x

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Il condizionamento in Matlab
cond(A) o cond(A,2) calcola K2 (A) (con la norma 2).

Usa svd(A). Computazionalmente costoso, adatto a matrici piccole. cond(A,1) calcola K1 (A) (con la norma 1). Usa inv(A). Meno lavoro che per cond(A,2). cond(A,Inf) calcola K (A) (con la norma ). Usa ` lo stesso di cond(A,1). inv(A). E condest(A) stima K1 (A). Usa lu(A) e un algoritmo recente di Higham e Tisseur. Adatto specialmente per matrici sparse e di grandi dimensioni. rcond(A) stima 1/K1 (A). Usa lu(A) e un algoritmo pi` u vecchio sviluppato in LINPACK e LAPACK.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Esercizi
Esercizio 1
Dati A= 1 0 0 , b= 1 0 ,

calcolare la soluzione esatta del sistema Ax = b per i valori = 2, 0.01, 1.e 6. Si considerino le seguenti perturbazioni r1 = 108 [1, 0]T e r2 = 108 [0, 1] al termine noto. Per ciascuna perturbazione calcolare la soluzione del sistema Ax i = b + ri , i = 1, 2 mediante il comando x=A\b. Calcolare lerrore relativo commesso, e confrontarlo con la perturbazione relativa del termine noto ( r / b ). Calcolare il numero di condizionamento di A. Vericare che il risultato ottenuto soddisfa la stima teorica.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Esercizi
Esercizio 2
Dati A= 1.2969 0.8648 0.2161 0.1441 , b= 0.8642 0.1440 ,

calcolare la soluzione esatta del sistema Ax = b . Si considerino le seguenti perturbazioni r1 = [108 , 108 ]T e r2 = [108 , 108 ]T al termine noto. Per ciascuna perturbazione calcolare la soluzione del sistema Ax i = b + ri , i = 1, 2 mediante il comando x=A\b. Calcolare lerrore relativo commesso, e confrontarlo con la perturbazione relativa del termine noto. Calcolare il numero di condizionamento di A. Vericare che il risultato ottenuto soddisfa la stima teorica.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Matrice mal condizionata


Si consideri il sistema lineare Ax = b con A Rnn matrice di Hilbert di elementi aij = 1 , i +j 1 i = 1, . . . , n,
Esercizio 3

e b Rn tale che la soluzione del sistema sia x = (1, . . . , 1)T .


Calcolare con MATLAB la fattorizzazione LU con pivoting

e risolvere il sistema al variare di n. Sia x la soluzione calcolata. Calcolare il numero di condizionamento della matrice K. Riportare in uno stesso graco in scala semilogaritmica le seguenti quantit` a al variare di n:

il numero di condizionamento; lerrore relativo E = x x / x ; il residuo b Ax / b ; la stima dellerrore K b Ax / b ; la norma della matrice R = LU PA.

Per calcolare le norme usare il comando norm.

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Traccia dellesercizio
Per ogni n=2:2:50 (for n=2:2:50) A=hilb(n) matrice di Hilbert di dimensione n n. x=ones(n,1) genera il vettore colonna di dimensione n che ha tutte le componenti uguali a 1. b=A*x calcola il termine noto. xapp=A\b risolve il sistema lineare. err(n)=norm(x-xapp)/norm(x) calcola lerrore relativo. r=b-A*xapp calcola il residuo. res(n)=norm(r)/norm(b) calcola la norma del residuo rapportata alla norma del termine noto. K(n)=cond(A) calcola il numero di condizionamento di A. [L,U,P]=lu(A) genera la fattorizzazione di A. RES(n)=norm(L*U-P*A) fornisce il residuo della fattorizzazione. segue

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Traccia dellesercizio
segue

Alla ne del ciclo:

N=2:2:50; semilogy(N,err(N),N,res(N),N,K(N),... N,K(N).*res(N),N,RES(N)) legend(err rel,residuo,cond,... stima,res LU)

Sistemi lineari Lucia Gastaldi Risoluzione di sistemi lineari Analisi degli errori
Norme di vettore e di matrici Numero di condizionamento

Altre funzioni di MATLAB per lalgebra lineare


Funzione hess orth null subspace planerot det rank inv pinv cond condest Signicato Forma di Hessenberg. Base ortonormale dello spazio immagine di A. Base ortonormale del nucleo della matrice A. Angolo tra vettori o sottospazi. Matrice rotazione nel piano. Determinante. Rango. Inversa. Pseudoinversa di Moore-penrose. Numero di condizionamento (norma Euclidea). Stima numero di condizionamento (norma 1).