%% Stabilität
% Wir betrachten die Aufgabe der Bestimmung des Integrals I:=\int_0^1 f(x)\, dx,  f(x):=  \frac{x^{30}}{x+5}.
%  Dazu definieren wir
%  I_n:=\int_0^1 \frac{x^n}{x+5}\, dx, \quad n=0,1,2,\ldots,
% und somit I_0  =\ln \left(\frac65\right),  I=I_{30}.
% Es gilt die Rekursionsformel
% I_n+5\,I_{n-1}=\int^1_0\frac{x^n+5x^{n-1}}{x+5}\,dx=\int^1_0x^{n-1}\,dx=\frac1n.
%
% Mit dieser Rekursion lässt sich I=I_{30} aus I_0 bestimmen.
% Zur numerischen Berechnung von I ergibt sich folgendes Verfahren:
% Algorithmus 1:
% I_0=\ln \left(\frac65\right),  \quad  I_n = \frac{1}{n} - 5\,I_{n-1}~~\text{f\"ur}~n=1,\ldots,30,
% Diese Rekursion wird in MATLAB durchgeführt und die Ergebnisse werden gezeigt.

format long;
Istart=log(6/5)
for n=1:30
   if (n==1) Ialt=Istart; end;
   Ineu=1/n-5*Ialt
   Ialt=Ineu;
end
disp('----------------');
Approximation=Ineu
disp('----------------');

% Das Resultat ist offensichtlich sehr ungenau.
%% Aktivität:
%  Erklären Sie weshalb der Fehler in dieser Approximation sehr groß ist.
% Obige Rekursionsformel kann man auch rückwärts verwenden: I_{n-1}=\frac15(\frac{1}{n}-I_n). Man benötigt dann aber einen (künstlichen) Startwert J_N als Annäherung  für den unbekannten Wert I_N, N >30.  Weil \lim_{n \to \infty} I_n=0, wählen wir J_N=0.
% Hiermit ergibt sich folgendes alternative Verfahren:
% Algorithmus 2:
% Wähle N \in N}, N >30. Man bestimme
% J_N:=0,   \quad  J_{n-1} = \frac15 \left(\frac{1}{n} -  J_{n}\right) ~~\text{f\"ur}~n=N,\ldots,31.
% Der berechnete Wert J_{30} wird als Ännäherung für I_{30} genommen.
% Der Wert für N kann variert werden:

N=50
for n=N:-1:31
   if (n==N) Jalt=0; end;
   Jneu=1/5*(1/n-Jalt)
   Jalt=Jneu;
end
disp('----------------');
Approximation=Jneu

%%  Aktivität:
% Variieren Sie N und begründen Sie (siehe auch Buch) weshalb für N \geq 50 der Fehler in der berechneten Approximation die Größenordnung der Maschinengenauigkeit hat.
% Was kann man zu den Stabilitätseigenschaften der beiden Algorithmen sagen?