Simulation und Wissenschaftliches Rechnen 1 - Exam
Aufgabe 1)
Du bist mit den Grundlagen der Interpolation und Approximation vertraut gemacht worden. Bei dieser Aufgabe wirst Du aufgefordert, verschiedene Aspekte dieser Themen anzuwenden und zu vertiefen.
a)
a) Bestimme die lineare Interpolationsfunktion für die gegebenen Punkte \((x_1, y_1) = (1, 2)\) und \((x_2, y_2) = (3, 4)\). Schreibe die Gleichung der Geraden in der Form \( y = mx + b \).
Lösung:
- Um die lineare Interpolationsfunktion für die gegebenen Punkte \( (x_1, y_1) = (1, 2) \) und \( (x_2, y_2) = (3, 4) \) zu bestimmen, verwenden wir die allgemeine Form der Geradengleichung \( y = mx + b \).
- Schritt 1: Bestimme die Steigung \( m \). Die Steigung einer Geraden, die durch zwei Punkte \( (x_1, y_1) \) und \( (x_2, y_2) \) verläuft, kann mit der Formel \[\frac{y_2 - y_1}{x_2 - x_1}\] berechnet werden.Dabei sind \( (x_1, y_1) = (1, 2) \) und \( (x_2, y_2) = (3, 4) \). Also:\[ m = \frac{4 - 2}{3 - 1} = \frac{2}{2} = 1 \]
- Schritt 2: Bestimme den y-Achsenabschnitt \( b \). Um \( b \) zu finden, setzen wir einen der Punkte und die Steigung in die Geradengleichung ein und lösen nach \( b \) auf:\[ y_1 = mx_1 + b \]\[ 2 = 1 \times 1 + b \]\[ 2 = 1 + b \]\[ b = 1 \]
- Schritt 3: Schreibe die Gleichung der GeradenNun haben wir \( m = 1 \) und \( b = 1 \). Die Gleichung der Geraden lautet:\[ y = mx + b \]\[ y = 1x + 1 \]Das ist die lineare Interpolationsfunktion für die gegebenen Punkte.
b)
b) Entwickle ein Polynom 3. Grades, das für die Punkte \((1, 2), (2, 3), (3, 5), (4, 4)\) eine perfekte Interpolation liefert. Bestimme alle Koeffizienten des Polynoms.
Lösung:
- Ein Polynom 3. Grades hat die Form \( P(x) = ax^3 + bx^2 + cx + d \). Wir wollen die Koeffizienten \( a \), \( b \), \( c \) und \( d \) bestimmen, sodass das Polynom durch die Punkte \( (1, 2) \), \( (2, 3) \), \( (3, 5) \) und \( (4, 4) \) verläuft.
- Schritt 1: Stelle ein Gleichungssystem aufSetze die Punkte in die Polynomgleichung ein, um vier Gleichungen zu erhalten:
- Für \((x_1, y_1) = (1, 2)\):\[ a(1)^3 + b(1)^2 + c(1) + d = 2 \]\[ a + b + c + d = 2 \]
- Für \((x_2, y_2) = (2, 3)\):\[ a(2)^3 + b(2)^2 + c(2) + d = 3 \]\[ 8a + 4b + 2c + d = 3 \]
- Für \((x_3, y_3) = (3, 5)\):\[ a(3)^3 + b(3)^2 + c(3) + d = 5 \]\[ 27a + 9b + 3c + d = 5 \]
- Für \((x_4, y_4) = (4, 4)\):\[ a(4)^3 + b(4)^2 + c(4) + d = 4 \]\[ 64a + 16b + 4c + d = 4 \]
- Schritt 2: Löse das GleichungssystemJetzt haben wir das folgende lineare Gleichungssystem:
- \[ a + b + c + d = 2 \]
- \[ 8a + 4b + 2c + d = 3 \]
- \[ 27a + 9b + 3c + d = 5 \]
- \[ 64a + 16b + 4c + d = 4 \]
- Wir lösen dieses System, indem wir es der Reihe nach eliminieren:
- Ziehe die erste Gleichung von der zweiten ab:\[ 7a + 3b + c = 1 \]
- Ziehe die erste Gleichung von der dritten ab:\[ 26a + 8b + 2c = 3 \]
- Ziehe die erste Gleichung von der vierten ab:\[ 63a + 15b + 3c = 2 \]
- Wir haben nun ein reduziertes System:
- \[ a + b + c + d = 2 \]
- \[ 7a + 3b + c = 1 \]
- \[ 26a + 8b + 2c = 3 \]
- \[ 63a + 15b + 3c = 2 \]
- Ziehe die zweite Gleichung von der dritten ab:\[ 19a + 5b + c = 2 \]
- Ziehe die zweite Gleichung von der vierten ab:\[ 56a + 12b + 2c = 1 \]
Wir haben nun ein weiter reduziertes System:- \[ a + b + c + d = 2 \]
- \[ 7a + 3b + c = 1 \]
- \[ 19a + 5b + c = 2 \]
- \[ 56a + 12b + 2c = 1 \]
Ziehe die dritte Gleichung von der vierten ab:\[ 37a + 7b + c = -1 \]Wir haben nun ein endgultiges reduziertes System:- \[ a + b + c + d = 2 \]
- \[ 7a + 3b + c = 1 \]
- \[ 19a + 5b + c = 2 \]
- \[ 37a + 7b + c = -1 \]
Um die Kalkulation zu vereinfachen benutzen wir Determinante und inverse Matrix:- Die Koeffizienten-Matrix:
- \[ A=\begin{bmatrix} 1&1&1&1\ 8&4&2&1\ 27&9&3&1\ 64&16&4&1 \end{bmatrix} \]
- \[ A^{-1}=\begin{bmatrix} \frac{1}{6}&-1&\frac{3}{2}&-\frac{2}{3}\ -1&0&4&-3\ \frac{11}{6}&-1&-\frac{27}{2}&\frac{3}{2}\ -1&1&-1&1 \end{bmatrix} \]
Die Lösung für (a, b, c, d):- \[ \begin{bmatrix} a\ b\ c\ d \end{bmatrix} = \begin{bmatrix} 1\ -9\ 25\ -15 \end{bmatrix} \]
Schritt 3: Schreibe das PolynomDas Polynom 3. Grades lautet:\[ P(x) = ax^3 + bx^2 + cx + d \]\[ P(x) = x^3 - 9x^2 + 25x - 15 \]Das ist das Polynom 3. Grades, das durch die gegebenen Punkte verläuft.c)
c) Erkläre die Spline-Interpolation: Warum wird sie häufig gegenüber der polynomialen Interpolation bevorzugt? Implementiere einen kubischen Spline für die Punkte \((1, 2), (2, 3), (3, 5), (4, 4)\). Nutze Python, um ein Skript zu erstellen, das den Spline berechnet und darstellt.
Lösung:
- Erklärung der Spline-InterpolationSpline-Interpolation ist eine Methode, die verwendet wird, um eine glatte Kurve durch eine Reihe von Datenpunkten zu ziehen. Im Gegensatz zur polynomialen Interpolation, die ein einziges Polynom nutzt, um alle Datenpunkte zu durchlaufen, verwendet die Spline-Interpolation Stücke von Polynomen niedrigen Grades, die bei den gegebenen Datenpunkten aneinandergefügt werden. Der am häufigsten verwendete Spline ist der kubische Spline, bei dem man für jedes Intervall der Datenpunkte ein Polynom dritten Grades verwendet.
- Vorteile der Spline-Interpolation gegenüber der polynomialen Interpolation
- Stabilität: Polynomiale Interpolation höherer Grade kann numerisch instabil sein und zu starken Schwingungen zwischen den Punkten führen (Runge-Phänomen).
- Glatte Übergänge: Spline-Interpolationen sorgen für glatte Übergänge zwischen den interpolierten Abschnitten, da sie die kontinuierlichen ersten und zweiten Ableitungen an den Knotenpunkten (den gegebenen Datenpunkten) sicherstellen.
- Anwendungsfreundlichkeit: Kubische Splines verwenden niedriggradige Polynome, die leichter zu berechnen und zu evaluieren sind als ein hohes Gradpolynom, das alle Datenpunkte umfasst.
- Implementierung eines kubischen Splines in PythonUm einen kubischen Spline für die Punkte (1, 2), (2, 3), (3, 5), (4, 4) zu berechnen und darzustellen, verwenden wir die Bibliothek SciPy.Hier ist ein Python-Skript, um den Spline zu berechnen und zu plotten:
import numpy as npfrom scipy.interpolate import CubicSplineimport matplotlib.pyplot as plt# Gegebene Punktex = np.array([1, 2, 3, 4])y = np.array([2, 3, 5, 4])# Kubischen Spline berechnencs = CubicSpline(x, y)# Feines Raster zum Plottenx_fine = np.linspace(1, 4, 100)y_fine = cs(x_fine)# Plotplt.figure(figsize=(10, 5))plt.plot(x, y, 'o', label='Gegebene Punkte')plt.plot(x_fine, y_fine, label='Kubischer Spline')plt.legend()plt.xlabel('x')plt.ylabel('y')plt.title('Kubische Spline-Interpolation')plt.grid(True)plt.show()
In dem obigen Skript:- Importieren wir die notwendigen Bibliotheken.
- Definieren wir die gegebenen Datenpunkte als Arrays.
- Berechnen wir den kubischen Spline mit der Funktion
CubicSpline
aus der SciPy-Bibliothek. - Erstellen wir ein feines Raster von Werten für das Plotten des Splines.
- Erstellen wir den Plot und stellen sowohl die gegebenen Punkte als auch die kubische Spline-Interpolation dar.
d)
d) Verwende die Methode der kleinsten Quadrate, um eine lineare Funktion \( y = ax + b \) zu finden, die die Punkte \((1, 1), (2, 2.1), (3, 2.9), (4, 4.2)\) bestmöglich approximiert. Zeige die Detailrechnungen, einschließlich des Systems der Normalgleichungen und der Berechnung der Parameter \(a\) und \(b\).
Lösung:
- Erklärung der Methode der kleinsten QuadrateDie Methode der kleinsten Quadrate wird verwendet, um die beste Anpassung einer Funktion an eine Menge von Datenpunkten zu finden, indem die Summe der Quadrate der Abweichungen (Fehler) zwischen den tatsächlichen Datenpunkten und den Werten der Funktion minimiert wird.
- Für eine lineare Funktion \( y = ax + b \) und eine Menge von Punkten \( (x_1, y_1), (x_2, y_2), ..., (x_n, y_n) \) besteht das Ziel darin, die Parameter \( a \) und \( b \) zu finden, die die Summe der Quadrate der vertikalen Abstände zwischen den Datenpunkten und der Linie minimieren.
- Gegebene Punkte: \( (1, 1) \), \( (2, 2.1) \), \( (3, 2.9) \), \( (4, 4.2) \)
- Schritt 1: Formuliere das System der NormalgleichungenDie Normalgleichungen für die Methode der kleinsten Quadrate haben die Form:\[ a \sum x_i^2 + b \sum x_i = \sum x_i y_i \]\[ a \sum x_i + nb = \sum y_i \]Berechne die einzelnen Summen:
- \( \sum x_i = 1 + 2 + 3 + 4 = 10 \)
- \( \sum y_i = 1 + 2.1 + 2.9 + 4.2 = 10.2 \)
- \( \sum x_i^2 = 1^2 + 2^2 + 3^2 + 4^2 = 1 + 4 + 9 + 16 = 30 \)
- \( \sum x_i y_i = 1(1) + 2(2.1) + 3(2.9) + 4(4.2) = 1 + 4.2 + 8.7 + 16.8 = 30.7 \)
- Nun setze die Summen in die Normalgleichungen ein:1. \( 30a + 10b = 30.7 \)2. \( 10a + 4b = 10.2 \)
- Schritt 2: Löse das GleichungssystemWir erhalten das folgende lineare Gleichungssystem:
- \( 30a + 10b = 30.7 \) (Gleichung 1)
- \( 10a + 4b = 10.2 \) (Gleichung 2)
- Löse Gleichung 2 nach \( b \) auf:\( b = \frac{10.2 - 10a}{4} = 2.55 - 2.5a \)
Löse \( b \) in Gleichung 1:- \( 30a + 10(2.55 - 2.5a) = 30.7 \) \( 30a + 25.5 - 25a = 30.7 \)\( 30a - 25a = 30.7 - 25.5 \)\( 5a = 5.2 \)\( a = 1.04 \)
- Setze \( a \) in Gleichung 2 ein:\( b = 2.55 - 2.5a \) \( b = 2.55 - 2.5(1.04) \) \( b = 2.55 - 2.6 \) \( b = -0.05 \)
- Schritt 3: Schreiben die lineare FunktionDie besten Anpassungsparameter für die lineare Funktion sind \( a = 1.04 \) und \( b = -0.05 \). Die lineare Funktion lautet somit:\( y = 1.04x - 0.05 \)
Aufgabe 2)
Du möchtest ein numerisches Verfahren zur Lösung einer gewöhnlichen Differentialgleichung (ODE) verwenden und wurdest gefragt, die Fehleranalyse sowie die Stabilität des Verfahrens zu beurteilen. Dein Ziel ist es, die Genauigkeit des Verfahrens zu überprüfen und die Fehlerpropagation zu untersuchen.
a)
Beschreibe ausführlich die verschiedenen Arten von Fehlern, die bei numerischen Verfahren auftreten können. Erkläre insbesondere die Unterschiede zwischen Rundungsfehlern und Diskretisierungsfehlern.
Lösung:
Fehlerarten in numerischen Verfahren
- Rundungsfehler: Rundungsfehler entstehen durch die begrenzte Genauigkeit der Darstellung von Zahlen in einem Computer. Da Computer nur eine endliche Anzahl von Dezimal- bzw. Binärstellen speichern können, müssen Zahlen oft gerundet werden. Hierbei wird die Zahl auf eine näher liegende Darstellungsform innerhalb des verfügbaren Speicherplatzes gerundet. Dies führt zu kleinen Abweichungen zwischen der exakten mathematischen Zahl und ihrer numerischen Darstellung. Diese Fehler können sich bei vielen Berechnungsschritten aufsummieren und die Genauigkeit des Endergebnisses beeinträchtigen. Beispiele für Rundungsfehler:
- Fehler durch begrenzte Mantissenlänge: Bei Gleitpunktzahlen beträgt die Mantisse eine feste Anzahl von Stellen, was zu einer Beschränkung der Genauigkeit führt.
- Kumulative Rundungsfehler: Wiederholtes Addieren oder Subtrahieren von Zahlen kann zu einer Akkumulation von Rundungsfehlern führen.
- Diskretisierungsfehler: Diskretisierungsfehler entstehen durch die Approximation kontinuierlicher mathematischer Modelle mittels diskreter numerischer Verfahren. Dies geschieht beispielsweise bei der Lösung von Differenzialgleichungen, wo Zeit- oder Raumintervalle in diskrete Schritten umgewandelt werden. Die Unterschiede zwischen der kontinuierlichen und der diskreten Darstellung führen zu Diskretisierungsfehlern. Diese Fehler sind oft systematischer Natur und hängen von der Wahl der Schrittweite oder des Diskretisierungsschemas ab. Mit kleineren Schrittweiten oder höheren Ordnungen des Verfahrens können diese Fehler in der Regel reduziert werden. Beispiele für Diskretisierungsfehler:
- Fehler durch endliche Differenzen: Bei der numerischen Differenzierung wird die Ableitung durch Differenzenquotienten angenähert, was zu einem Fehler führt.
- Fehler durch Zeitschrittweite: Bei der Integration von ODEs führt eine größere Zeitschrittweite zu einer geringeren Genauigkeit und höheren Fehlern.
- Unterschiede zwischen Rundungsfehlern und Diskretisierungsfehlern:
- Ursachen: Rundungsfehler entstehen durch Beschränkungen der numerischen Darstellung im Computer, während Diskretisierungsfehler durch die Approximation kontinuierlicher Modelle entstehen.
- Abhängigkeit: Rundungsfehler sind von der Implementierung der Zahlen im Computer und der Anzahl der durchgeführten Berechnungsschritte abhängig. Diskretisierungsfehler hängen hauptsächlich von der gewählten Schrittweite oder dem Diskretisierungsschema ab.
- Behebung: Rundungsfehler können durch die Verwendung von Datentypen mit höherer Genauigkeit (z.B. Double Precision) reduziert werden, während Diskretisierungsfehler durch die Wahl kleinerer Schrittweiten oder höherer Ordnung des Verfahrens minimiert werden können.
b)
Betrachte das Verfahren des Eulerschen Vorwärtsschritts zur Lösung der Differentialgleichung \( \frac{dy}{dt} = -2y \) mit dem Anfangswert \( y(0) = 1 \). Berechne den Vorwärtsfehler nach einem Zeitschritt \( h = 0.1 \). Vergleiche die numerische Lösung mit der exakten Lösung.
Lösung:
Fehleranalyse des Eulerschen Vorwärtsschritts
Betrachten wir die Differentialgleichung:
\( \frac{dy}{dt} = -2y \)
mit dem Anfangswert:
\( y(0) = 1 \)
und dem Zeitschritt:
\( h = 0.1 \)
Berechnung der exakten Lösung
Die exakte Lösung dieser Differentialgleichung kann durch Separation der Variablen und Integration gefunden werden. Wir erhalten:
- Zunächst trennen wir die Variablen:
\( \frac{dy}{y} = -2 \, dt \)
- Integration beider Seiten:
\[ \int \frac{1}{y} \, dy = \int -2 \, dt \]
- Weiter vereinfachen:
\[ \ln|y| = -2t + C \]
- Nehmen wir den Exponentialwert beider Seiten:
\[ y = e^{-2t + C} \]
- Durch den Anfangswert \( y(0) = 1 \) erhalten wir:
\[ y(t) = e^{-2t} \]
Exakte Lösung nach einem Zeitschritt
Nach einem Zeitschritt, zu \( t = 0.1 \), erhalten wir:
\( y(0.1) = e^{-2 \times 0.1} = e^{-0.2} \).Unter Zuhilfenahme eines Taschenrechners oder eines Computerprogramms ergibt dies:
\( y_{\text{exakt}}(0.1) \approx 0.818730753 \)
Numerische Lösung mit dem Eulerschen Vorwärtsschritt
Das Eulersche Vorwärtsschritt-Verfahren lautet:
\[ y(t + h) \approx y(t) + h \, f(t, y(t)) \]
In diesem Fall ist:
\( f(t, y) = -2y \)
Daher berechnen wir:
- \( y_{\text{num}}(0.1) = y(0) + h \, (-2 \, y(0)) \)
- \( y_{\text{num}}(0.1) = 1 + 0.1 \, (-2 \, 1) = 1 - 0.2 = 0.8 \)
Vergleich der numerischen Lösung mit der exakten Lösung
Die numerische Lösung nach dem Eulerschen Vorwärtsschritt lautet:
\( y_{\text{num}}(0.1) = 0.8 \)
Die exakte Lösung ist:
\( y_{\text{exakt}}(0.1) \approx 0.818730753 \)
Der Vorwärtsfehler nach einem Zeitschritt \( h = 0.1 \) ist die Differenz zwischen der numerischen und der exakten Lösung:
- \( \text{Vorwärtsfehler} = y_{\text{exakt}} - y_{\text{num}} \)
- \( \text{Vorwärtsfehler} \approx 0.818730753 - 0.8 = 0.018730753 \)
Der Fehler nach einem Zeitschritt ist daher klein, jedoch nicht null. Dies zeigt, dass der Eulersche Vorwärtsschritt zwar ein einfaches und schnelles Verfahren ist, jedoch einen gewissen Fehler aufweist. Dieser Fehler kann durch Verkleinerung des Zeitschritts \( h \) reduziert werden.
c)
Diskutiere die Bedeutung der Konditionszahl eines Problems im Kontext der numerischen Stabilität. Wie beeinflusst eine hohe Konditionszahl die Ergebnisse eines numerischen Verfahrens?
Lösung:
Bedeutung der Konditionszahl im Kontext der numerischen Stabilität
Die Konditionszahl eines Problems ist ein Maß für dessen Sensitivität gegenüber kleinen Änderungen in den Eingangswerten oder anfänglichen Bedingungen. In mathematischer Hinsicht gibt die Konditionszahl an, wie stark sich die Lösung eines Problems relativ zu kleinen Störungen in den Eingangsdaten verändert.
Definition
Betrachten wir ein Problem in der Form:
\[ y = f(x) \]
Die Konditionszahl \( \text{cond}(x) \) ist folgendermaßen definiert:
\[ \text{cond}(x) = \frac{| f'(x) | \times | x |}{| f(x) |} \]
Hierbei ist \( f'(x) \) die Ableitung von \( f(x) \) mit Respekt zur Variablen \( x \). Diese Definition zeigt uns, wie stark die Änderung der Lösung \( y \) relativ zur Änderung des Eingangswertes \( x \) ist.
Auswirkung hoher Konditionszahlen
Eine hohe Konditionszahl bedeutet, dass das Problem schlecht konditioniert ist. Dies hat folgende Auswirkungen:
- Empfindlichkeit gegenüber Störungen: Wenn die Konditionszahl hoch ist, führt schon eine kleine Änderung der Eingangsdaten zu großen Veränderungen in der Lösung. Das bedeutet, dass das numerische Verfahren sehr empfindlich gegenüber Rundungsfehlern und anderen numerischen Ungenauigkeiten ist.
- Fehlervergrößerung: Bei schlecht konditionierten Problemen werden Fehler, die durch Rundung oder Diskretisierung entstehen, stark vergrößert. Dies führt dazu, dass die endgültige Lösung erheblich von der exakten Lösung abweichen kann.
- Stabilitätsprobleme: Hohe Konditionszahlen können zu Stabilitätsproblemen in numerischen Verfahren führen. Instabiles Verhalten des Algorithmus kann auftreten, was zu inkonsistenten Ergebnissen oder numerischen Instabilitäten führt.
Beispiel
Ein typisches Beispiel für ein schlecht konditioniertes Problem ist die Lösung eines linearen Gleichungssystems mit einer Matrix, die eine hohe Konditionszahl hat. Wenn die Matrix nahezu singulär ist, können kleine Fehler bei den Koeffizienten die Lösung erheblich beeinträchtigen.
Fazit
- Die Konditionszahl eines Problems ist ein entscheidender Faktor für die Stabilität und Genauigkeit numerischer Verfahren.
- Eine hohe Konditionszahl deutet auf ein hohes Potenzial für Fehlervergrößerung und numerische Instabilität hin.
- Zur Verbesserung der numerischen Stabilität sollten gut konditionierte Probleme bevorzugt werden oder Techniken zur Reduzierung der Konditionszahl angewendet werden.
d)
Überprüfe die Stabilität des Eulerschen Verfahrens durch Untersuchung des Rückwärtsfehlers. Wie hängt die Stabilität von der Wahl der Schrittweite \( h \) ab?
Lösung:
Stabilitätsanalyse des Eulerschen Verfahrens durch Untersuchung des Rückwärtsfehlers
Um die Stabilität des Eulerschen Verfahrens zu überprüfen, betrachten wir den Rückwärtsfehler. Dieser Fehler gibt an, wie stark sich die Lösung aufgrund kleiner Änderungen der Eingangsdaten oder der Schrittweite ändern kann. Ein stabiles Verfahren sollte kleine Änderungen robust verarbeiten können.
Rückwärtsfehler
Bei der Untersuchung des Rückwärtsfehlers analysieren wir, wie sich Fehler in den Eingangsdaten und numerischen Berechnungen auf die Lösung auswirken. Der Rückwärtsfehler für den Euler’schen Vorwärtsschritt bezieht sich darauf, wie die exakte Lösung der modifizierten Anfangsbedingung mit der numerischen Lösung übereinstimmt. Dies hilft uns zu verstehen, wie Fehler in Daten und Verfahren das Ergebnis beeinflussen.
Untersuchung der Differentialgleichung
Betrachten wir die Differentialgleichung:
\( \frac{dy}{dt} = -2y \)
mit dem Anfangswert:
\( y(0) = 1 \)
und dem Zeitschritt:
\( h = 0.1 \)
Eulersches Vorwärtsschrittverfahren
Der Euler’sche Vorwärtsschritt zur numerischen Berechnung lautet:
\( y_{n+1} = y_n + h \, f(t_n, y_n) \)
Für unsere Differentialgleichung ist:
\( f(t, y) = -2y \)
Daher sieht der nächste Schritt wie folgt aus:
\( y_{n+1} = y_n + h (-2y_n) = y_n (1 - 2h) \)
Untersuchung der Stabilität
Um die Stabilität zu analysieren, prüfen wir, wie die Wahl der Schrittweite \( h \) die Lösung beeinflusst. Insbesondere wollen wir sicherstellen, dass kleine Fehler sich nicht exponentiell vergrößern.
Schrittweite und Stabilitätskriterium
Das bedeutet, dass die Stabilität des Eulerschen Verfahrens nur garantiert ist, wenn die Schrittweite \( h \) kleiner als 1 ist.
Fazit zur Stabilität
Die Stabilität des Euler’schen Verfahrens hängt entscheidend von der Wahl der Schrittweite \( h \) ab:
- Kleine Schrittweiten \( h < 1 \): Das Verfahren ist stabiler und die numerische Lösung konvergiert gegen die exakte Lösung.
- Große Schrittweiten (\( h \geq 1 \)): Dies kann zu Instabilitäten führen, in denen die Fehler exponentiell wachsen und die numerische Lösung von der exakten Lösung divergiert.
Ein sorgfältiges Wählen der Schrittweite ist daher essenziell, um die Genauigkeit und Stabilität der numerischen Lösung zu gewährleisten.
Aufgabe 4)
Finite-Elemente-Methode (FEM): Die Finite-Elemente-Methode ist ein numerisches Verfahren zur Lösung partieller Differentialgleichungen durch Diskretisierung. Das Verfahren umfasst mehrere Schritte, darunter die Definition des Problems auf einer Domäne \(\textbackslash Omega\), die Diskretisierung der Domäne in kleine, nicht überlappende Elemente, die Formulierung des Problems als Variationsproblem, die Approximation der Lösung durch Ansatzfunktionen (meist Polynomfunktionen), das Assemblement des globalen Systems von algebraischen Gleichungen und die numerische Lösung dieses Gleichungssystems.
a)
Gegeben sei die Differentialgleichung \( \frac{d^2u}{dx^2} = -f(x) \) auf der Domäne \([0,1]\) mit den Randbedingungen \(u(0) = 0\) und \(u(1) = 0\).
- Diskretisiere die Domäne \([0,1]\) in drei gleichgroße Elemente und beschreibe anschaulich die Wahl geeigneter Ansatzfunktionen.
- Formuliere das Variationsproblem zu obiger Gleichung und leite das dazugehörige System algebraischer Gleichungen her. Zeige die Schritte detailliert, indem Du die Basisfunktionen und ihre Ableitungen benutzt.
Lösung:
Finite-Elemente-Methode (FEM): Die Finite-Elemente-Methode ist ein numerisches Verfahren zur Lösung partieller Differentialgleichungen durch Diskretisierung. Das Verfahren umfasst mehrere Schritte, darunter die Definition des Problems auf einer Domäne \( \Omega \), die Diskretisierung der Domäne in kleine, nicht überlappende Elemente, die Formulierung des Problems als Variationsproblem, die Approximation der Lösung durch Ansatzfunktionen (meist Polynomfunktionen), das Assemblement des globalen Systems von algebraischen Gleichungen und die numerische Lösung dieses Gleichungssystems. Aufgabe: Gegeben sei die Differentialgleichung \( \frac{d^2u}{dx^2} = -f(x) \) auf der Domäne \([0,1]\) mit den Randbedingungen \( u(0) = 0 \) und \( u(1) = 0 \).
- Diskretisiere die Domäne \([0,1]\) in drei gleichgroße Elemente und beschreibe anschaulich die Wahl geeigneter Ansatzfunktionen.
- Formuliere das Variationsproblem zu obiger Gleichung und leite das dazugehörige System algebraischer Gleichungen her. Zeige die Schritte detailliert, indem Du die Basisfunktionen und ihre Ableitungen benutzt.
Lösung: - Diskretisierung der Domäne und Ansatzfunktionen: Wir teilen die Domäne \([0,1]\) in drei gleichgroße Elemente auf, sodass die Intervalle \([0, \frac{1}{3}]\), \([\frac{1}{3}, \frac{2}{3}]\) und \([\frac{2}{3}, 1]\) entstehen. Die Knotenpunkte dieser Elemente sind: \( x_0 = 0 \), \( x_1 = \frac{1}{3} \), \( x_2 = \frac{2}{3} \) und \( x_3 = 1 \). Wir wählen lineare Ansatzfunktionen (Basisfunktionen) \( \phi_i(x) \), die an den Knotenpunkten der Elemente den Wert 1 annehmen und an allen anderen Knotenpunkten den Wert 0. Dies bedeutet für die Knotenpunkte \( x_0, x_1, x_2, x_3 \) haben wir vier Basisfunktionen:
- \( \phi_0(x) = \begin{cases} \frac{x_1 - x}{x_1 - x_0}, & \text{falls} \; x_0 \leq x \leq x_1 \ 0, & \text{sonst} \end{cases} \)
- \( \phi_1(x) = \begin{cases} \frac{x - x_0}{x_1 - x_0}, & \text{falls} \; x_0 \leq x \leq x_1 \ \frac{x_2 - x}{x_2 - x_1}, & \text{falls} \; x_1 \leq x \leq x_2 \ 0, & \text{sonst} \end{cases} \)
- \( \phi_2(x) = \begin{cases} 0, & \text{falls} \; x \leq x_1 \ \frac{x - x_1}{x_2 - x_1}, & \text{falls} \; x_1 \leq x \leq x_2 \ \frac{x_3 - x}{x_3 - x_2}, & \text{falls} \; x_2 \leq x \leq x_3 \ 0, & \text{sonst} \end{cases} \)
- \( \phi_3(x) = \begin{cases} 0, & \text{falls} \; x \leq x_2 \ \frac{x - x_2}{x_3 - x_2}, & \text{falls} \; x_2 \leq x \leq x_3 \ 0, & \text{sonst} \end{cases} \)
- Formulierung des Variationsproblems: Wir multiplizieren die Differentialgleichung mit einer Testfunktion \( v \) (welche eine der Basisfunktionen \( \phi_i \) sein kann) und integrieren über die Domäne. Das Variationsproblem lautet dann:
- \( \int_0^1 \frac{d^2u}{dx^2}v \, dx = -\int_0^1 f(x)v(x) \, dx \)
- Da die zweite Ableitung der Ansatzfunktion \( u \) in schwacher Form betrachtet wird, wenden wir die partielle Integration an:
- \( \int_0^1 \frac{d^2u}{dx^2}v \, dx = \left[ \frac{du}{dx}v \right]_0^1 - \int_0^1 \frac{du}{dx} \frac{dv}{dx} \, dx \)
- Aufgrund der Randbedingungen \( u(0) = 0 \) und \( u(1) = 0 \) verschwinden die Randterme. Es bleibt:
- \( - \int_0^1 \frac{du}{dx} \frac{dv}{dx} \, dx = - \int_0^1 f(x)v(x) \, dx \)
- Indem wir die Ansatzfunktion \( u \) durch die Linearkombination der Basisfunktionen \( \phi_i \) ausdrücken, gilt:
- \( u \approx \sum_{i=0}^{3} c_i \phi_i \)
- Erweitern wir den Ausdruck, erhalten wir:
- \( \int_0^1 \sum_{i=0}^{3} c_i \frac{d \phi_i}{dx} \frac{d \phi_j}{dx} \, dx = \int_0^1 f(x) \phi_j (x) \, dx \)
- Dies führt zu einem System linearer Gleichungen der Form:
- \( \mathbf{K} \mathbf{c} = \mathbf{F} \)
- wobei \( K_{ij} = \int_0^1 \frac{d\phi_i}{dx} \frac{d\phi_j}{dx} \, dx \) und \( F_j = \int_0^1 f(x) \phi_j (x) \, dx \)
- Die Matrix \( \mathbf{K} \) ist die Steifigkeitsmatrix, und der Vektor \( \mathbf{F} \) ist der Lastvektor. Diese Gleichungen können numerisch gelöst werden, um die Koeffizienten \( c_i \) zu bestimmen und damit die Lösung \( u(x) \) zu approximieren.
b)
Löse das im ersten Aufgabenteil erhaltene System algebraischer Gleichungen numerisch und bestimme die approximierte Lösung \(u(x)\) an den Knotenpunkten.
- Stelle das System in Matrixform dar und beschreibe den Lösungsweg mittels geeigneter numerischer Verfahren.
- Wie verhält sich die Lösung, wenn die Anzahl der Elemente verdoppelt wird? Diskutiere den Einfluss der Netzverfeinerung auf die Lösungsgenauigkeit.
Lösung:
Finite-Elemente-Methode (FEM): Die Finite-Elemente-Methode ist ein numerisches Verfahren zur Lösung partieller Differentialgleichungen durch Diskretisierung. Das Verfahren umfasst mehrere Schritte, darunter die Definition des Problems auf einer Domäne \( \Omega \), die Diskretisierung der Domäne in kleine, nicht überlappende Elemente, die Formulierung des Problems als Variationsproblem, die Approximation der Lösung durch Ansatzfunktionen (meist Polynomfunktionen), das Assemblement des globalen Systems von algebraischen Gleichungen und die numerische Lösung dieses Gleichungssystems. Aufgabe: Gegeben sei die Differentialgleichung \( \frac{d^2u}{dx^2} = -f(x) \) auf der Domäne \([0,1]\) mit den Randbedingungen \( u(0) = 0 \) und \( u(1) = 0 \).
- Diskretisiere die Domäne \([0,1]\) in drei gleichgroße Elemente und beschreibe anschaulich die Wahl geeigneter Ansatzfunktionen.
- Formuliere das Variationsproblem zu obiger Gleichung und leite das dazugehörige System algebraischer Gleichungen her. Zeige die Schritte detailliert, indem Du die Basisfunktionen und ihre Ableitungen benutzt.
- Löse das im ersten Aufgabenteil erhaltene System algebraischer Gleichungen numerisch und bestimme die approximierte Lösung \( u(x) \) an den Knotenpunkten.
- Stelle das System in Matrixform dar und beschreibe den Lösungsweg mittels geeigneter numerischer Verfahren.
- Wie verhält sich die Lösung, wenn die Anzahl der Elemente verdoppelt wird? Diskutiere den Einfluss der Netzverfeinerung auf die Lösungsgenauigkeit.
Lösung: - Diskretisierung der Domäne und Ansatzfunktionen: (Wie vorher beschrieben)
- Formulierung des Variationsproblems: (Wie vorher beschrieben)
- Lösung des Systems algebraischer Gleichungen: Um das System zu lösen, schreiben wir es in Matrixform. Angenommen, wir haben die Steifigkeitsmatrix \( \mathbf{K} \) und den Lastvektor \( \mathbf{F} \) wie folgt definiert:
- Das System lässt sich in der Form \( \mathbf{K} \mathbf{c} = \mathbf{F} \) schreiben, wobei \( \mathbf{c} \) die unbekannten Koeffizienten enthält. Für unser Beispiel mit drei Elementen und vier Knotenpunkten, lautet das Gleichungssystem in Matrixform:
\[ \mathbf{K} = \begin{pmatrix} 2 & -1 & 0 \ -1 & 2 & -1 \ 0 & -1 & 2 \end{pmatrix} \]
\[ \mathbf{F} = \begin{pmatrix} F_1 \ F_2 \ F_3 \end{pmatrix} \]
\[ \mathbf{c} = \begin{pmatrix} c_1 \ c_2 \ c_3 \end{pmatrix} \]
Um dieses Gleichungssystem numerisch zu lösen, verwenden wir in der Regel Methoden wie die Gaußsche Eliminationsmethode oder iterative Verfahren wie GMRES (Generalized Minimal Residual) oder CG (Conjugate Gradient). Hier ist ein exemplarischer Lösungsweg mit der Gaußschen Eliminationsmethode: 1. Augmentiere die Matrix \( \mathbf{K} \) mit dem Vektor \( \mathbf{F} \), um die erweiterte Matrix zu erhalten. 2. Verwende Vorwärtselimination, um die Matrix in obere Dreiecksform zu bringen. 3. Verwende Rückwärtseinsetzung, um die Werte der unbekannten Koeffizienten \( c_i \) zu finden.
Einfluss der Verdoppelung der Anzahl der Elemente: Wenn die Anzahl der Elemente verdoppelt wird, erhöht sich die Anzahl der Knoten- und Ansatzpunkte, was zu einem feineren Netz führt. Je feiner das Netz, desto besser kann die Lösung approximiert werden, da die Ansatzfunktionen lokaler sind und der Fehler verringert wird. Ein feineres Netz erfordert mehr Rechenaufwand und Speicher, da die Dimension des Gleichungssystems zunimmt. - Die Genauigkeit der Lösung verbessert sich in der Regel mit der Netzverfeinerung, besonders bei Problemen mit starken Gradienten oder Singularitäten.
- Bei einer Verdopplung der Elemente verdoppeln sich auch die Anzahl der Knoten, und es entstehen mehr Gleichungen, die gelöst werden müssen.
- Allerdings verbessert sich die Lösungsgüte nur bis zu einem bestimmten Punkt, ab dem der zusätzliche Rechenaufwand keine signifikante Verbesserung der Lösung mehr bringt.
- Die Wahl der Anzahl der Elemente sollte daher immer im Verhältnis zu den verfügbaren Ressourcen und der gewünschten Genauigkeit stehen.
Durch eine Netzverfeinerung können daher detailliertere und präzisere Ergebnisse erzielt werden, jedoch zu Lasten eines höheren Rechenaufwands.