%% Blatt 2 - Programmieraufgaben:
%% Maschinengenauigkeit & Differenzenquotienten (4 Punkte)
% Studi'name: Vorname Nachname
%% Maschinengenauigkeit
% Um die Maschinengenauigkeit \varepsilon der Zahlen in MATLAB zu bestimmen, wollen wir Bisektion verwenden. Dafür benutzen wir die folgende Definition: Die Maschinengenauigkeit \epsilon ist die grösste Maschinenzahl, für die die Maschinenzahlrechnung 1 + \epsilon die Maschinenzahl 1 ergibt.
% Dafür gehen Sie wie folgt for: Wir starten mit den Maschinenzahlen a := 0 und b := 1. Dann wissen wir, dass a \leq \epsilon < b gilt. Um \epsilon besser einschränken zu können, betrachten wir dann die Maschinenzahl m = (a+b)/2. Ergibt die Maschinenzahlrechnung 1 + m die Maschinenzahl 1, dann ersetzen wir a mit m; ansonsten ersetzen wir b mit m. Wir wiederholen diesen Schritt iterativ solange, bis a = (a+b)/2 gilt, weil dann a = \epsilon ist.

a = 0;
b = 1;
m = (a+b)/2;

% TODO

% MATLAB besitzt die Konstante eps, welche leicht anders definiert ist. Sie ist definiert als der Abstand zwischen der Maschinenzahl 1 und der nächstgrösseren Maschinenzahl. Es ist also 2\texttt{a} = 2\epsilon = \texttt{eps}.

eps
2*a
eps-2*a

%
%% Differenzenquotienten
% Sei f \colon (a,b) \to \mathbb{R} eine zweimal stetig differenzierbare Funktion. Um für x_0 \in (a,b) eine numerische Approximation der Ableitung f'(x_0) zu erhalten, berechnen wir für hinreichend kleines h > 0 die Vorwärtsdifferenz durch
%  (\delta_h^{+} f)(x_0) := \frac{f(x_0 + h) - f(x_0)}{h}
% beziehungsweise die zentrale Differenz durch
% (\delta_h^0 f)(x_0) := \frac{f(x_0 + h) - f(x_0 - h)}{2h} .
%
% Schreiben Sie hier am Ende dieses Live Scripts MATLAB-Funktionen
% df = diffQuotF(f, x0, h)
% und
% df = diffQuotC(f, x0, h) ,
% welche \delta_h^+ bzw. \delta_h^0 für die Funktion, die als funtion handle f übergeben wird, bei x0 mit h auswerten.
%
% Betrachten Sie die Funktion f(x) = sin(x) und berechnen Sie für h_i = 10^{-i}, i = 1, \dots, 12, die Ableitung im Punkt x_0 = 42 numerisch mit ihren MATLAB-Funktion diffQuotF beziehungsweise diffQuotC. Speichern Sie den absoluten Fehler der Approximation mit h_i zur analytischen Lösung f'(x_0) = cos(x_0) im i-ten Eintrag des Vektors errF beziehungsweise errC. Plotten Sie die absoluten Fehler gegen die Schrittweiten h_i in einen loglog-Plot; zum Vergleich sollen in diesem Plot auch die Raten h und h^2 gegen h eingezeichnet sein.

f = @(x) sin(x);
df = @(x) cos(x);

% TODO

%
% Funktionen:

% TODO: Funktionen diffQuotF & diffQuotC

