function [x] = rueckw_subst(U,b) 

% rueckw_subs f"uhrt die Rueckw"artssubstitution eines Dreieckssystems
% mit oberer Dreiecksmatrix  U durch. Die rechte Seite ist b und das
% Ergebnis wird auf dem Vektor x gespeichert
% Der Aufruf ist [x] = rueckw_subst(U,b)

% kontrolliere, ob alle Dimensionen passen
[n,m] = size(U);
if n ~= m
  error('U ist keine quadratische Matrix')
end
if n ~= size(b)
  error('Die Dimension von U und b passen nicht')
end

% letzte Zeile
x(n) = b(n)/U(n,n);

% die anderen Zeilen
for i=n-1:-1:1
  % U(i,i+1:n)*(x(i+1:n))' ist das Skalarprodukt 
  % U(i,i+1)*x(i+1) + U(i,i+2) * x(i+2) + ... + U(i,n)*x(n)
  % in dieser kurzen Schreibweise muss x noch zu einem 
  % Spaltenvektor konvertiert werden
  x(i) = (b(i)-U(i,i+1:n)*(x(i+1:n))')/U(i,i);
end

% Das Ergebnis wird zum Spaltenvektor konvertiert
x = x';






