Übungsblatt Nr. 2

Aufgabe 1 (10 Punkte)

Die Eulersche Zahl $e$ kann mittels des folgenden Grenzwertes der Folge $(a_n)_{n \in ℕ}$ mit $a_n := \left( 1 + \frac{1}{n} \right)^n$ definiert werden: \[ \begin{equation} e = \lim \limits_{n \to \infty} \left( 1 + \frac{1}{n} \right)^n \end{equation} \] Überprüfen Sie dies, soweit es die Computergenauigkeit erlaubt, mittels eines C++ Programms.
Deklarieren Sie dazu zunächst zwei reellwertige Variablen der Datentypen float und double, die die zwei approximierte Werte der Eulerschen Zahl $e$ darstellen sollen. Zusätzlich deklarieren Sie eine Variable für die lange natürliche Zahl $n$, die Sie mit einem großen ganzzahligen Wert initialisieren (z.B. $n=10000$). Initialisieren Sie danach die zwei reellwertigen Variablen mit dem Zahlenwert der Folge $\left( 1 + \frac{1}{n} \right)^n$. [Bemerkung: Hierzu müssen Sie zuvor die Standardbibliothek <cmath> eingebunden haben, in der die Funktion "pow(...)" definiert ist (näheres siehe Die Standardbibliothek <cmath>).]
Vergleichen Sie am Ende des Programms die berechneten Zahlenwerte mittels einer formatierten Ausgabe. Geben Sie zusätzlich den Fehler (${\cal F} = e - e_{approx}$) mit 20 Nachkommastellen aus. [Bemerkung: Benutzen Sie hierbei für den wirklichen, exakten Wert von $e$, den in <cmath> definierten long double Zahlenwert "M_El" (M_El ist auf 18 Nachkommastellen genau).]
Vergrößern Sie nun den Wert von $n$ und betrachten Sie die berechneten Fehler - was fällt Ihnen auf? Wie genau können Sie die Zahl $e$ mittels der definierten Variablen bestimmen?

Aufgabe 2 (5 Punkte)

Berechnen Sie die folgenden Ausdrücke mittels eines C++ Programms und lassen Sie sich die berechneten Werte auf 10 und 20 Stellen genau ausgeben (benutzen Sie bei der Berechnung doppelte Maschinengenauigkeit). \[ \begin{equation} \frac{64}{128} \, , \quad \frac{2 \pi}{5} \, , \quad \hbox{cos}\left( \frac{\pi}{2} \right) \, , \quad e^{\left( 5.84^{-12} \right)} \, , \quad \hbox{ln}\left( e^{1.1} \right) \end{equation} \]

A2_3F.cpp
// Aufgabe 3 des Übungsblattes Nr.2
// Drei Fehler und viele unschöne Ausdrücke
#include <iostream>
#include <cmath>

int main(){
    int n;
    n = 0;
    double a = 0;
    a = pow(2,n);
    cout < a << endl;
    n = n + 1;
    a = pow(n,2);
    cout << a << endl;
    n = n + 1;
    a = pow(n,2);
    cout << a << endl;
    n = n + 1;
    a = pow(n,2);
    cout << a << endl;
}

Aufgabe 3 (5 Punkte)

Das neben stehende C++ Programm soll die Zahlenwerte der Folge $(a_n)_{n \in ℕ}$ mit $a_n := n^2$ für $n \in [0,1,2,3]$ ausgeben. Leider hat der Programmierer drei Fehler eingebaut und zusätzlich besteht das Programm aus vielen, nicht optimal programmierten Ausdrücken. Welche der Zeilen ist falsch und muss korrigiert werden und welche Stellen sind unschön programmiert? Wie würde ihr entsprechendes Programm aussehen? [Bemerkung: Bitte verwenden Sie an dieser Stelle noch nicht die C++ Anweisungen der while- oder for-Schleifen; diese werden erst in der nächsten Vorlesung behandelt]

Die Musterlösung der Aufgaben des Übungsblatts Nr. 2 finden Sie unter dem folgenden Link:
Musterlösung Übungsblatt Nr. 2