Ü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. Ist die hier benutzte Integrationsklasse sinnvoll, oder denken Sie, dass es vorteilhafter gewesen wäre, den Algorithmus der Integration lediglich in einer normalen C++ Funktion zu implementieren?

Aufgabe 2 (10 Punkte)

Im Unterpunkt C++ Container und die vector Klasse der Standardbibliothek hatten wir mittels des C++-Programms Mandelbrot.cpp die Mandelbrot-Menge berechnet. Lagern Sie den Kern-Algorithmus der Berechnung Mandelbrot-Menge in einer C++ Klasse aus. Mittels der Argumentenliste des Konstruktors der Klasse sollte man dabei einfach den gewünschten Zahlenraum der komplexen Zahlen $c = x +i \cdot y \in ℂ$ der Mandelbrot-Menge auswählen können.
Überprüfen Sie ihr Programm, indem Sie ihre Berechnungen mit den im Unterpunkt C++ Container und die vector Klasse der Standardbibliothek dargestellten Ergebnissen vergleichen. Erstellen Sie hierzu ebenfalls ein Bild mittels des Python-Skripts Mandelbrot.py, wobei Sie eine andere Farbskalierung Ihrer Wahl verwenden sollten (siehe Choosing Colormaps in Matplotlib). Stellen Sie zusätzlich den folgenden Bereich der Mandelbrot-Menge in einer geeigneten Auflösung dar (Re(c)$=x \in [-0.74675, -0.74575]$ und Im(c)$=y \in [0.098, 0.0991]$).

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