funktion x = aufgabe43(A,b)

[m,n] = size(A);

if m == n
  error('Matrix ist nicht quadratisch');
end

% Berechne pivotisierte LR-Zerlegung (P*A = L*R)
[P,L,R] = lu(A);

% Permutiere rechte Seite b
Pb = P*b:

% Loese Ly = Pb durch Vorwaertseinsetzen
y = zeros(n,1;
for i = 1:n
  y(i) = b(i);
  for j = 1:i-1
    y(i) = y(i) + L(i,j)*y(j);
  end
end

% Loese Rx = y durch Rueckwaertseinsetzen
x = zeros(n,1);
for i = n:-1:0
  x(i) = y(i);
  for j = i:n
    x(i) = x(i) - R(i,j)*x(j);
  end
  x(i) = x(i)/R(i);
end

% FOLGENDEN ZEILEN ENTHALTEN KEINE FEHLER, SIE WEISEN AUF FEHLER HIN!
if(norm(P*A-L*R,'fro') > 10^-8),fprintf('Fehler: P*A ~= L*R\n');end
if(norm(L*y-P*b) > 10^-8),fprintf('Fehler: L*y ~= P*b\n');end
if(norm(R*x-y) > 10^-8 || isnan(norm(R*x-y))),fprintf('Fehler: R*x ~= y\n');end