Creato algoritmi di risoluzione sistemi lineari mediante metodo di gauss con pivoting parziale
This commit is contained in:
44
convert_matrix_to_triangular_matrix.m
Normal file
44
convert_matrix_to_triangular_matrix.m
Normal file
@@ -0,0 +1,44 @@
|
||||
|
||||
% 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 <EFBFBD> uguale al vecchio
|
||||
% determinante
|
||||
Reference in New Issue
Block a user