Anteprima
Vedrai una selezione di 3 pagine su 9
Funzioni Matlab per la risoluzione di Sistemi Lineari Pag. 1 Funzioni Matlab per la risoluzione di Sistemi Lineari Pag. 2
Anteprima di 3 pagg. su 9.
Scarica il documento per vederlo tutto.
Funzioni Matlab per la risoluzione di Sistemi Lineari Pag. 6
1 su 9
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

% sistema;

% iter numero di iterazioni effettuate dal raffinamento iterativo.

%

%

% La function richiama: Lufact, Forwsub, Backsub, Raff_iter.

%_________________________________________________________________________

%

% Esempio di utilizzo della function applicata al sistema lineare Ax=b

% dove

%

% A= 5 -2 0

% -2 5 -2

% 0 -2 5

%

% b= 3

% 1

% 3

%

% con soluzione vera:

%

% alpha= 1

% 1

% 1

%_________________________________________________________________________

%

% clear all; clc

% n=3; toll=1e-13;

% A=5*eye(n)-2*diag(ones(n-1,1),-1)-2*diag(ones(n-1,1),1)

% b=[3 1 3]'

%

% [x,iter] = Gauss(A,b,toll)

%

%_________________________________________________________________________

[L,U] = Lufact(A);

[y] = Forwsub(L,b);

[x] = Backsub(U,y);

P=eye(size(A));

[x,iter]=Raff_iter(A,b,L,U,P,x,toll);

FUNZIONE METODO DI GAUSS CON PIVOTAZIONE PARZIALE

%_________________________________________________________________________

%

% Function: Gausspv_r

% ____________________

%

% Chiamata: [x,iter] = Gausspv_r(A,b,toll);

%

%

% La function 'Gausspv_r' risolve un sistema lineare non singolare Ax = b

% mediante la fattorizzazione LU della matrice PA, con P matrice di

% permutazione (pivotazione parziale); esegue quindi il raffinamento

% iterativo della soluzione.

%

% Ax=b PA=LU => Ly=Pb

% Ux=y

%

%

% Parametri in ingresso:

% _____________________

%

% A matrice del sistema, di dimensione nxn;

%

% b vettore colonna di lunghezza n, contenente il termine noto del

% sistema;

%

% toll tolleranza per il test d'arresto del raffinamento iterativo;

%

% Parametri in uscita:

% ____________________

%

% x vettore colonna di lunghezza n, contenente la soluzione del

% sistema;

%

% iter numero di iterazioni effettuate nel raffinamento iterativo.

%

%

%

% La function richiama: Raff_iter che, pertanto, deve essere collocata

% nella stessa directory.

% Per la fattorizzazione della matrice,utilizza la function lu di Matlab.

%_________________________________________________________________________

%

% Esempio di utilizzo della function applicata al sistema lineare Ax=b

% dove

%

% A= 5 -2 0

% -2 5 -2

% 0 -2 5

%

% b= 3

% 1

% 3

%

% con soluzione esatta:

%

% alpha= 1

% 1

% 1

%_________________________________________________________________________

%

% clear all; clc

% n=3;

% A=5*eye(n)-2*diag(ones(n-1,1),-1)-2*diag(ones(n-1,1),1)

% b=[3 1 3]'

% toll=1.e-13;

%

% [x,iter] = Gausspv_r(A,b,toll)

%

% % Risultati

% x =

%

% 1

% 1

% 1

%

%

% iter =

%

% 0

% % Raffiter non ha attivato alcun raffinamento poichè la soluzione

% % determinata col metodo di Gauss è calcolata con la precisione

% % richiesta in Raffiter

%______________________________________________________________________

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

y=L\(P*b);

x=U\y;

x0=x

[x,iter]=Raff_iter(A,b,L,U,P,x0,toll);

FUNZIONE FATTORIZZAZIONE LU

function [L,U] = Lufact(A)

%______________________________________________________________

%

% Funzione: Lufact

% ___________________

%

% Chiamata: [L,U] = Lufact(A);

%

% La function 'Lufact' esegue la fattorizzazione LU della matrice

% A, senza pivotazione.

% E' utile, ad esempio, nel caso in cui A sia simmetrica e

% definita positiva.

%

% A=LU

%

%

% Parametri in ingresso:

% ______________________

%

% A matrice di dimensione nxn da fattorizzare;

%

% Parametri in uscita:

% ____________________

%

% L matrice triangolare inferiore di dimensione nxn;

% U matrice triangolare superiore di dimensione nxn;

%

%______________________________________________________________

a=A;

if abs(det(a))<10^-14

disp('Matrice A singolare')

else

[n,m]=size(a);

for k=1:m-1

%

% Azzeramento degli elementi a(i,k)

% for i=k+1:n

mik=-a(i,k)/a(k,k);

a(i,k)=-mik;

for j=k+1:n

a(i,j)=a(i,j)+mik*a(k,j);

end

end

end

%

% Costruzione delle matrici L, U

%

FUNZIONE RAFFINAMENTO ITERATIVO

function [x,iter] = Raff_iter(A,b,L,U,P,x0,toll)

%_________________________________________________________________________

%

% Function: Raff_iter

% ______________________

%

% Chiamata: [x,iter] = Raff_iter(A,b,L,U,P,x0,toll);

%

% La function 'Raff_iter' esegue il raffinamento iterativo della

Dettagli
Publisher
A.A. 2016-2017
9 pagine
SSD Scienze matematiche e informatiche MAT/05 Analisi matematica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher damfaz.24 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 L'Aquila o del prof Cimoroni Mariagabriella.