% 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