Sei sulla pagina 1di 4

# SISTEMI LINEARI

METODI DIRETTI

ed lu

>> help lu

## Generare una matrice di interi A, tridiagonale random non singolare di ordine

dodici ed i vettori di interi x random con dodici componenti e b = Ax.

>> n=12;r=fix(randn(n,1)*10);
>> a=-diag(r)+diag(r(1:n-1),-1)+diag(r(2:n),+1),det(a)
>> x=round(randn(n,1)*5),b=a*x

>> x1=a\b
>> [l,u,p]=lu(a)
>> y=l\(p*b)
>> x2=u\y

## Generare una matrice A, tridiagonale random non singolare di ordine dodici, ed i

vettori x, random con dodici componenti, e b = Ax, risolvere il sistema lineare
Ax = b utilizzando le function matlab \ ed lu.

>> clear,clc
>> n=10;r=fix(randn(n,1)*5);
>> a=diag(r)-diag(r(2:n),-1)-diag(r(1:n-1),+1),det(a)
>> x=round(randn(n,1)*10),b=a*x
>> x1=a\b
>> err1=abs(x-x1)
>> [l,u,p]=lu(a)
>> y=l\(p*b)
>> x2=u\y
>> err2=abs(x-x2)
SISTEMI MALCONDIZIONATI

>> clear,clc
>> a=[1000 999;999 998];b=[1999 1997]';x=a\b
>> b1=[1999 1996.99]';x1=a\b1
>> a2=a;a2(1,1)=1000.01; x2=a2\b
>> cond(a)

>> clear,clc
>> a=[4.1 1 2.8;1 10 1;9.7 1 6.6]; cond(a)
>> b=[7.9 12 17.3]';x=a\b1
>> b1=[7.91 12 17.3]';x1=a\b1,err1=max(abs(x-x1))
>> b2=[7.9 12.01 17.3]';x2=a\b2,err2=max(abs(x-x2))
>> b3=[7.9 12 17.31]';x3=a\b3,err3=max(abs(x-x3))
>> cond(a)

>> clear,clc
>> a=[1 1e-6 -1; -1 2 -1; -2 0 2];
>> x= [-1 1 0]'; b=a*x,y=a\[-1 3 2]'
>> x= [-1 0 1]'; b=a*x,y=a\[-2 0 4]'

## SISTEMI CON MATRICI SPARSE

>> clear,clc
>> a=diag(ones(100,1));
>> for k=1:10;n=fix(rand(1)*100);m=fix(rand(1)*100);
h=round(randn(1)*100);a(n,m)=h;end
>> b=sparse(a);
>> whos

>> subplot(1,2,1)
>> spy(a)
>> subplot(1,2,2)
>> spy(b)

## Sfruttando la fattorizzazione LU risolvere i seguenti sistemi lineari (output in

format rat):
3 x1 − x2 + 2 x3 − 5 x4 + 2 x5 = −11 3 x1 − x2 + 2 x3 − 5 x4 + 2 x5 = −1
 
 4 x1 + 2 x2 + 4 x3 + x4 + x5 = −2  4 x1 + 2 x2 + 4 x3 + x4 + x5 = −3
 
 −5 x1 + 2 x2 − 4 x3 − 3 x4 − 3x5 = 7  −5 x1 + 2 x2 − 4 x3 − 3 x4 − 3x5 = 2
 −4 x + 2 x + 4 x − 7 x = 17  −4 x + 2 x + 4 x − 7 x = −3
 1 2 4 5  1 2 4 5
 2 x1 + 4 x2 − 2 x5 = 4  2 x1 + 4 x2 − 2 x5 = −4

## >> format rat

>> a=[3 -1 2 -5 2;4 2 4 1 1;-5 2 -4 -3 -3;-4 2 0 4 -7;
2 4 0 0 –2];b=[-11 -2 7 17 4]';
>> [l,u,p]=lu(a);b=p*b,y=l\b
>> x=u\y

## >> b=[-1 -3 2 -3 -4]';

>> [l,u,p]=lu(a);b=p*b,y=l\b
>> x=u\y

1e − 7 1 1 2
 1 1e − 7 −1 0 
Assegnata la matrice A =  determinare il vettore b
 2 1 0 1
 
 1 −1 −1 1
prodotto della matrice A per il vettore x = [ −1 1 −1 1] ' , risolvere infine il
1e − 7 1 1 2   x1   2 
 1 1e − 7 −1 0   x2   0 
sistema  =
 2 1 0 1   x3   0 
    
 1 −1 −1 1   x4   0 

## Dai risultati ottenuti si può dedurre che il sistema è malcondizionato?

Confrontare il risultato con quanto ottenuto dalla function cond del matlab.

## >> a=[1e-7 1 1 2;1 1e-7 -1 0;2 1 0 1;1 -1 -1 1]

>> x=[-1 1 -1 1]'
>> a\[2 0 0 0]'
Utilizzare la fattorizzazione LU per ottenere una approssimazione della soluzione
del sistema lineare: Ax = b, dove A è la matrice generata dalla function matlab
hilb(6); costruire il vettore dei termini noti b supponendo che la soluzione sia il
vettore avente le prime tre componenti uguali ad uno e le altre tre uguali a meno
uno. Confrontare la soluzione ottenuta e la soluzione ricavata utilizzando il metodo
di eliminazione di Gauss fornendo gli errori commessi utilizzando i due metodi
calcolati in norma infinito. Stabilire il numero minimo di cifre ritenute corrette.
Porre l’elemento a(5,5)=.1111, calcolare nuovamente le soluzioni del sistema e gli
errori calcolati in norma infinito. Commentare i risultati in termini di
condizionamento della matrice A. Confrontare il risultato con quanto ottenuto dalla
function cond del matlab.

## Utilizzare la fattorizzazione LU per ottenere una approssimazione della soluzione

del sistema lineare: Ax = b, dove A è la matrice di ordine dodici generata dalla
function matlab gallery opzione 'frank'; costruire il vettore dei termini noti b
supponendo che la soluzione sia il vettore avente le prime sei componenti uguali a
meno uno e le altre sei uguali ad uno. Confrontare la soluzione ottenuta e la
soluzione ricavata utilizzando il metodo di eliminazione di Gauss fornendo gli
errori commessi utilizzando i due metodi calcolati in norma infinito. Porre
l’elemento a(1,1)=11.99999, calcolare nuovamente le soluzioni del sistema e gli
errori calcolati in norma infinito. Commentare i risultati in termini di
condizionamento della matrice A. Confrontare il risultato con quanto ottenuto dalla
function cond del matlab.