• Non ci sono risultati.

1 Francesca Mazzia Dipartimento Interuniversitario di Matematica Universit`a di Bari MATLAB: Problema dei minimi quadrati Consideriamo il sistema linere Ax = b con A ∈ R

N/A
N/A
Protected

Academic year: 2021

Condividi "1 Francesca Mazzia Dipartimento Interuniversitario di Matematica Universit`a di Bari MATLAB: Problema dei minimi quadrati Consideriamo il sistema linere Ax = b con A ∈ R"

Copied!
4
0
0

Testo completo

(1)

1

Francesca Mazzia

Dipartimento Interuniversitario di Matematica Universit` a di Bari

MATLAB: Problema dei minimi quadrati

Consideriamo il sistema linere Ax = b con A ∈ R

n×k

, di rango k e n > k, x ∈ R

n

e b vettore di m componenti. Sappiamo che se il rango di [Ab] ` e maggiore di k il sistema non ammette soluzioni. Possiamo risolvere questo problema trovando la soluzione ai minimi quadrati, quella per cui la norma 2 di Ax − b `e pi`u vicina a 0 (si dice che x minimizza il residuo). Moltiplichiamo il sistema Ax = b per A

T

otteniamo un nuovo sistema:

A

T

Ax = A

T

b

la matrice A

T

A ` e non singolare poich` e la matrice A ha rango k, quindi possiamo trovare la soluzione del sistema calcolando la pseudo inversa di A, cio` e la matrice (A

T

A)

−1

A

T

con la funzione pinv:

A

T

Ax = A

T

b = ⇒ x = (A

T

A)

−1

A

T

b

Un altro modo per calcolare la soluzione ` e risolvere il sistema lineare usando la fattorizzazione di Cholesky della matrice:

(A

T

A)

−1

.

Esempio:

(2)

2

>> A= [9 9 8

7 4 0

1 8 1

4 0 2

9 3 1]

A =

9 9 8

7 4 0

1 8 1

4 0 2

9 3 1

>> rank(A) ans =

3

>> b = [1 2 3 4 5]’

b = 1 2 3 4 5

>> rank([A,b]) ans =

4

(3)

3 Possiamo trovare la soluzione ai minimi quadrati usando

>> x = A\b x =

4.5008e-01 1.5033e-01 -4.1406e-01

La stessa soluzione si trova usando la pseudo inversa:

>> x=pinv(A)*b x =

4.5008e-01 1.5033e-01 -4.1406e-01

Controlliamo cosa calcola pinv:

>> pinv(A) - inv(A’*A)*A’

ans =

-3.4694e-18 2.0817e-17 6.9389e-17 -2.4286e-17 1.3878e-17 1.0625e-17 -3.4694e-17 -1.3878e-17 0 1.3878e-17 0 4.1633e-17 -8.3267e-17 4.8572e-17 -4.1633e-17 Il problema pu` o essere risolto utilizzando la fattorizzazione di Cholesky della matrice A

T

A:

>> R = chol(A’*A) R =

1.5100e+01 9.5366e+00 5.9604e+00 0 8.8912e+00 2.9420e+00

0 0 5.0812e+00

>> x = R\(R’\(A’*b)) x =

4.5008e-01

(4)

4

1.5033e-01 -4.1406e-01

Esercizio: Trovare la soluzione ai minimi quadrati del seguente sistema lineare Ax = b con:

>>A =[ 6 7

2 4

1 9

0 4];

>>b =[ 1;2;3; 4];

usando pinv e chol.

Riferimenti

Documenti correlati

Ricordiamo che in generale, non ha senso cercare un grado troppo alto del poli- nomio di miglior approssimazione p N in quanto si otterrebbe a partire da un certo valore il

presentare forti oscillazioni tra un nodo e l’altro soprattutto verso gli estremi dell’intervallo, rappresentando male l’andamento dei dati (fenomeno di Runge). Inoltre un polinomio

Si pu` o dimostrare che, se gli autovalori sono reali e distinti, la successione di matrici A k tende ad una matrice triangolare superiore avente sulla diagonale gli autovalori

Le formule composte sono ottenute dividen- do l’intervallo [a, b] in un certo numero N di sottointervalli uguali, ed applicando in ognu- no di questi una formula di quadratura di

Dipartimento Interuniversitario di Matematica Universit` a di Bari. MATLAB: Elementi di

Data una matrice A, si dice rango della ma- trice, e si indica con rank(A), il rango dell’in- sieme dei suoi vettori colonna.... L’ultima relazione pu` o essere fuorviante, per- ch`

Dipartimento Interuniversitario di Matematica Universit` a di Bari. MATLAB: Elementi di Algebra

In generale al pas- so i dell’eliminazione di Gauss, ordiniamo le righe e le colonne da i a n in modo da por- tare l’elemento pi` u grande in valore assoluto in posizione i, i..