Files
unisa_analisi_numerica_2014…/convert_matrix_to_triangular_matrix.m

45 lines
1.1 KiB
Matlab

% questo algoritmo converte una matrice quadrata generica in
% triangolare superiore mediante metodo di gauss con pivot parziale
U=[10,20,30;1,5,3;4,56,34]; % matrice di input
b=[1;2;17]; %termini noti
n= length(b); % lunghezza del vettore dei termini noti o numero equazioni
U= [U,b]; % uniamo la matrice con la colonna dei termini noti
U %stampiamo la matrice
det(U(:,1:n)) % stampiamo il determinante della matrice
% convertiamo la matrice in una triangolare superiore
for i=1:1:n-1
x_max = max ( abs(U(i:n,i)) );
if x_max == 0
disp('errore')
else
[x,y]= ind2sub(size(U), find (abs(U(i:n,i)) == x_max) );
x= x + i -1;
y = i;
if x~= i
U([i x],:) = U([x i],:);
end
for j=i+1:1:n
U(j,:) = U(j,:) + ( U(i,:) * (- U(j,i) / U(i,i) ) ) ;
end
end
end
U % stampiamo la nuova matrice convertita
det ( U(:,[1 : n]) ) % stampiamo il nuovo determinante
% non considerando i termini noti
% e verichiamo che è uguale al vecchio
% determinante