Ü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ückweisen numerischen Integration berechnet ($ts$ Teilintervalle). Benutzen Sie hierbei für in den einzelnen Teilintervallen die N=4 Integrationsregel. Die Klasse sollte drei überladene Konstruktoren besitzen. Der Standardkonstruktor berechnet hierbei das Integral in den Grenzen $[0,1]$ mit $ts=10$ Teilintervallen. Der Konstruktor mit zwei Argumenten lässt den Benutzer die Integrationsgrenzen $[a,b]$ festlegen und benutzt ebenfalls $ts=10$ Teilintervalle und der Konstruktor mit drei Argumenten lässt den Benutzer auch die Anzahl der Teilintervalle $ts$ frei wählen. Die zu integrierende Funktion lautet $f(x) = 10 \cdot e^{-x/5} \cdot \hbox{sin}(3 \, x)$ und soll als inline-Methode der Klasse definiert werden. 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)

Die im C++ Programm Lagrange_Polynom_Klasse_a.cpp implementierte Lagrange Polynom Klasse approximiert eine vorgegebene Funktion $f(x)$ (hier speziell $f(x)=1/x$ ) durch ein Lagrangepolynom. Wir nehmen jedoch im Folgenden an, dass die wirkliche Funktion $f(x)$ unbekannt ist, und wir lediglich an den Stützstellen die Funktionswerte kennen. Gegeben seien die folgenden x- und y-Werte der Stützstellen: $\vec{x} = \left( 1.1, 10.1, 12.9, 25.7, 40.5, 60.2, 95.1, 98.8 \right)$ und $\vec{y} = \left( 2.1, 41.5, 48.2, 35.2, 5.2 , 10.6, 27.5, 15.2 \right)$. Schreiben Sie die Lagrange Polynom Klasse um und berechnen Sie das Lagrange Polynom $P_7(x)$ im Teilintervall $[a,b]=[0,100]$ mittels eines C++ Programms und stellen es grafisch mittels Python dar.

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