• Non ci sono risultati.

Risoluzione di un sistema triangolare inferiore

N/A
N/A
Protected

Academic year: 2021

Condividi "Risoluzione di un sistema triangolare inferiore"

Copied!
14
0
0

Testo completo

(1)

Risoluzione di un sistema triangolare inferiore

a

1,1

0 0 . . . 0 0

a

2,1

a

2,2

0 . . . 0 0

a

3,1

a

3,2

a

3,3

. . . 0 0 . .

. . . . . . . . . .

a

n−1,1

a

n−1,2

a

n−1,3

. . . a

n−1,n−1

0 a

n,1

a

n,2

a

n,3

. . . a

n,n−1

a

n,n

 x

1

x

2

x

3

. . . x

n−1

x

n

=

 b

1

b

2

b

3

. . . b

n−1

b

n

a

i ,i

6= 0, i = 1, . . . , n.

Sostituzione in avanti:

x

1

= b

1

/a

1,1

For i = 2 : n

x

i

=

a1

i ,i



b

i

− P

i −1 j =1

a

i ,j

x

j



(2)

Risoluzione di un sistema triangolare superiore

a

1,1

a

1,2

a

1,3

. . . a

1,n−1

a

1,n

0 a

2,2

a

2,3

. . . a

2,n−1

a

2,n

0 0 a

3,3

. . . a

3,n−1

a

3,n

. .

. . . . . . . . . .

0 0 0 . . . a

n−1,n−1

a

n−1,n

0 0 0 . . . 0 a

n,n

 x

1

x

2

x

3

. . . x

n−1

x

n

=

 b

1

b

2

b

3

. . . b

n−1

b

n

a

i ,i

6= 0, i = 1, . . . , n.

Sostituzione all’indietro x

n

= b

n

/a

n,n

Fori = n − 1 : −1 : 1 x

i

=

a1

i ,i



b

i

− P

n

j =i +1

a

i ,j

x

j



(3)

Esercizi

I

Scrivere una funzione di Matlab che implemeti il metodo della sostituzione in avanti.

I

Scrivere una funzione di Matlab che implemeti il metodo della

sostituzione all’indietro.

(4)

Risoluzione di sistemi lineari

Il comando \ (backslash)

I

Se A ` e una matrice n × n e b ` e un vettore colonna di dimensione n

x=A \ b calcola la soluzione del sistema lineare

A x = b .

I

Non calcola l’inversa.

I

Risolve il sistema lineare usando l’algoritmo pi` u efficiente, effetuando dei test preliminari sulla matrice: ad esempio, se A

`

e triangolare inferiore usa il metodo della sostituzione in avanti.

Il comando inv.

I

Calcola esplicitamente l’inversa della matrice A.

I

Non ` e conveninte usare questo comando per risolvere un

sistema lineare perche ` e pi` u costoso.

(5)

Altri comandi per matrici (e vettori)

I

det(A) calcola il determinante della matrice A.

I

v=diag(A) se A ` e una matrice calcola il vettore con la diagonale di A.

I

D=diag(v) se v calcola la matrice diagonale che ha nella diagonale i valori di v.

I

M=tril(A) restituisce la parte triangolare inferiore di A.

(Provare anche tril(A,1) o tril(A,-2)).

I

M=triu(A) restituisce la parte triangolare superiore di A.

Analogo a tril.

I

v=eig(A) calcola gli autovalori di A.

I

[M,v]=eig(A) calcola gli autovettori e gli autovalori di A.

(6)

Matrici particolari

zeros(3,4), zeros(2) ones(2,5), ones(3) eye(4)

Osservazione:

[c

1

, c

2

, c

3

]

 d

1

d

2

d

3

 = c

1

d

1

+ c

2

d

2

+ c

3

d

3

 c

1

c

2

c

3

 [d

1

, d

2

, d

3

] =

c

1

d

1

c

1

d

2

c

1

d

3

c

2

d

1

c

2

d

2

c

2

d

3

c

3

d

1

c

3

d

2

c

3

d

3

(7)

Metodo di eliminazione di Gauss

Ax = b ⇔ Ux = c U matrice triangolare superiore.

for k=1:n-1 for i=k+1:n

m

i ,k

= a

(k)i ,k

/a

k,k(k)

for j=k+1:n

a

(k+1)i ,j

= a

i ,j(k)

− m

i ,k

a

(k)k,j

end

b

i(k+1)

= b

i(k)

− m

i ,k

b

(k)k

end

end

U = A

(n)

, c = b

(n)

.

(8)

Il comando lu

[L,U,P]=lu(A)

I

L U = P A

I

L triangolare inferiore con gli elementi diagonali uguali a 1.

I

U triangolare superiore.

I

P matrice di permutazioni.

[L,U]=lu(A)

I

L U = A

I

L non ` e triangolare inferiore ma una permutazione di righe la rende triangolare inferiore con tutti gli elementi diagonali uguali a 1.

I

U triangolare superiore.

(9)

Il comando chol

R=chol(A)

I

A deve essere simmetrica definita positiva

I

R

T

R = A

I

R triangolare superiore con tutti gli elementi diagonali positivi.

(10)

Risoluzione di un sistema tridiagonale

 a

1

c

1

b

1

a

2

c

2

b

2

a

3

c

3

. . . . . . . . . b

n−2

a

n−1

c

n−1

b

n−1

a

n

 x

1

x

2

x

3

. . . x

n−1

x

n

=

 f

1

f

2

f

3

. . . f

n−1

f

n

(11)

Metodo di Thomas

 a

1

c

1

b

1

a

2

c

2

b

2

a

3

c

3

. . . . . . . . . b

n−2

a

n−1

c

n−1

b

n−1

a

n

=

 1 β

1

1

β

2

1 . . . . . .

β

n−2

1 β

n−1

1

 α

1

c

1

α

2

c

2

α

3

c

3

. . . . . . α

n−1

c

n−1

α

n

alpha(1)=a(1);

for i=1:n-1

beta(i)=b(i)/alpha(i);

alpha(i+1)=a(i+1)-beta(i)*c(i);

end

(12)

Sostituzione in avanti

Ax = f A = LU Ly = f Ux = y

 1 β

1

1

β

2

1 . .. . ..

β

n−2

1 β

n−1

1

 y

1

y

2

y

3

.. . y

n−1

y

n

=

 f

1

f

2

f

3

.. . f

n−1

f

n

y(1)=f(1);

for i=2:n

y(i)=f(i)-beta(i-1)*y(i-1);

end

(13)

Sostituzione all’indietro

α

1

c

1

α

2

c

2

α

3

c

3

. .. . ..

α

n−1

c

n−1

α

n

 x

1

x

2

x

3

.. . x

n−1

x

n

=

 y

1

y

2

y

3

.. . y

n−1

y

n

x(n)=y(n)/alpha(n);

for i=n-1:-1:1

x(i)=(y(i)-c(i)*x(i+1))/alpha(i);

end

(14)

Esercizio

Scrivere una funzione di Matlab che implementi l’algoritmo di

Thomas.

Riferimenti

Documenti correlati

Scrivere la funzione Matlab compute_inverse che prenda in input una matrice quadrata A di ordine N; dopo aver verificato che la matrice è invertibile,

Scrivere la funzione Matlab find_val che riceva in input un vettore v e una variabile stringa tipo che puo' assumere solo i valori 'min' e 'max' e restituisca in output il

I Scrivere una funzione di Matlab che implemeti il metodo della sostituzione all’indietro.

[r]

“Tries to approximate the integral of scalar-valued function FUN from A to B to within an error of 1.e-6 using recursive adaptive Simpson quadrature. FUN is a

[r]

servono ad impedire che il carattere $ che rappresenta il ladro esca dallo schermo (la direzione del movimento viene invertita nel caso vengano superati i bordi dello schermo

Questo metodo fornisce i valori dei parametri del regolatore, che si suppone collegato al processo come è indicato in figura I.2.1, in funzione di alcuni parametri della risposta al