clc; clf; clear;

%Beispiel 3

N= 40; %N+1 dim des Vektors der Ausgangsdaten

%Ausgangswerte der Treppenfunktion

ustar = [zeros(round(N/2),1);ones(N+1-round(N/2),1)];

%Verrauschte Daten

v = ustar + 0.1*randn(N+1,1);

%Vektor zur Darstellung

x = linspace(0,1,N+1);

% Parameter y

y=0.11;

%% Bei y->0 nähert sich die approximierende Funktion immer mehr an v an,
%% bei y >> nähert sich die approximierende Funktion immer mehr dem
%% Mittelwert von v an


%Intervalllänge

h=1/N;


%Erstellen der Matrix D

%erste bzw. letzte Zeile der Matrix
D(1,1)=1;
D(1,2)=-1;
D(N+1,N+1)=1;
D(N+1,N)=-1;

%for-Schleife 

k=2; %laufender Paramter
b=[-1 2 -1 ];

for j=1:N-1  
D(k,k-1:k+1)=b;
k=k+1;
end



%Erstellen der Einheitsmatrix
a(1:1:N+1)=1;
I=diag(a);


%Berechnung der approximierenden Funktion

u=[(y/h)*D+I]\v;

%Darstellung der Funktionen

plot(x,ustar, 'b' ,x,v, 'r', x,u, 'g' );

legend('u*', 'v', 'u',2);

title 'Beispiel 3'



