import numpy as np
import matplotlib.pyplot as plt

# Physikalische Parameter
g = 9.81   # Erdbeschleunigung [m/s^2]
L = 1.0    # Pendellaenge [m]

# Kleinwinkelauslenkung in RAD (z.B. 10 Grad)
phi0_deg = 10.0
phi0 = np.deg2rad(phi0_deg)  # Anfangswinkel in rad

# Kreisfrequenz der harmonischen Näherung
omega0 = np.sqrt(g / L)

# Zeitachse: mehrere Perioden
T = 2.0 * np.pi / omega0       # Periodendauer
t_max = 5.0 * T                # z.B. 5 Perioden
t = np.linspace(0, t_max, 1000)

# Bewegungsgleichungen im Kleinwinkellimit
# Winkel (Weg)
phi = phi0 * np.cos(omega0 * t)

# Winkelgeschwindigkeit
phi_dot = -phi0 * omega0 * np.sin(omega0 * t)

# Winkelbeschleunigung
phi_ddot = -phi0 * omega0**2 * np.cos(omega0 * t)

# Tangentialer Weg (Bogenlaenge)
s = L * phi

# Tangentialgeschwindigkeit
v_tan = L * phi_dot

# Tangentialbeschleunigung
a_tan = L * phi_ddot

# 1) Weg-Zeit-Funktion (Winkel)
plt.figure()
plt.plot(t, phi)
plt.xlabel("Zeit t [s]")
plt.ylabel("Winkel phi(t) [rad]")
plt.title("Mathematisches Pendel (Kleinwinkelnäherung): Winkel-Zeit-Funktion")
plt.grid(True)

# Optional: Bogenlaenge s(t)
plt.figure()
plt.plot(t, s)
plt.xlabel("Zeit t [s]")
plt.ylabel("Bogenlaenge s(t) [m]")
plt.title("Mathematisches Pendel: Bogenlaenge s(t)")
plt.grid(True)

# 2) Geschwindigkeits-Zeit-Funktion (Winkelgeschwindigkeit)
plt.figure()
plt.plot(t, phi_dot)
plt.xlabel("Zeit t [s]")
plt.ylabel("Winkelgeschwindigkeit dphi/dt [rad/s]")
plt.title("Mathematisches Pendel: Winkelgeschwindigkeit-Zeit-Funktion")
plt.grid(True)

# Optional: Tangentialgeschwindigkeit
plt.figure()
plt.plot(t, v_tan)
plt.xlabel("Zeit t [s]")
plt.ylabel("Tangentialgeschwindigkeit v_tan(t) [m/s]")
plt.title("Mathematisches Pendel: Tangentialgeschwindigkeit")
plt.grid(True)

# 3) Beschleunigungs-Zeit-Funktion (Winkelbeschleunigung)
plt.figure()
plt.plot(t, phi_ddot)
plt.xlabel("Zeit t [s]")
plt.ylabel("Winkelbeschleunigung d2phi/dt2 [rad/s^2]")
plt.title("Mathematisches Pendel: Winkelbeschleunigung-Zeit-Funktion")
plt.grid(True)

# Optional: Tangentialbeschleunigung
plt.figure()
plt.plot(t, a_tan)
plt.xlabel("Zeit t [s]")
plt.ylabel("Tangentialbeschleunigung a_tan(t) [m/s^2]")
plt.title("Mathematisches Pendel: Tangentialbeschleunigung")
plt.grid(True)

plt.show()
