

function xv = trisup(U, b)

%TRISUP Determina la soluzione di un sistema triangolare
% superiore
%
% Uso:
% xv = trisup(U, b)
%
% Dati di ingresso:
% U: matrice triangolare superiore quadrata
% b: vettore COLONNA termine noto
%
% Dati di uscita:
% xv: vettore COLONNA contenente la soluzione

% Codice a p.193 del manuale. Notare la "n" non necessaria nell'input della
% routine Matlab, vedi sopra function xv = trisup(U, b).

% [x] = Trisup (U, b, n)
% for i = n, . . . , 1 step ?1
% x(i) = b(i);
% for j = i + 1 . . . , n
% x(i) = x(i) ? u(i,j)* x(j)
% end for j
% x(i) =x(i)/u(i,i)
% end for i

n=size(U,1);
for i=n:-1:1
    xv(i,1)=b(i,1);
    for j=(i+1):n
        xv(i,1) = xv(i,1) - U(i,j)* xv(j,1);
    end
    if abs(U(i,i)) > 0
        xv(i,1) =xv(i,1)/U(i,i);
    else
        xv=zeros(n,1);
        disp('\n \t Warning: la matrice U non e'' singolare');
    end
end
