clear; clc; clf;
%% Numerik: Beispiel 1.3:

% Variablen 
N = 100; % N > 2 
ustar = [zeros(round(N/2),1); ones(N+1-round(N/2),1)];
v = ustar + 0.1*randn(N+1,1);
m = 0.0113; % m > 0, perfektes m durch Probieren
h = 1/N;
D = eye(N+1,N+1)*2; D(1,1) = 1; D(N+1,N+1) = 1;
for k = 2:N+1;
    D(k,k-1)=-1;
    D(k-1,k)=-1;
end

u = ((m/(h^2))*D + eye(N+1,N+1))\v; %Beziehung zwischen u und v wird durch das m bestimmt
% Ist m = 0, so ist u = v, f�r ein gro�es m gilt u = Mittelwert von v
% u soll zum entrauschten Signal ustar werden
% Plot
x = linspace(0,1,N+1);

subplot(1,2,1);
hold on;
plot(x,u,'b');
plot(x,ustar,'g');
plot(x,v,'m');
legend('u','ustar','v');
hold off;
title('bestes m');

%% Bei welchem m ist u noch berechenbar?
m1 = 1.e11; % "\" funktioniert noch
while isnan(u)==0;
    m1 = m1+1;
    u = ((m1/(h^2))*D + eye(N+1,N+1))\v;
    subplot(1,2,2);plot(x,ustar,'g',x,u,'b');input('?');
end

m2 = m1-3 % letztes m, bei dem "\" funktioniert
disp(m2);
u = ((m2/(h^2))*D + eye(N+1,N+1))\v;

subplot(1,2,2);
hold on;
plot(x,u,'b');
plot(x,ustar,'g');
plot(x,v,'m');
legend('u','ustar','v');
hold off;
title('gr��tes m bei "\"');
% Bei ca. m = 1000000000000000000 funktioniert der Befehl "\" nicht mehr.