Übungsblatt Nr. 8

Aufgabe 1 (10 Punkte)

Erstellen Sie eine Klasse, die das bestimmte Integral einer Funktion $f(x)$ in den Grenzen $[a,b]$ mittels einer stückweise numerischen Integration berechnet ($ts$ Teilintervalle). Benutzen Sie hierbei in den einzelnen Teilintervallen die N=4 Integrationsregel. Die Klasse sollte einen Konstruktor mit drei Argumenten (Integrationsgrenzen $[a,b]$ und Anzahl der Teilintervalle $ts$) besitzen und die folgenden Standardinitialisierungen verwenden: Grenzen $[0,1]$ mit $ts=10$. Definieren Sie die zu integrierende Funktion ( $f(x) = 10 \cdot e^{-x/5} \cdot \hbox{sin}(3 \, x)$ ) außerhalb der Klasse als eine inline-Methode. Der Algorithmus der eigentlichen Integration soll als eine, innerhalb der Klasse definierte, öffentliche Member-Funktion definiert werden. Erzeugen Sie dann im Hauptprogramm vier unterschiedliche Objekte (Instanzen der Klasse), wobei alle eine Integration der Funktion in den Grenzen $[a,b]=[1,2]$ berechnen sollten und die Unterschiedlichkeit lediglich in der Anzahl der Teilintervalle $ts$ besteht (benutzen Sie hierbei $ts=10$, $ts=50$, $ts=100$ und $ts=1000000$). Lassen Sie sich den berechneten Integralwert und den absoluten Fehler des Wertes zum wirklichen, analytischen Wert im Terminal ausgeben und diskutieren Sie die Ergebnisse.

Aufgabe 2 (10 Punkte)

In der Vorlesung 3, im Unterkapitel Anwendungsbeispiel: Folgen und Reihen, hatten wir die logistische Abbildung besprochen. Die logistische Gleichung ist die wohl meist betrachtete diskrete Gleichung im Zusammenhang mit chaotischem Verhalten. Um einen globalen Überblick über das Verhalten dieses teils-chaotischen Systems zu erhalten, erstellten wir mittels des C++ Programms Logi_AttrDiag.cpp ein Attraktordiagramm (Feigenbaum-Diagramm, siehe nebenstehende Abbildung). Die Abfolge von regulären und chaotischen Bereichen werden hierbei visualisiert, indem man die Folgenwerte als Funktion eines Systemparameters (hier der Bifurkationsparameter $a$) darstellt. Betrachtet man das nebenstehende Feigenbaum-Diagramm, so erkennt man, dass inmitten der chaotischen Bereiche einige Inseln der Ordnung auftreten. Vergrößert man die entsprechenden Bereiche (siehe blaues, grünes und rotes Rechteck in der nebenstehenden Abbildung), so zeigen sich weitere kleine Heugabel-Verzweigungen, bei denen eine Periodenverdopplung der periodischen Lösung auftritt und die ihrerseits wiederum den Weg in das Chaos aufzeigen. In diesem Zusammenhang spricht man von Selbstähnlichkeit und Skaleninvarianz der logistischen Abbildung.

Lagern Sie den Kern-Algorithmus der Berechnung des Feigenbaum-Diagramms in einer C++ Klasse aus. Mittels der Argumentenliste des Konstruktors der Klasse sollte man dabei einfach den gewünschten Visualisierungsbereich des Bifurkationsparameter $a$ auswählen können und gegebenenfalls Abänderungen an anderen Parametern, z.B. der Anzahl der dargestellten Folgenglieder $N$, machen können. Überprüfen Sie ihr Programm, indem Sie ihre Berechnungen mit denen im Unterpunkt Anwendungsbeispiel: Folgen und Reihen dargestellten Ergebnissen vergleichen ($a \in [2.8, 4.0]$ und $x_n \in [0, 1]$). Erstellen Sie hierzu ebenfalls ein Bild des Feigenbaum-Diagramms mittels des Python-Skripts PythonPlot_Logi_AttrDiag.py. Stellen Sie zusätzlich die in der nebenstehenden Abbildung gekennzeichneten Zoom-Bereiche des Feigenbaum-Diagramms dar ( Zoom 1 (blau): $a \in [3.52, 3.66]$ und $x_n \in [0.3, 0.4] \quad$ , $\quad$ Zoom 2 (rot): $a \in [3.62, 3.64]$ und $x_n \in [0.3, 0.31] \quad$ und $\quad$ Zoom 3 (grün): $a \in [3.835, 3.86]$ und $x_n \in [0.45, 0.54] $ ).

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