// subst_retro.sci

// algoritmos de substituicao retroativa:
// dada uma matriz triangular superior A e
// um vetor b, resolve o sistema linear
// Ax = b.

function x = subst_retro (A, b)
  
  // estou supondo que a matriz A
  // eh quadrada n x n e que b eh
  // um vetor coluna n x 1.
  
  [nlin, ncol] = size(A)
  n = nlin;
  
  // inicializando o vetor-resposta
  x = zeros(n, 1);
  
  // aqui comeca efetivamente a 
  // substituicao retroativa
  x(n) = b(n) / A(n,n);
  for j = (n - 1):-1:1 do
    s = 0;
    for k = (j + 1):n do
      s = s + A(j,k) * x(k);
    end
    x(j) = (b(j) - s) / A(j,j);
  end
endfunction

  
