function aufg04f01_08

%AUFG04F01 berechnet und plottet den Fehler von Differenzenapproximationen.
%
%   AUFG04F01 berechnet und plottet den Fehler der beiden
%   zentralen Differenzenapproximationen
%
%      f''(x) approx. [ y(j+1)-2y(j)+y(j-1) ] / h^2
%
%   und
%
%      f''(x) approx. [-y(j+2)+16y(j+1)-30y(j)
%                       +16y(j-1)-y(j-2)] / 12 h^2 .
%
%   Die erste Formel zur Differenzenapproximation hat die
%   Ordnung 2, die zweite Formel hat die Ordnung 4.
%
%   AUFG04F01 ist Teil der Loesung von Aufgabe 5, Blatt 3
%   der Vorlesung 'Numerische Verfahren' von Prof. Voss. Die
%   Funktion arbeitet nur unter Matlab.
%
%   SEE ALSO:

%   $Author: zemke $
%   $Revision: 1.1 $
%   $Date: 2003/05/05 13:23:55 $
%   
%   vorher AUFG03F05

i = 1;

ddf1 = zeros(1,100);
ddf2 = zeros(1,100);
hvec = 10.^-linspace(0,8,100);

for h = hvec
   ddf1(i) = (    cos(1+h) ...
               -2*cos(1)   ...
                 +cos(1-h)) / (h^2);
   ddf2(i) = (   -cos(1+2*h) ...
              +16*cos(1+h)   ...
              -30*cos(1)     ...
              +16*cos(1-h)   ...
                 -cos(1-2*h)) / (12*h^2);
   i = i+1;
end;

% Steigungsdreieck
hs=[1e-2,1e-1]; dd1st=zeros(2,1); dd2st=zeros(2,1);
i=1;
for h=hs
    dd1st(i) = (    cos(1+h) ...
                -2*cos(1)   ...
                    +cos(1-h)) / (h^2);
   dd2st(i) = (   -cos(1+2*h) ...
              +16*cos(1+h)   ...
              -30*cos(1)     ...
              +16*cos(1-h)   ...
                 -cos(1-2*h)) / (12*h^2);
   i = i+1;
end
st1=(log10(dd1st(2)+cos(1))-log10(dd1st(1)+cos(1)))/(log10(hs(2))-log10(hs(1)));
st2=(log10(dd2st(2)+cos(1))-log10(dd2st(1)+cos(1)))/(log10(hs(2))-log10(hs(1)));

display('geschaetzte Ordnung fuer die erste Differenzenformel:')
st1
display('geschaetzte Ordnung fuer die zweite Differenzenformel:')
st2


% Plots der Fehlerfunktionen
subplot(1,2,1);
loglog(hvec,abs(ddf1+cos(1)),'g-',...
       hvec(1:50),(hvec(1:50)/5).^2,'r-');
subplot(1,2,2);
loglog(hvec,abs(ddf2+cos(1)),'g-',...
       hvec(1:33),(hvec(1:33)/4).^4,'r-');
