function Start

    globals;

% Gitterparameter
    a  = 0;                  % Gebeit ist (a,b)
    b  = 1;
    N  = 2^7;                % Anzahl der Zellen
    x  = linspace(a,b,N+1);  % Gitterpunkte
    h  = x(2)-x(1);          % Zellenbreite

% Regularisierungsparameter
    mue   = 1.0e-2;          % Signalglaettung
    ep    = 1.0e-3;          % |x| ~= sqrt(x^2 + ep^2)
    amax  = 2;               % alf in [0,amax]
    smax  = 21;              % Anzahl der Abtastungen fuer Liniensuche

% Abbruchskriterien fuer Iteration
    tol   = 1.0e-5;          % relative Abbruchstoleranz
    itmax = 1000;            % max Anzahl der Iterationen
    rmax  = 20;              % Anzahl der Relaxationen

% gewuenschte Methode
    Methode = 2;

% verrauschte Daten erstellen
    Beispiel = 2;
    switch Beispiel
        case 1
            N1 = round(N/4);
            N2 = round(N/2);
            N3 = round(3*N/4);
            x1 = x(N1:N3);
            f1 = 2.*x1-4;
            r1 = 0.1*randn(1,N1-1);
            r2 = 0.02*randn(1,N3-N1+1);
            r3 = 0.1*randn(1,N-N3+1);
            v  = [r1+ones(1,N1-1),r2+f1,r3+5*ones(1,N-N3+1)]';  %verrauschte Daten
        case 2
            N2 = round(N/2);
            v = zeros(N+1,1);
            v(N2:(N+1)) = 1;
            v = v + 0.1*randn(N+1,1);
    end

% Initialisierung der Abbildung
    h1 = figure(1); close(h1); h1 = figure(1);
    set(h1,'Position',[10 10 900 300]);

% linearer Anzsatz zum Vergleich
    u = zeros(N+1,1);
    KriegD;
    I = eye(N+1);
    u = (I + (ep*mue/h^2)*D) \ v;

% grafische Darsellung
    subplot(1,3,1)
    plot(x,v,'r',x,u,'g')
    xlabel('x')
    ylabel('u bzw. v')
    axis tight
    grid on
    legend('verrauscht','entrauscht','Location','Best')
    title('Entrauchen mit linearem Ansatz')

% Bericht der Parameter
    disp(['Methode ',num2str(Methode),' wird durchgefuehrt. (1, Abstieg, 2, Implizit, 3, Newton)'])
    disp(['mue = ',num2str(mue),', ep  = ',num2str(ep)]);

end
