function A = eliminazione_Gauss( A ) function M = scambio_pivot( M , j ) possibili_pivot = M( (j+1):end , j ) ; % estrazione colonna j [ ~ , k ] = max( abs( possibili_pivot ) ) ; % ricerca pivot "migliore" M = scambia_righe( M , j , j+k ) ; % scambio righe pivot end % Funzione per il test x = 0 is_zero = @(x) abs(x) < 10*eps ; m = size(A, 1) ; % Ciclo sulle colonne da ridurre a 0 for j = 1 : m-1 pivot = A( j , j ) ; % il pivot รจ l'elemento diagonale % Caso di pivot nullo => nuovo pivot (se possibile) if is_zero( pivot ) A = scambio_pivot( A , j ) ; pivot = A( j , j ) ; end % Ciclo sugli elementi da eliminare nella colonna j for i = j+1 : m lambda = -A(i,j) / pivot ; % coefficiente scalare per l'eliminazione if ~is_zero( lambda ) % se lambda = 0 l'eliminazione non serve A = somma_righe( A , i , lambda , j ) ; % operazione somma righe end end end end