Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Appunti su calcolo numerico, Appunti di Algebra Lineare e Geometria Analitica

Appunti completi su calcolo numerico, di Borio, anno 2024, corso di ingegneria aerospaziale.

Tipologia: Appunti

2023/2024

In vendita dal 10/07/2024

alessia-zade
alessia-zade 🇮🇹

13 documenti

1 / 33

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
CALCOLO NUMERICO 8|03|2024
IL PROBLEMA NUMERICO
Un problema numerico e funzionale tra dei dati “x” e dei risultati “y”. In un
problema ci sono i dati e i risultati, inoltre puo essere esplicito o implicito:
e esplicito se si puo scrivere come y = f(x) (per esempio fare la somma tra
due numeri: y = x1 + x2); in sostanza non ho bisogno di conoscere la legge
perche ce l’ho gia ;
e implicito se si puo scrivere come f(x, y) = 0 (per esempio sistemi a piu
equazioni dove la legge non e data).
Il problema si risolve implementando un algoritmo.
Un algoritmo e una sequenza finita di operazioni che ci permette di risolvere un
problema.
Esempio ricerca di algoritmo: sommare i primi n numeri interi
1. Li sommo: y = 1 + 2 + … + n
2. Faccio un’operazione: y = n∗(n + 1)
2.
Si noti come il secondo algoritmo sia piu efficacie del primo, questo dipende dal
costo computazionale. Il costo computazionale di un algoritmo e il numero di
operazioni prescritte.
La rappresentazione floating point di un numero “a” reale e a = (-1)s * p * Nq;
s ∈ {0 , 1} e indica il segno: quando s = 0 il numero e positivo, mentre se s =
1 il numero e negativo;
N e la base del sistema di numerazione (scelta);
p e un numero reale >= 0 dettomantissa”;
q e l’esponente (notazione scientifica).
Esempio: a = - 0,1. Analizzo le componenti:
S = 1
P = 0,1
N = 10
Q = 0
La base N e la base del sistema di numerazione e P va da 0 a 9. Il computer
numera in binario, ovvero in base 2 (le cifre della mantissa sono 0 e 1).
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21

Anteprima parziale del testo

Scarica Appunti su calcolo numerico e più Appunti in PDF di Algebra Lineare e Geometria Analitica solo su Docsity!

CALCOLO NUMERICO 8|03|

IL PROBLEMA NUMERICO

Un problema numerico e funzionale tra dei dati “x” e dei risultati “y”. In un

problema ci sono i dati e i risultati, inoltre puo essere esplicito o implicito:

  • e esplicito se si puo scrivere come y = f(x) (per esempio fare la somma tra

due numeri: y = x 1

  • x 2

); in sostanza non ho bisogno di conoscere la legge

perche ce l’ho gia;

  • e implicito se si puo scrivere come f(x, y) = 0 (per esempio sistemi a piu

equazioni dove la legge non e data).

Il problema si risolve implementando un algoritmo.

Un algoritmo e una sequenza finita di operazioni che ci permette di risolvere un

problema.

Esempio ricerca di algoritmo: sommare i primi n numeri interi

  1. Li sommo: y = 1 + 2 + … + n
  2. Faccio un’operazione: y =

n∗(n + 1 )

2

Si noti come il secondo algoritmo sia piu efficacie del primo, questo dipende dal

costo computazionale. Il costo computazionale di un algoritmo e il numero di

operazioni prescritte.

La rappresentazione floating point di un numero “a” reale e a = (-1)

s

  • p * N

q

  • s ∈ {0 , 1} e indica il segno: quando s = 0 il numero e positivo, mentre se s =

1 il numero e negativo;

  • N e la base del sistema di numerazione (scelta);
  • p e un numero reale >= 0 detto “mantissa”;
  • q e l’esponente (notazione scientifica).

Esempio: a = - 0,1. Analizzo le componenti:

• S = 1

• P = 0,

• N = 10

• Q = 0

La base N e la base del sistema di numerazione e P va da 0 a 9. Il computer

numera in binario, ovvero in base 2 (le cifre della mantissa sono 0 e 1).

I valori della mantissa vanno da 0 a N – 1 (se la base N e = 2 allora p va da 0 a 1;

se N e 5 allora p va da 0 a 4…).

La rappresentazione floating point di un numero non e unica; noi scegliamo la

rappresentazione normalizzata, ovvero con un N generico.

La rappresentazione floating point normalizzata di un numero e quella che

soddisfa le seguenti ipotesi: p >=

1

𝑁

e < 1, cioe

1

𝑁

<= p < 1. Nel caso di base 10 ho:

0,1 <= p < 1.

L’insieme dei numeri di macchina e:

F = {0} U {(-1)

s

0, a 1

, a 2

, a 3

, …a t

, N

q

, a1 ≠ 0, L <= q <= U}

i parametri di spazio: t, L e U sono tutti dati dalla macchina.

  • N e la base e 0 <= a i

<= N – 1 ;

  • t e il numero di cifre della mantissa;
  • L e U sono interi.

Il numero piu piccolo (m) rappresentabile e ± 0,1 * N

L

. In mathlab il realmin e

2.2251e-308.

Il numero piu grande (M) rappresentabile e ± 0,(N-1)(N-1)(N-1)…. * (N-1) * N

U

In mathlab il realmax e 1.7977e+308.

La regione di underflow e l’intervallo aperto dei numeri in valore assoluto piu

piccoli del piu piccolo. Percio e (-m, m) \ {0}. Questi valori non si possono

rappresentare e il computer li vede come “0”, percio non si puo dividere un

numero per questi numeri.

La regione di overflow e l’intervallo aperto dei numeri in valore assoluto piu

grandi del piu grande. Percio e (-∞, - M) U (M, +∞). Questi valori non si possono

rappresentare e il computer li vede come “-∞” “+∞”.

Se voglio rappresentare un valore che non fa parte ne dell’overflow, ne

dell’underflow, ma che ha piu cifre significative di quelle permesse, devo tagliare

e arrotondare.

Le cifre significative sono le cifre della mantissa.

I computer adottano la tecnica “rounding to even”. La mantissa P di un numero

reale con piu di t cifre viene arrotondata alla mantissa p segnato (p con trattino

in alto) piu vicina e nel caso di equidistanza alla mantissa p segnata che ha

l’ultima cifra pari (l’ultimo bit e zero).

Esempi: scegliamo N = 10, t = 3:

|a 2

  • a 1

s

  • t

q

q-t

corrisponde alla distanza tra i due numeri di

macchina.

Da qui derivano gli errori di arrotondamento; un errore assoluto di

arrotondamento dati due numeri a e b (entrambi reali) e il valore assoluto della

differenza (|a – b|), ovvero quanto dista a da b in valore assoluto.

L’errore relativo (rispetto ad a) e |a – b| / |a|; analogamente rispetto a b e

|𝑎−𝑏|

|𝑏|

Se a 1

s

  • 0.a 1

a 2

a 3

…a t

q

e a 2

s

  • 0.a 1

a 2

a 3

…a t

q

allora:

|a 2 – a 1 |

|𝑎 1 |

N^q−t

| 0 .a 1 a 2 a 3 ...| ∗ N^q

= N

  • t

|0.a 1

a 2

a 3

...| = C (costante) * N

  • t

C dipende da quanto vale il numero a: 0.a 1

a 2

a 3

… e tale che a 1

e diverso da 0,

percio 0.a1a2…at >= 0.a 1

= 0.1 e in questo modo ottengo 𝑝̅ >= N

  • 1

con p

mantissa di un numero di macchina, percio

1

𝑝

<= N allora C <= N.

Quindi

|a 2 – a 1 |

|𝑎 1 |

<= N

1 - t

: ho maggiorato l’errore relativo dei numeri di macchina

(stima dall’alto), il piu grande errore relativo tra i numeri di macchina e N

1 - t

e si

chiama epsilon di macchina.

Esempio MathLab:

pi

ans = 3.

format long

pi

ans = 3.

Il motivo per il quale visualizzo massimo 16 cifre e perche lavoro con una

precisione di 10

  • 16

, infatti t = 17.

Dato “a” un numero reale non di macchina, sia a il suo arrotondamento: se a > a 1

allora

1

𝑎

1

ā 1

; quindi:

|a – ā|

|a|

|a 2 – a 1 |

|a 1 |

<= ½ N

1 - t

detto precisione di macchina.

Al massimo ci sono 52 cifre significative per la mantissa, mentre per l’esponente

massimo ci sono 11 bit (

11

possibilita per rappresentare il numero, che in base

10 mi da il realmax) e 1 bit per il segno.

OPERAZIONI DI MACCHINA E PROBLEMI GENERATI DA ESSE

Le quattro operazioni (+, - , *, /) che un computer puo fare generano degli errori,

non solo perche gli input devono essere arrotondati, ma anche perche il risultato

deve esserlo. Le operazioni di macchina hanno un obiettivo.

Ottengo un errore del tipo 10

  • 16

Le operazioni di macchina sono +, - , *, / cerchiate (perche sono fatte con degli

arrotondamenti) e associano a due numeri di macchina il risultato arrotondato,

cioe a 1

  • a 2

. A ogni operazione segue un errore di arrotondamento del

risultato.

CONSEGUENZE:

  • Il fatto che i numeri di macchina siano essi stessi affetti da errore non

verifica le proprieta. Infatti l’ordine delle operazioni conta, in particolare la

proprieta associativa non e verificata.

  • L’unica proprieta che si puo verificare e la proprieta commutativa (per

definizione di somma).

Due espressioni matematiche sono equivalenti se danno risultati uguali, a meno

della precisione di macchina (eps/2 e l’ordine e 10

  • 16

CALCOLO NUMERICO 22 |03|

ERRORI DI ARROTONDAMENTO

Esempio: N = 10, t = 4, a 1

= 0.5823, a 2

= 0.6214 (entrambi numeri di macchina).

Fare la somma dei due numeri e uguale a fare la somma effettiva, arrotondando il

risultato.

Risultato della somma = 1. 2037

, cioe da arrotondare = 1. 2037 ∗ 10

e

arrotondando ottengo = 0.1204 * 10

1

Il risultato e equivalente a quello che avrei dovuto ottenere?

Per trovare la risposta devo fare la differenza tra i due numeri (il risultato

ottenuto e quello che avrei dovuto ottenere) e trovare l’errore assoluto.

Da qui ricavo l’errore relativo e se il risultato e dell’ordine minore dell’errore di

macchina, allora il risultato e equivalente a quello effettivo.

La somma tra due numeri molto diversi tra loro, di cui uno molto piu piccolo

dell’altro, mi fa scomparire il numero piu piccolo.

Esempio: N = 10, t = 4, a 1

, a 2

  • 5
  • 4

ALGORITMO STABILE E NON STABILE

Un algoritmo e numericamente stabile se l’errore sui risultati e circa la

precisione di macchina:

|𝑦−𝑦̅ |

|𝑦|

~ precisione di macchina.

CALCOLO NUMERICO 5 |0 4 |

CONDIZIONAMENTO DI UN PROBLEMA

Sia f(x 1

, x 2

) = x 1

  • x 2

= y, un problema numerico, prendo y = x 1

  • x 2

, allora:

Questo e il motivo per cui la cancellazione numerica da problemi. Se faccio il

prodotto ottengo un problema ben condizionato.

NORME DI UN VETTORE

  • Si dice norma di un vettore: se V ∈ R

n

, ||V||

2

𝑖

𝑛 2

𝑙= 1

1/

ed e detta

“norma due”, norma euclidea (distanza in linea d’aria tra due punti del

piano).

  • Norma uno: ||V|| 1 =

𝑖

𝑛

𝑙= 1

, prendo la lunghezza piu grande dei cateti e

decido che e quella la distanza dall’origine.

  • Norma infinito: ||V||∞ = max (l = 1, n) |𝑉

𝑖

|, cioe il piu grande V.

Queste norme servono per calcolare gli errori.

  • Norme di matrice: se ||.||

e una norma di vettore, allora data A ∈ R

m,n

||A||

= sup V ∈ R

n

di

||AV||∗

||V||∗

, cioe ||AV||

<= ||A||

||V||

∀ V ∈ R

n

||A||

2

TBD (to be defined)…

||A||

1

= max 1 <= j <= n di ∑ |aij|

𝑚

1

, cioe la somma dei valori assoluti degli

elementi, sommo in orizzontale e prendo il piu grande dei risultati.

Norme dello stesso tipo sono compatibili tra loro e corrispondono alle relative

norme di vettore.

TIPI DI MATRICI

  • Matrici triangolari: una matrice A ∈ R

mxn

, e:

o triangolare superiore se a ij

= 0 quando i > j;

o triangolare inferiore se a ij

= 0 quando i < j.

  • Matrice diagonale: quando i=j e nella parte inferiore i > j, nella superiore i

< j.

  • Matrici tri-diagonali se a ij

= 0 quando |i – j| > 1.

  • Matrice trasposta: data A ∈ R

m,n

, la trasposta di A e A

T

∈ R

m,n

tale che a

T

ij

a ji

{faccio un giro di 90°}.

  • Matrice simmetrica: deve essere quadrata. Data A ∈ R

n,n

, si dice matrice

simmetrica quando A

T

= A.

CALCOLO NUMERICO 12 |04|

CONDIZIONAMENTO DI UN PROBLEMA

Data una matrice quadrata A ∈ R

nxn

e un vettore b ∈ R

n

, trovare x ∈ Rn, tale che

Ax = b. Se ꓱ la matrice inversa di A e A

  • 1

e A*A

  • 1

= I. A ha inversa  det(A) ≠ 0.

Come si risolve un sistema lineare? {Posso fare combinazioni lineari e usare

l’algoritmo di eliminazione di Gauss per ottenere una matrice diagonale}.

Suppongo che det(A) ≠ 0 allora ꓱ! x.

Il condizionamento del sistema lineare e un numero K che dipende dai dati del

problema, quindi da A e B, K(A, B).

||x – 𝑥̅ ||

||x||

{errore relativo dei risultati} <= K(A, B)*(

||A – 𝐴

̅ ||

|

| 𝐴

| |

||b – 𝑏

̅

||

|

| 𝑏

| |

) {errore relativo

dei dati}.

Nota: det(A) ≠ 0 il sistema e risolvibile e ha soluzione unica.

Teorema:

Se Ax = b, det(A) ≠ 0. Siano 𝐴

e 𝑏

, con ||A – 𝐴

1

2 (|

| 𝐴

− 1

| |)

allora det(𝐴

) ≠ 0 e

quindi ꓱ! (esiste ed e unico) 𝑥̅ : 𝐴

Inoltre:

||x – 𝑥

̅ ||

||x||

− 1

||A – 𝐴

̅

||

||𝐴||

||b – 𝑏

̅

||

||𝑏||

) dove |

− 1

| e K(A).

Chiamiamo K(A)* = |A|* |A

  • 1

|* condizionamento di A. Il condizionamento esiste

solo se A e invertibile.

X

1

b 1

a 1

… X

n

bn

an

allora:

for i = 1_n:

X

i

bi

ai

Il costo computazionale e n (faccio n operazioni).

A = (

) b =

Per trovare la soluzione parto dal basso:

x n

bn

an

x n- 1

  • (b n- 1 - a n- 1 n

*x n

) 1/a n-1n- 1

x n- 2

  • (b n- 2 - a n-2n- 1

*x n- 1

  • a n-2n

*x n

) 1/a n- 2 n- 2

allora la soluzione data sara:

x i

= 1/a ii

(b i

𝑖𝑗

𝑗

𝑛

𝑗=𝑖+ 1

) dove i e l’indice della variabile che sto calcolando.

Ciclo for:

for i=n, n-1,n-2,…..,1:

x i

=1/a ii

(b i

𝑖𝑗

𝑗

𝑛

𝑗=𝑖+ 1

algoritmo per la soluzione di sistemi triangolari diagonali. Algoritmo

sostituzione all’indietro.

Nota: posso dividere per a ii

, perche se il det() ≠ 0 , allora tutti gli elementi della

diagonale sono diversi da zero.

Esiste anche l’algoritmo di sostituzione in avanti:

ho una matrice triangolare inferiore: A = (

) , b = (

for i = 1_n

x i

= 1/a ii

(b i

𝑖𝑗

𝑗

𝑖− 1

𝑗= 1

Il costo computazionale delle matrici risolte con sostituzione in avanti o indietro

e sempre Ѻ(

𝑛

2

2

) {O grande}.

Calcolo del costo computazionale:

r 1

= (a 11

… a 1n

r 2

= (a 21

, a 22

, … a 2n

prendo a 11

e divido: r 2

= (r 2

a 21

𝑎 11

*r 1

) e ottengo 0 (rif. Algoritmo di eliminazione di

Gauss: ottengo una matrice che ha diagonale a 11

, a 22

, … a nn

CALCOLO NUMERICO 19 |04|

SOLUZIONI DI SISTEMI LINEARI

Per matrici triangolari superiori:

x n

𝑏𝑛

𝑎𝑛

, x i

1

𝑎𝑖𝑖

𝑖𝑗

𝑗

𝑛

𝑗=𝑖+ 1

): sostituzione all’indietro, costo

computazionale: N ⇾ +∞ n

2

Data una matrice quadrata A ∈ R

n,n

, di det(A) ≠ 0, cerchiamo k ∈ R

n

, tale che il

prodotto Ak = b, con b ∈ R

n

Algoritmo di eliminazione di Gauss:

La matrice A 4x4:

Se faccio una combinazione lineare della riga r 2

= (a 21

, a 22

, a 23

, a 24

), b 2

il risultato

non cambia.

Step:

  1. Faccio in modo di avere nella parte triangolare inferiore tutti zeri;
  2. leggo per colonne:

se a 11

≠ 0 ⇒ m 21

𝑎 21

𝑎 11

e al posto della riga r 2

⇽ r 2

  • m 21

r 1

I … viaggiano sulla diagonale e per ogni … cerchio gli elementi sotto di lui e

divido. Altrimenti scelgo l’elemento piu grande in valore assoluto sotto a kk

(sulla

stessa colonna) e scambio le righe.

E’ sempre possibile trovare un elemento non nullo sotto a kk

perche det(A) ≠ 0

(hp).

Applicando questo algoritmo trovo una matrice triangolare superiore:

= A

Gauss

e equivalente ad A.

L’algoritmo di eliminazione di Gauss dice che dati A,b:

for k = 1 : n- 1

se a kk

≠ 0 #altrimenti scambio la r k

con una riga successiva in modo che a kk

≠ 0 e

poi eseguo il ciclo for sopra

for i = k + 1 : n

𝑖𝑘

𝑎

𝑖𝑘

𝑎

𝑘𝑘

ri ⇽ ri – mikrk

b i

⇽ b i

  • m ik

b k

modifico pure il termine noto.

OSSERVAZIONE 1

Si puo dimostrare che non servono scambi in questi casi:

  1. A e diagonale dominante per righe ∀i, |𝑎

𝑖𝑖

𝑖𝑗

𝑛

𝑗= 1

𝑗 ≠𝑖

| somma dei valori

assoluti degli elementi della riga i-esima tranne quella diagonale.

  1. A e diagonale dominante per colonne ∀j, |𝑎

𝑗𝑗

𝑖𝑗

𝑛

𝑖= 1

𝑗 ≠𝑖

  1. A e definita positiva ∀x ∈ R

n

… X

T

Ax > 0.

OSSERVAZIONE 2

Nella pratica lo scambio di righe si fa anche se a kk

≠ 0. Infatti ad ogni passo

dobbiamo calcolare: 𝑚

𝑖𝑘

𝑎

𝑖𝑘

𝑎

𝑘𝑘

Se a kk

e molto piccolo, questo potrebbe causare overflow (problema di stabilita)

e m ik

Per dare stabilita all’algoritmo si adotta la strategia del pivoting parziale: al

passo k del metodo si cerca l’elemento piu grande (in valore assoluto) tra a kk

e gli

elementi successivi sulla colonna k e si scambiano le righe.

N.B. se a ik

e piccolo rispetto ad a kk

allora m ik

= 0. Faremo un errore, ma

l’algoritmo procede, da un risultato.

Costo computazionale: Ѻ(n

3

A, b → (Gauss, n

3

/3) A

G

= (matrice triangolare superiore), b

G

invece con sostituzione all’indietro (n

2

/2) → A

G

x = b

G

CALCOLO NUMERICO 26 |04|

FATTORIZZAZIONE DI MATRICI

Algoritmo di eliminazione di Gauss: il moltiplicatore m ik

ha due indici, uno per le

righe e uno per le colonne.

Supponiamo che non si siano fatti scambi: chiamo U il risultato dell’algoritmo

(che mi da la matrice triangolare superiore) e con i moltiplicatori faccio una

matrice L = (

𝑖 1

𝑖𝑘

) e la diagonale e 1 in tutta la matrice. Ottengo così

una matrice diagonale inferiore.

Allora A = L*U dove la L e definita coi moltiplicatori e U definita dall’algoritmo di

Gauss. Questa operazione si chiama fattorizzazione della matrice.

L = tril

U = triu

Se invece sono stati fatti scambi?

Definisco la matrice di permutazione: una matrice di permutazione e una

matrice ottenuta a partire dall’identita scambiando le righe. Queste matrici

servono per lo scambio di righe.

Es: P =

, A =

, P*A =

come si nota ho cambiato le

righe di A; il prodotto matriciale PA mi fa scambiare le righe; se faccio AP

ottengo A di colonne scambiate.

In generale, esiste P di permutazione tale che: PA = LU.

1

  1. Calcolo P, L, U tale che PA = LU.
  2. Dato b i

, Ax 1

= b 1

e Ax i

= b i

Definisco y : Ux i

; allora:

𝑖

𝑖

𝑖

𝑖

allora: Ѻ(n

3

/3) + Ѻ(n

2

)*n.

CALCOLO NUMERICO 03 |0 5 |

SOLUZIONE DI UN SISTEMA LINEARE

x = A\b e il miglior modo per risolvere un sistema, per esempio per trovare la

posizione reciproca di rette, basta calcolare il rango.

  • Matrice non singolare: A e una matrice tale che PA = LU (P e la

permutazione).

  • Matrice positiva: data una matrice A quadrata, e simmetrica e definita

positiva se x

T

Ax > 0 ∀x ∈ R

n

. Una matrice positiva ammette radice

quadrata. Se A e definita positiva allora P = I (identita) allora A = L*U.

A

T

= A allora U

T

*L

T

= L*U (fattorizzazione migliorata).

FATTORIZZAZIONE DI CHOLESKI

Se A ∈ R

nxn

e definita positiva, allora esiste R triangolare superiore, ovvero

triu(R), tale che: A = R

T

*R.

Costo computazionale: Ѻ(n

3

/ 6 ), risparmio meta dei conti.

In matlab uso la funzione chol(), che mi fattorizza A in modo che A = R

T

*R.

Applicazione 1 – determinante

Se A e spd (simmetrica definita positiva):

  1. Fattorizzo A = R

T

*R; Ѻ(n

3

  1. det(A) = det(R

T

) * det(R) = det(R)

2

𝑖𝑖

𝑛

𝑖= 1

2

numero di operazioni.

Applicazione 2 – sistema lineare

Se A e spd allora dato b ∈ R

n

, se voglio calcolare x ∈ R

n

, tale che: Ax = b, allora:

  1. Fattorizzo A = R

T

*R; Ѻ(n

3

  1. Ax =

𝑅

𝑇

∗Rx

𝑦

= b {

𝑇

𝑛

2

2

𝑛

2

2

due sistemi triangolari; ermitiana:

simmetrica definita positiva. IL COSTO DEL SISTEMA E’ COMUNQUE

Ѻ(n

3

Applicazione 3 – inversa

Se A e spd:

  1. Fattorizzo A = R

T

*R; Ѻ(n

3

2) A

  • 1

= R

  • 1

* (R

T

  • 1

A

  • 1

= R

  • 1

*(R

  • 1

T

solo R

  • 1

Se e triangolare, il costo e Ѻ(n

3

/ 2 ) + Ѻ(n

3

/ 6 ), sistemi lineari => Rc i

= e i

un

elemento della base canonica e c i

e la colonna i-esima Ѻ(n

2

/2)*n = Ѻ(n

3

TEOREMA DELLA FATTORIZZAZIONE QR

Sia A ∈ R

m,n

, con m ≠ n, allora A = QR dove Q e una matrice ortogonale, ovvero

Q

T

*Q = I, che ha come dim(Q) = m (righe di A), percio Q e mxm; invece R ha

dim(R) = mxn e r ij

= 0 se i > j.

Caso I

m > n, ho una matrice triangolare superiore; 𝑅 = (

) con 𝑅

∈ R

nxn

Caso II

m < n, ho una matrice che sono per un blocco e triangolare superiore, mentre per

l’altro blocco ha numeri; trovo allora R = (𝑅

, R

1

) operazione di Gram-Schmidt.

Teorema:

Sia A ∈ R

m,n

m ≥ n, rank(A) = n, ovvero il rango massimo; allora A = QR, 𝑅 = (

det(𝑅

) ≠ 0 con 𝑅

∈ R

n,n

. Inoltre sia 𝑄

la matrice formata dalle prime n colonne di

Q (𝑄

= Q ( : , 1 : n), quindi 𝑄

∈ R

m,n

, allora A = 𝑅

e si puo fare in modo che

𝑖𝑖

0 ∀i = 1, n. Costo computazionale: Ѻ(n

3

Se A ∈ R

n,n

non singolare e A = Q*R, det(R) ≠ 0.

Se voglio risolvere Ax = b, Q

T

* Q * R = Q

T

  • b allora R*x = Q

T

  • b e

ha un costo Ѻ(n

2

SISTEMI LINEARI SOPRAELEVATI

Data A ∈ R

m,n

con m ≥ n e dato b ∈ R

m

, puo non essere x ∈ R

n

tale che A*x = b.

LEMMA

Se Q

T

  • Q = I allora ∀r ∈ R

m

, ||Qr|| 2 = ||r|| 2 ovvero le matrici ortogonali sono

applicazioni lineari che NON cambiano la norma dell’input.

DIMOSTRAZIONE

∀V ∈ R

m

, ||V||

2

𝑇

∗ 𝑉 allora ||Q*r|| 2

𝑇

𝑇

𝑇

∗ 𝑟 dove

Q

T

  • Q = I, percio √𝑟

𝑇

∗ 𝑟 = ||r|| 2

. C.V.D

Noi dobbiamo minimizzare ||Ay – b|| 2

e dal lemma so che:

||Ay – b|| 2

= ||Q

T

(Ay – b)|| 2

(y e un vettore generico che appartiene a R

n

) e quindi

= ||Q

T

Ay – Q

T

b|| 2

dove chiamo Q

T

Ay = Ry e Q

T

b = c (che sta per vettore colonna).

Quindi cio che devo minimizzare e ||Ry – c|| 2

Ry – c = (

)y – c con 𝑅

∈ R

n,n

, y ∈ R

n

e y hanno la stessa dimensione) e c ∈ R

m

Analizzo a pezzi:

)y = (

) e 𝑅

*y e un vettore che ∈ R

n

, mentre 0 ∈ R

m-n

(ho

messo m – n perche il risultato deve fare tutto m).

Spezzo ora c:

c = (

1

𝑛

2

𝑚−𝑛

) l’ho scomposto per comodita in due blocchi.

Facendo la differenza tra vettori trovo:

1

2

) e questa sara la norma da minimizzare; siccome c 1

e c 2

sono noti

(quindi fissi), posso cambiare solo y.

Quindi: (||Ry – c|| 2

2

  • c 1

2

  • ||c 2

2

, la norma al quadrato di un vettore e

come la somma del quadrato di due sottopezzi. Dunque posso cambiare y in

modo da ottenere la norma di c 2

(che corrisponde alla minima norma ottenibile).

  • c 1

2

deve fare zero e per trovare y tale che faccia zero, risolvo un sistema

lineare:

sia x tale che:

x = c 1

(ho solo una soluzione possibile)

||Ax – b|| 2

) 𝑦 – c|| 2

dove c = Q

T

b

1

2

2

2

2

2

deve farmi come risultato la norma di c 2

= ||c 2

2

= min||Ay – b|| 2

∀y ∈ R

n

(soluzione unica).

Steps per risolvere l’algoritmo:

  1. Calcola Q ed R tali che A = QR
  2. c = Q

T

b

  1. c 1

= c(1:n)

= R(1:n , 1:n) {vuol dire: “estrai i primi n elementi”).

  1. Trova x:

x = c 1

Questi 4 punti sono la soluzione dell’algoritmo per la risoluzione del problema

dei minimi quadrati.

Quando rank(A) non e max perdo il quarto punto dell’algoritmo (quello trova x

tale che…) perche il problema ha ∞

𝑘

soluzioni del sistema lineare.

ESEMPIO – RETTA DI REGRESSIONE

Supponiamo che esista una retta y = ax + b passante per tutti i punti:

(xi, yi) con i = 1:n