• Non ci sono risultati.

Il comando sparse di Matlab memoriza una matrice in questo modo.

N/A
N/A
Protected

Academic year: 2021

Condividi "Il comando sparse di Matlab memoriza una matrice in questo modo."

Copied!
7
0
0

Testo completo

(1)

Matrici sparse

Si dice che una matrice ` e sparsa se ha tanti coefficienti uguali a zero. (Una matrice tridiagonale ` e un esempio di matrice sparsa).

Se una matrice ` e sparsa ` e conveniente memorizare solo dove si trovano gli elementi non nulli e il loro valore.

I

Il comando sparse di Matlab memoriza una matrice in questo modo.

I

Il comando nnz restituisce il numero di elementi non nulli in una matrice.

I

il comando spy disegna la struttura di una matrice.

I metodi diretti “riempiono” le matrici sparse

(2)

Metodi iterativi classici

A = P − N P facilmente invertibile Ax = b Px = b + Nx x = P

−1

Nx + P

−1

b

Ax = b ⇔ x = Bx + c

Il metodo iterativo costruisce una sucessione di vettori {x

(k)

} nel seguente modo

x

(0)

assegnato Per k ≥ 0

x

(k+1)

= Bx

(k)

+ c

Se questa succession converge a un limite (che chiamiamo x

) questo limite ` e la soluzione del sistema lineare

Ax

= b

(3)

Esempi di metodi iterativi classici

Metodo di Jacobi P=diag(diag(A)) for i = 1 : n

x

i(k+1)

= 1 a

i ,i

b(i ) −

i −1

X

j =1

a

i ,j

x

j(k)

n

X

j =i +1

a

i ,j

x

j(k)

 Metodo di Gauss-Seidel P=tril(A)

for i = 1 : n

x

i(k+1)

= 1 a

i ,i

b(i ) −

i −1

X

j =1

a

i ,j

x

j(k+1)

n

X

j =i +1

a

i ,j

x

j(k)

(4)

Esercicio

I

Escrivere una funzione di Matlab che implementi il metodo di Jacobi. Fermare l’iterazioni quando kr

(k)

k < toll ∗ kbk.

(norm(X,p) “Matrix or vector norm.”)

I

Data la matrice simmetrica definita positiva A = M ∗ M

0

con

M =

1 0 −1 1 2

−2 3 1 2 1

1 0 0 −2 3

1 2 3 −1 0

−1 −2 −1 −1 3

usando i comandi di Matlab calcolare il raggio spettrale della

matrice d’iterazione del metodo di Jacobi e del metodo di

Gauss-Seidel.

(5)

Numero di condizionamento

cond(X,p) “Condition number” norm(X,p) * norm(inv(X),p) hilb(n) “Hilbert matrix” h

i ,j

= 1/(i + j − 1).

Esercizio

Sia A la matrice di Hilbert 8 × 8 sia b = A ∗ ones(8, 1) e c = b + 1.e − 10 ∗ rand (8, 1).

I

Usando i comandi di Matlab risolvere Ax = b e Ay = c.

I

Calcolare

kx−ykkxk

e confrontare con

kb−ckkbk

.

I

Calcolare il numero di condizionamento di A.

I

Commentare i risultati.

(6)

Metodo del gradiente

Ax = b

con A una matrice simmetrica definita positiva x

(0)

assegnato

for k ≥ 0

r

(k)

= b − Ax

(k)

α

k

= [r

(k)

]

T

r

(k)

[r

(k)

]

T

Ar

(k)

x

(k+1)

= x

(k)

+ α

k

r

(k)

(7)

Metodo del gradiente coniugato

x

(0)

assegnato, r

(0)

= b − Ax

(0)

, d

(0)

= r

(0)

, for k ≥ 0

α

k

= [d

(k)

]

T

r

(k)

[d

(k)

]

T

Ad

(k)

x

(k+1)

= x

(k)

+ α

k

d

(k)

r

(k+1)

= b − Ax

(k+1)

β

k

= − [d

(k)

]

T

Ar

(k+1)

[d

(k)

]

T

Ad

(k)

d

(k+1)

= r

(k+1)

+ β

k

d

(k)

Riferimenti

Documenti correlati

Risolvere ricorrendo alla serie di Fourier, la seguente equazione differenziale nell’in- tervallo [−3, 3]1. 3y 00 + 2y =

Correzione prova intermedia di Matematica Applicata 14 novembre 2011. Compito numero

Le risposte devono essere concise, ma giustificate e scritte solamente negli spazi

[r]

2019/2020, Scuola di Scienze - Corsi di laurea: Statistica per l’economia e l’impresa. Statistica per le tecnologie e

Una matrice quadrata in cui tutti gli elementi con indici diversi sono nulli si dice

[r]

Come ogni altra matrice di proie- zione su un sottospazio di dimensione 1, la matrice v i v i ∗T ha rango unitario, ha un autovalore unitario e tutti gli altri