Übungsblatt 10, Vorlage der Darstellung einer 3D-Raumkurve¶

Einführung in die Programmierung für Studierende der Physik¶

(Introduction to Programming for Physicists)¶

Vorlesung gehalten an der J.W.Goethe-Universität in Frankfurt am Main¶

(Sommersemester 2025)¶

von Dr.phil.nat. Dr.rer.pol. Matthias Hanauske¶

Frankfurt am Main 13.06.2025¶

Wir betrachten im Folgenden die Darstellung einer Trajektorie der Lösungsfunktionen $x(t), y(t)$ und $z(t)$ in einem drei-dimensionalen $x,y,z$-Koordinatensystem. Die Lösungsfunktionen sollen dabei als numerische Zahlenwerte der Lösung eines gekoppelten Systems von Differentialgleichungen erster Ordnung gegeben sein.

In [1]:
import numpy as np
import matplotlib.pyplot as plt 
import matplotlib
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

In unserem Beispiel-Fall generieren wir die Beispiel-Zahlenwerte der Lösung zunächst. Es soll dabei die folgende Raumkurve betrachtet werden.

\begin{equation} x(t) = \frac{t}{30} \cdot \hbox{sin}\left( t \right) \, , \quad y(t) = \frac{t}{30} \cdot \hbox{sin}\left( t \right) \, , \quad z(t) = \frac{t}{50} \quad \forall \, t \in [0,50] \end{equation}
In [2]:
t_end = 50
N = 10000
t_val = np.linspace(0, t_end, N+1)
x = t_val*np.sin(t_val)/30
y = t_val*np.cos(t_val)/30
z = t_val/t_end

Wir stellen als Erstes die zeitliche Entwicklung der Funktionen $x(t) \, , \,\, y(t) \, , \,\, z(t)$ selbst dar.

In [3]:
params = {
    'figure.figsize'    : [11,5],
#    'text.usetex'       : True,
    'axes.titlesize' : 14,
    'axes.labelsize' : 16,  
    'xtick.labelsize' : 14 ,
    'ytick.labelsize' : 14 
}
matplotlib.rcParams.update(params)
In [4]:
plt.xlabel("t")
plt.ylabel("x,y,z")
plt.plot(t_val, x,c="blue", label="x");
plt.plot(t_val, y,c="green", label="y");
plt.plot(t_val, z,c="red", label="z");
plt.legend(loc='upper right',fontsize=16);

Die Trajektorie der Lösungsfunktionen $x(t), y(t)$ und $z(t)$ in einem drei-dimensionalen $x,y,z$-Koordinatensystem sieht wie folgt aus, wobei die Farbe den aktuellen Zeitwert kennzeichnet.

In [5]:
fig = plt.figure(figsize = (16, 9))
ax = fig.add_subplot(projection='3d')
bild = ax.scatter3D(x,y,z, marker='o', s=1, c = t_val, cmap=cm.gnuplot2)
ax.view_init(azim=-75, elev=20)
cbar = fig.colorbar(bild, shrink=0.6, aspect=15)
cbar.set_label(r"$\rm t$", rotation=270)
plt.title("Raumkurve")
ax.set_xlabel(r"$\rm x(t)$")
ax.set_ylabel(r"$\rm y(t)$")
ax.set_zlabel(r"$\rm z(t)$");