clear all
tol_max = 1e-10;
N = 10;


%%%%%%%%%%%%%%%%%% Beispiel 1:
f_1 = @(x)(1-x);                          % rechte Seite
sol_1 = @(x) -1/6*x.*(2 - 3*x + x.^2);    % exakte Lösung


%%%%%%%%%%%%%%%%%% Beispiel 2:
a=0.5;
c=100;
f_2 = @(x) c*(2*(2*a^2*c - 4*a*c*x + 2*c.*x.^2 - 1).*exp(-a^2*c + 2*a*c*x - c*x.^2));
sol_2 = @(x) (exp(-(x-a).^2*c) - exp(-(a).^2*c));

%%%%%%%%%%%%%%%%%% Löse Beispiel 1:
z_1 = FEM1D(f_1 , N);
x = linspace(0,1,N+1);
sol_dis_1 = sol_1(x)';
err = max(z_1 - sol_dis_1);
if(abs(err) > tol_max)
    error('Der Fehler ist bereits an den Stützstellen zu groß (Bsp. 1)!')
    disp('Differenz Näherung - exakte Lösung an den Gitterpunkten:\n')
    z_1 - sol_dis_1
end

%%%%%%%%%%%%%%%%%% Löse Beispiel 2:
z_2 = FEM1D(f_2 , N);
x = linspace(0,1,N+1);
sol_dis_2 = sol_2(x)';
err = max(z_2 - sol_dis_2);
if(abs(err) > tol_max)
    error('Der Fehler ist bereits an den Stützstellen zu groß (Bsp. 2)!')
    disp('Differenz Näherung - exakte Lösung an den Gitterpunkten:\n')
    z_2 - sol_dis_2
end


disp('Alles scheint in Ordnung zu sein!')

%%%%%%%%%%%%%%%%%% Grafische Darstellung
figure
plot(linspace(0,1,10*N+1),sol_1(linspace(0,1,10*N+1)),'k','LineWidth',2)
hold on
plot(x, z_1,'--r','LineWidth',1.5)
title('Bsp 1: Polynom')
legend('Exakte Lösung','Numerische Approximation')

figure
plot(linspace(0,1,10*N+1),sol_2(linspace(0,1,10*N+1)),'k','LineWidth',2)
hold on
plot(x, z_2,'--r','LineWidth',1.5)
title('Bsp 2: Exponentieller Peak')
legend('Exakte Lösung','Numerische Approximation')


