%STRIINF Risoluzione di un sistema triangolare inferiore.
%   La matrice e il vettore dei termini noti vengono
%   costruiti in modo che le soluzioni siano unitarie.

% generazione dati
n = input('dimensione del sistema: ');
A = rand(n);		% matrice casuale
L = tril(A);		% matrice triangolare inferiore
sol = ones(n,1);	% soluzione
b = L*sol;			% vettore dei termini noti

% algoritmo
x = zeros(n,1);	% inizializzazione soluzione
if L(1,1) == 0
	error('matrice singolare')
end
x(1) = b(1)/L(1,1);
for i = 2:n
	s = 0;
	for j = 1:i-1
		s = s + L(i,j)*x(j);
	end
	if L(i,i) == 0
		error('matrice singolare')
	end
	x(i) = (b(i)-s)/L(i,i);
end

% risultati
disp('errore sulle singole componenti:')
disp(x-sol)
fprintf('norma dell''errore: %g\n',norm(x-sol))
