Anteprima
Vedrai una selezione di 4 pagine su 12
Calcolo Numerico – Elaborato Pag. 1 Calcolo Numerico – Elaborato Pag. 2
Anteprima di 4 pagg. su 12.
Scarica il documento per vederlo tutto.
Calcolo Numerico – Elaborato Pag. 6
Anteprima di 4 pagg. su 12.
Scarica il documento per vederlo tutto.
Calcolo Numerico – Elaborato Pag. 11
1 su 12
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

SCRIPT:

for n=3:8

A=rand(n,n); %genera la matrice A(n,n) con elementi casuali

b=A*ones(n,1); %genera il vettore dei coefficienti noti b

[L,U,P]=lu(A); %fattorizza A

scambi=P*b; %applica gli scambi a b

y=L\scambi;

x=U\y;

xc=ones(n,1); %genera il vettore delle soluzioni esatte

e=norm(xc-x)/norm(xc) %calcola l’errore

r=norm(b-A*x)/norm(b) %calcola il residuo

end

%Matrice di Hilbert

For n=3:8

H=hilb(n);

b=H*ones(n,1);

[L,U,P]=lu(H);

scambi=P*b;

y=L\scambi;

x=U\y;

xc=ones(n,1);

e=norm(xc-x)/norm(xc)

r=norm(b-H*x)/norm(b)

end la funzione risolve sistemi di equazioni del tipo Ax=b con A matrice

SCOPO tridiagonale

L'algoritmo implementa la fattorizzazione particolarizzata per matrici

DESCRIZIONE tridiagonali, senza applicazione di pivot, al fine di preservare la

struttura della matrice.l’algoritmo effettua i controlli necessari affinché

si rispetti la sintassi dei valori inseriti in input. Poi esegue anche un

controllo per verificare la dominaza della diagonale principale. Poi

esegue la fattorizzazione LU per matrici tridiagonali per finire col

calcolo del vettore x di dimensione n,che rappresenta la soluzione del

sistema.

Raccomandazioni sull'uso

la matrice, supposta di ordine n, deve essere inserita sotto forma di tre

vettori d, e, f,di lunghezza rispettivamente n, n-1, n-1,n rappresentanti

la diagonale principale, quella inferiore e quella superiore.

Pi si deve inserire anche il vettore b,che rappresenta il vettore dei temini

noti di dimensione n.

input

PARAMETRI DI d - vettore di reali, diagonale principale di A

I/O e - vettore di reali, diagonale inferiore di A

f - vettore di reali, diagonale superiore di A

b – vettore dei termini noti

output

x – vettore delle soluzioni

l’algoritmo segnala un errore quando:

INDICATORI DI - si inseriscono i 3 vettori non rispettando le dimensioni.

ERRORE - si inseriscono i 3 vettori formando una matrice a diagonale principale

non dominante

- non si rispetta il numero di parametri che riceve la funzione.

la complessità è O(n)

TEMPO DI

ESECUZIONE sono allocati 4 array di dimensione n ,n, n-1, n-1

MEMORIA

RICHIESTA >> a = [ 3 4 1 ]; d = [ 12 52 13 19 ]; f = [ 1 6 4 ]; b = [ 1 1 1 1 ];

ESEMPIO >> x = tdiag(a,d,f,b)

D’USO x =

0.08269901190255 0.00761185716938 0.05934773191410 0.04950801410978

metodo esatto a meno del condizionamento della matrice e degli errori

ACCURATEZZA di round-off

CASI DI TEST:

1)

>> a = [ 0 3 6 ]; d = [ 3 3 13 19 ]; f = [ 2 0 4 ]; b = [ 1 1 1 1];

>> x = tdiag(a,d,f,b)

x =

0.11111111111111 0.33333333333333 -0.01793721973094 0.05829596412556

2)

>> a = [ 44 3 6 ]; d = [ 3 3 13 19 ]; f = [ 2 0 4 ]; b = [ 1 1 1 1];

>> x = tdiag(a,d,f,b)

la matrice inserita non è a diagonale strettamente dominante

x =

riprova!

3)

>> a = [ 2 3 6 ]; d = [ 3 ]; f = [ 2 0 4 ]; b = [ 1 1 1 1];

>> x = tdiag(a,d,f,b)

la matrice inserita non è tridiagonale

x =

reinseriscila!

4)

>> a = [ 1 3 6 ]; d = [ 3 3 13 19 ]; f = [ 2 0 4 ]; b = [0 0 0 0];

>> x = tdiag(a,d,f,b)

x =

0 0 0 0

5)

>> a = [ 1 1 1 ]; d = [ 3 4 5 6 ]; f = [ 0 0 0 ];

>> x = tdiag(a,d,f,5)

la matrice inserita non è tridiagonale

x =

reinseriscila!

6)

>> a = [ 1 1 1 ]; d = [ 3 4 5 6 ]; f = [ 0 0 0 ];

>> x = tdiag(a,d)

errore il numero dei parametri non è corretto

x =

reinserisci i vettori

7)

>> a = [ 1 2 3 ]'; d = [ 3 4 5 6 ]; f = [ 0 0 0 ];b=[1 1 1 1];

>> x = tdiag(a,d,f,b)

a =

1 2 3

x =

0.33333333333333 0.16666666666667 0.13333333333333 0.10000000000000

SCRIPT:

function x = tdiag(a,d,f,b)

%la funzione risolve sistemi di equazioni del tipo Ax=b con A matrice tridiagonale

% parametri di INGRESSO:

% a - vettore della diagonale inferiore

% d - vettore della diagonale principale

% f - vettore della diagonale superiore

% b - vettore dei termini noti

% parametri di USCITA:

% x - vettore delle soluzioni

% UTILIZZO : x=tdiag(s,d,f,b)

if nargin ~= 4

disp('errore il numero dei parametri non è corretto')

x = 'reinserisci i vettori';

return

end

%controllo sull'inserimento dei vettori riga:

%se vengono inseriti vettori colonna,verranno cambiati in vettori riga

%sfruttando l'operatore di trasposta

l = [1 length(a)];

if l >= size(a)

else

a=a'

end

l = [1 length(d)];

if l >= size(d)

else

d=d'

end

l = [1 length(f)];

if l >= size(f)

else

f=f'

end

l = [1 length(b)];

if l >= size(b)

else

b=b'

end

a = [0 a];

f = [f 0];

Dettagli
Publisher
A.A. 2012-2013
12 pagine
SSD Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Calcolo numerico e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof D'Amore Luisa.