% Musterlösung
%
% Numerische Mathematik, SS 2013
%
% Lösen eines Gleichungssystems mit Hilfe einer LR-Zerlegung
%
% Ingolf Busch, Juni 2013

% Input: S            struct die alle Informationen zur LR-Zerlegung enthält
%        b            rechte Seite des Gleichungssystems
%        transponiert true: A*x=b zu lösen
%                     flase: A'*x=b zu lösen

% Output: x  Lösung des Gleichungssystems

function x = my_solve_lr(S,b,transponiert)

if nargin < 2
    
    transponiert = false;
    
end


switch S.mode
    case {'zeile','spalte'}
        if(transponiert)
            x = S.L'\(S.R'\b);
        else
            x = S.R\(S.L\b);
        end
    case 'pp'
        if(transponiert)
            x = S.P'*(S.L'\(S.R'\b));
        else
            x = S.R\(S.L\(S.P*b));
        end
    case 'cp'
        if(transponiert)
            x = S.P'*(S.L'\(S.R'\(S.Q'*b)));
        else
            x = S.Q*(S.R\(S.L\(S.P*b)));
        end
    otherwise
        
end