function x=subdir(A,b)
 // Mat01032 Calculo Numerico A - UFRGS
 // solucao de Ax=b via substituicao direta
 // A deve ser triangular inferior e nao-singular
 x=zeros(b); n=size(A,1);
  if n~=size(A,2) 
    error('matriz A deve ser quadrada');
  end
  if n~=length(b)
    error('A e b tem dimensoes incompativeis');
  end
  for i=1:n  // substituicao direta
    x(i)=(b(i)-A(i,1:i-1)*x(1:i-1))/A(i,i);
  end
 // numero de operacoes ponto flutuante: n^2
endfunction
