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')