Übungsblatt Nr. 6

Aufgabe 1 (6.5 Punkte)

In der Aufgabe 4 des Übungsblattes Nr. 3 hatten wir die ersten 40 Zahlenwerte der Fibonacci-Folge mittels einer for-Schleife berechnet. Die Fibonacci-Folge $f_n, n=[1,2,3,...]$ wurde dabei durch folgendes rekursives Bildungsgesetz definiert: \[ \begin{equation} f_n = f_{n-1} + f_{n-2} \,\, , \quad \hbox{mit den Anfangswerten: } \, f_1 = f_2 = 1 \end{equation} \] Die Implementierung dieses Bildungsgesetzes in einem C++ Programm können wir nun eleganter, mittels eines eindimensionalen C++ Arrays formulieren. Dies hätte zusätzlich den Vorteil hätte, dass die Indexschreibweise der mathematischen Formulierung des Bildungsgesetzes in einer äquivalenten Darstellung im C++ Quelltext stehen würde, und somit die Verständlichkeit des Quelltextes erleichtert. Deklarieren Sie ein eindimensionales Array der Folgenglieder $f_n$ und speichern Sie sich die ersten 40 Fibonacci-Zahlen in diesem Array. Benutzen Sie bei der Implementierung des rekursiven Bildungsgesetzes einen Indexbasierten Zugriff auf die Elemente des Arrays. Zeigen Sie, dass das Verhältnis zweier aufeinanderfolgender Zahlen der Fibonacci-Folge ($\frac{f_n}{f_{n-1}}$) im Grenzwert $\lim \limits_{n \to \infty}$ gegen die irrationale Zahl des Goldenen Schnitts $\Phi \approx 1.618033988749894848204586834$ konvergiert. Bemerkung: Der Goldene Schnitt ist in vielen Bereichen der Mathematik, Kunst, Architektur und Biologie von Bedeutung (näheres siehe z.B. Wikipedia: Goldene Schnitt).

Aufgabe 2 (7 Punkte)

Berechnen Sie für die unten angegebenen Vektoren $\vec{a}$ und $\vec{b}$ die folgenden Größen: \[ \begin{equation} \vec{a} =\left( \begin{array}{ccc} 2.3 \\ -1.36 \\ 6.91 \end{array} \right) \quad , \quad \vec{b} =\left( \begin{array}{ccc} 10.3 \\ -4.34 \\ 5.3 \end{array} \right) \qquad , \quad \hbox{Skalarprodukt:} \,\, s = \vec{a} \cdot \vec{b} \quad , \quad \hbox{Kreuzprodukt:} \,\, \vec{c} = \vec{a} \times \vec{b} \end{equation} \] Definieren Sie dazu zwei eindimensionale C++ Arrays für die Vektoren $\vec{a}$ und $\vec{b}$ und berechnen Sie die das Skalar- und Kreuzprodukt der Vektoren möglichst mittels der folgenden Indexbasierten Ausdrücke \[ \begin{equation} \hbox{Skalarprodukt:} \,\, s = \vec{a} \cdot \vec{b} = \sum_{i=1}^3 a_i \, b_i , \qquad , \quad \hbox{Kreuzprodukt:} \,\, \vec{c} = \vec{a} \times \vec{b} = \sum_{i,j,k=1}^3 \epsilon_{ijk} \, a_i \, b_j \, \vec{e}_k \quad , \end{equation} \] wobei $\epsilon_{ijk}$ der total antisymmetrischer Tensor (auch Epsilon-Tensor bzw. Levi-Civita-Symbol) ist. Definieren Sie das Levi-Civita-Symbol bitte als ein mehrdimensionales C++ Array (der Epsilon-Tensor entspricht einer $(3 \times 3 \times 3)$-Matrix). Verwenden Sie bei der Implementierung des Skalar- und Kreuzproduktes sowohl eine Formulierung unter Zuhilfenahme eines Index-Zugriff auf die einzelnen Elemente, als auch eine Zeiger-basierte Zugriffsweise. Lassen Sie sich die berechneten Größen im Terminal ausgeben.

Aufgabe 3 (6.5 Punkte)

In der Vorlesung 4 im Unterpunkt Anwendungsbeispiel: Nullstellensuche einer Funktion hatten wir die Methode der Bisektion (das Intervallhalbierungsverfahren) und die Newton-Raphson Methode der Nullstellenermittlung vorgestellt. Die Newton-Raphson Methode stellte hierbei ein sehr effektives Verfahren zur Ermittlung einer Nullstelle dar, hatte jedoch den Nachteil, dass man neben der Funktion selbst auch noch die Ableitung $f^\prime(x)$ der Funktion benötigte. Da wir nun die Ableitung einer Funktion auch numerisch bestimmen können (siehe Teilkapitel Numerische Differentiation), können wir das Newton-Raphson Verfahren insofern abändern, dass der Benutzer lediglich die Funktion $f(x)$ definieren muss und die benötigte Ableitung, mittels der hergeleiteten Differentiationsregeln der numerischen Mathematik berechnet werden.
Schreiben Sie ein C++ Programm, welches die Newton-Raphson Methode zur Ermittlung einer Nullstelle benutzt und lediglich den Ausdruck der Funktion $f(x)$ benötigt (benutzen Sie speziell $f(x) = e^x - 20$). Für den approximativen Wert der Ableitung verwenden Sie bitte einerseits die 'Dreipunkte-Mittelpunkt-Formel' und die 'Fünfpunkte-Mittelpunkt-Formel' und zusätzlich vergleichen Sie die Ergebnisse mit einer Berechnung, die den analytischen Ausdruck für $f^\prime(x)$ benutzt. Lassen Sie sich die approximierten Nullstellenwerte der ersten 10 Iterationen dieser modifizierten Newton-Raphson Methode für die drei Varianten im Terminal ausgeben und geben Sie zusätzlich den relativen Fehler zum wirklichen Wert an. Benutzen Sie bei allen Varianten den geratenen Startwert $p_0 = 2$ bei der Nullstellenberechnung und einen h-Wert von $h = 0.1$ bei der approximativen Bestimmung der Ableitung.

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