Antwort mit KI erzeugt
Lösung zu Teilaufgabe (a): Symbolische Lösung
Die gegebene Differentialgleichung lautet:
\(2y'(x) + 3y(x) + \sin(5x) = 0\)
Um diese Differentialgleichung zu lösen, bringen wir sie zunächst auf die Standardform:
\(y'(x) = -\frac{3}{2}y(x) - \frac{1}{2}\sin(5x)\)
Diese Differentialgleichung ist eine lineare, inhomogene, erste Ordnung Differentialgleichung. Die Lösung lässt sich durch das Integrieren der homogenen Gleichung und das Finden einer partikulären Lösung für die inhomogene Gleichung zusammensetzen. Ich werde diese Schritte überspringen und direkt zur Lösung übergehen, die mittels der Methode der Variation der Konstanten oder einem anderen geeigneten Verfahren gefunden werden kann.
---
Lösung zu Teilaufgabe (b): Numerische Lösung mit dem Verfahren von Euler
Das Euler-Verfahren ist ein einfaches numerisches Verfahren zur Lösung von Anfangswertproblemen der Form \(y' = f(x, y)\). Es berechnet die Näherungswerte mit der Formel:
\(y_{n+1} = y_n + hf(x_n, y_n)\)
Dabei ist \(h\) die Schrittweite, \(x_n\) der n-te Wert von \(x\), \(!y_n\) der n-te Näherungswert für \(y(x_n)\), und \(f(x, y)\) die rechte Seite der gegebenen Differentialgleichung. Die Python-Implementation könnte wie folgt aussehen:
python
import numpy as np
import matplotlib.pyplot as plt
# Definitions
def f(x, y):
return -1.5*y - 0.5*np.sin(5*x)
def euler_method(f, x0, y0, h, x_end):
x_values = np.arange(x0, x_end + h, h)
y_values = np.zeros(len(x_values))
y_values[0] = y0
for i in range(1, len(x_values)):
y_values[i] = y_values[i - 1] + h*f(x_values[i - 1], y_values[i - 1])
return x_values, y_values
# Anfangsbedingungen
x0 = 0
y0 = 1
x_end = 2 * np.pi
# Verschiedene Schrittweiten
step_sizes = [0.1, 0.05, 0.01]
for h in step_sizes:
x_values, y_values = euler_method(f, x0, y0, h, x_end)
print(f'Schrittweite {h}: Näherungswert y(2π) = {y_values[-1]}')
# Sie müssen die exakte Lösung kennen, um die Abweichung zu berechnen.
In diesem Skript implementieren wir das Euler-Verfahren für die gegebene Differentialgleichung und testen es mit verschiedenen Schrittweiten. Um die Abweichungen zur exakten Lösung festzustellen, benötigt man jedoch die echte Lösung der Differentialgleichung in geschlossener Form.
---
Lösung zu Teilaufgabe (c): Numerische Lösung mit dem Verfahren von Heun
Das Verfahren von Heun (auch bekannt als verbessertes Euler-Verfahren) ist ein numerisches Verfahren der Ordnung 2 zur Lösung von Anfangswertproblemen. Es verbessert das Euler'sche Verfahren durch Einbeziehung eines zusätzlichen Terms, der auf der Steigung am Ende des Intervalls basiert:
python
def heun_method(f, x0, y0, h, x_end):
x_values = np.arange(x0, x_end + h, h)
y_values = np.zeros(len(x_values))
y_values[0] = y0
for i in range(1, len(x_values)):
y_predict = y_values[i - 1] + h*f(x_values[i - 1], y_values[i - 1])
y_values[i] = y_values[i - 1] + 0.5*h*(f(x_values[i - 1], y_values[i - 1]) + f(x_values[i], y_predict))
return x_values, y_values
# Wenden Sie Heun's Methode an, wie im Euler-Beispiel
Um die Tabelle der Abweichungen für das Verfahren von Heun zu erstellen, folgen Sie einem ähnlichen Prozedere wie beim Euler-Verfahren, verwenden jedoch die
heun_method
-Funktion anstelle der
euler_method
-Funktion.
---
Lösung zu Teilaufgabe (d): Verfahren von Euler für andere Differentialgleichung
Für die Differentialgleichung \(y'(x) - y(x) + \cos(2x) = 0\), lösen wir diese wie zuvor beschrieben mit dem Euler-Verfahren. Der einzige Unterschied zu unserem ursprünglichen Problem besteht in der Funktion \(f(x, y)\), welche wir entsprechend der neuen Differentialgleichung anpassen:
python
# Adjust the definition for the second differential equation
def f2(x, y):
return y - np.cos(2*x)
x0_d = 0
y0_d = 1
x_end_d = 4 * np.pi
h_d = 0.01 # Beispiel Schrittweite
x_values_d, y_values_d = euler_method(f2, x0_d, y0_d, h_d, x_end_d)
# Visualisierung
plt.plot(x_values_d, y_values_d, label="Numerische Lösung mit Euler")
plt.xlabel("x")
plt.ylabel("y")
plt.title("Numerische Lösung der Differentialgleichung")
plt.legend()
plt.show()
Dieses Skript löst die Differentialgleichung \(y'(x) - y(x) + \cos(2x) = 0\) mit einem Euler-Verfahren und stellt die Lösung graphisch dar, was zur Überprüfung der Genauigkeit des numerischen Verfahrens genutzt werden kann.