Zum Hauptinhalt springen

Beispiele

Beispiel 1: Schwach gedämpfter Oszillator

Problemstellung

Ein Masse-Feder-System mit \(m = 1\,\text{kg}\), \(k = 100\,\text{N/m}\) und \(c = 2\,\text{Ns/m}\) wird aus der Ruhelage um \(x_0 = 0.1\,\text{m}\) ausgelenkt und dann losgelassen. Bestimmen Sie die Bewegung des Systems.

Herleitung der Bewegungsgleichung

Abbildung 1 (a) zeigt den Aufbau: Die Masse \(m\) gleitet reibungsfrei auf einer Unterlage und ist über eine Feder mit Federkonstante \(k\) und einen parallel geschalteten Dämpfer mit Dämpfungskoeffizient \(c\) mit einer festen Wand verbunden. Die Koordinate \(x\) misst die Auslenkung der Masse aus der Ruhelage, in der die Feder entspannt ist.

Code
import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(7, 3.2), gridspec_kw={'width_ratios': [1.3, 1]})
lw, col = 1.5, 'k'

# --- (a) Aufbau: Wand, Feder, Dämpfer, Masse ---
ax1.set_xlim(-0.2, 7.2)
ax1.set_ylim(-0.6, 4.4)
ax1.set_aspect('equal')
ax1.axis('off')

# Wand und Unterlage mit Schraffur
ax1.plot([0.6, 0.6], [0.3, 3.9], color=col, lw=2)
for y in np.arange(0.5, 4.0, 0.4):
    ax1.plot([0.6, 0.25], [y, y - 0.3], color=col, lw=1)
ax1.plot([0.6, 6.8], [0.3, 0.3], color=col, lw=1.5)
for x in np.arange(0.9, 6.8, 0.4):
    ax1.plot([x, x - 0.3], [0.3, 0.0], color=col, lw=1)

def feder(ax, x0, x1, y, n=6, h=0.3):
    xs, ys = [x0, x0 + 0.3], [y, y]
    dx = (x1 - x0 - 0.6) / (2 * n)
    for i in range(2 * n):
        xs.append(x0 + 0.3 + (i + 0.5) * dx)
        ys.append(y + h if i % 2 == 0 else y - h)
    xs += [x1 - 0.3, x1]
    ys += [y, y]
    ax.plot(xs, ys, color=col, lw=lw)

# Feder (oben) und Dämpfer (unten) zwischen Wand und Masse
xm = 3.6  # linke Kante der Masse
feder(ax1, 0.6, xm, 3.0)
ax1.text(2.1, 3.55, '$k$', ha='center', fontsize=12)

yd = 1.4
ax1.plot([0.6, 1.6], [yd, yd], color=col, lw=lw)
ax1.plot([1.6, 2.5, 2.5, 1.6], [yd + 0.35, yd + 0.35, yd - 0.35, yd - 0.35], color=col, lw=lw)
ax1.plot([2.2, 2.2], [yd + 0.3, yd - 0.3], color=col, lw=lw)
ax1.plot([2.2, xm], [yd, yd], color=col, lw=lw)
ax1.text(2.1, 0.55, '$c$', ha='center', fontsize=12)

# Masse
ax1.add_patch(plt.Rectangle((xm, 0.3), 1.4, 3.5, facecolor='lightgray', edgecolor=col, lw=lw))
ax1.text(xm + 0.7, 2.05, '$m$', ha='center', va='center', fontsize=13)

# Ruhelage und Koordinate x
ax1.plot([xm + 0.7, xm + 0.7], [3.8, 4.3], color='gray', lw=1, ls='--')
ax1.annotate('', xy=(6.6, 4.1), xytext=(xm + 0.7, 4.1),
             arrowprops=dict(arrowstyle='->', color=col, lw=1.2))
ax1.text(6.0, 4.25, '$x$', ha='center', fontsize=12)
ax1.text(xm + 0.7, 4.4, '$x = 0$', ha='center', fontsize=9, color='gray')
ax1.text(-0.1, 4.1, '(a)', fontsize=12, fontweight='bold')

# --- (b) Freikörperbild ---
ax2.set_xlim(-3.6, 3.6)
ax2.set_ylim(-0.6, 4.4)
ax2.set_aspect('equal')
ax2.axis('off')

ax2.add_patch(plt.Rectangle((-0.7, 0.3), 1.4, 3.5, facecolor='lightgray', edgecolor=col, lw=lw))
ax2.text(0, 2.05, '$m$', ha='center', va='center', fontsize=13)

# Federkraft und Dämpfungskraft wirken nach links
ax2.annotate('', xy=(-3.1, 2.9), xytext=(-0.7, 2.9),
             arrowprops=dict(arrowstyle='-|>', color='red', lw=2, mutation_scale=18))
ax2.text(-1.9, 3.15, r'$F_\mathrm{k} = -kx$', ha='center', fontsize=11, color='red')
ax2.annotate('', xy=(-3.1, 1.2), xytext=(-0.7, 1.2),
             arrowprops=dict(arrowstyle='-|>', color='blue', lw=2, mutation_scale=18))
ax2.text(-1.9, 0.5, r'$F_\mathrm{d} = -c\dot{x}$', ha='center', fontsize=11, color='blue')

# Auslenkung und Geschwindigkeit zeigen nach rechts
ax2.annotate('', xy=(2.6, 2.9), xytext=(0.7, 2.9),
             arrowprops=dict(arrowstyle='->', color='gray', lw=1.5))
ax2.text(1.65, 3.15, '$x > 0$', ha='center', fontsize=10, color='gray')
ax2.annotate('', xy=(2.6, 1.2), xytext=(0.7, 1.2),
             arrowprops=dict(arrowstyle='->', color='gray', lw=1.5))
ax2.text(1.65, 0.5, r'$\dot{x} > 0$', ha='center', fontsize=10, color='gray')
ax2.text(-3.5, 4.1, '(b)', fontsize=12, fontweight='bold')

plt.tight_layout()
plt.show()
Abbildung 1: Feder-Masse-Dämpfer-System. (a) Aufbau: Feder \(k\) und Dämpfer \(c\) verbinden die Masse \(m\) mit einer festen Wand; \(x\) misst die Auslenkung aus der Ruhelage \(x = 0\). (b) Freikörperbild der Masse bei positiver Auslenkung und positiver Geschwindigkeit: Federkraft \(F_\mathrm{k} = -kx\) und Dämpfungskraft \(F_\mathrm{d} = -c\dot{x}\) wirken beide entgegen der \(x\)-Richtung.

Auf die Masse wirken in \(x\)-Richtung zwei Kräfte, die Abbildung 1 (b) im Freikörperbild zeigt. Die Feder übt nach dem Hookeschen Gesetz die rücktreibende Kraft \[ F_\mathrm{k} = -kx \] aus; sie ist der Auslenkung entgegengerichtet. Der Dämpfer erzeugt eine Kraft, die der Bewegung entgegenwirkt und bei viskoser Reibung proportional zur Geschwindigkeit ist: \[ F_\mathrm{d} = -c\dot{x} \] Das zweite Newtonsche Gesetz \(m\ddot{x} = F_\mathrm{k} + F_\mathrm{d}\) liefert: \[ m\ddot{x} = -kx - c\dot{x} \qquad\Longleftrightarrow\qquad m\ddot{x} + c\dot{x} + kx = 0 \tag{1}\]

Das ist die Bewegungsgleichung des gedämpften harmonischen Oszillators aus dem Konzepte-Teil. In Kapitel 1 haben wir dieselbe Bilanz mit einer zusätzlichen äußeren Kraft \(F(t)\) aufgestellt und anschließend den Trägheitsterm \(m\ddot{x}\) vernachlässigt. Hier ist er der entscheidende Term, denn ohne ihn gibt es keine Schwingung. Die Problemstellung liefert die Anfangsbedingungen \(x(0) = x_0 = 0.1\,\text{m}\) (Auslenkung) und \(\dot{x}(0) = 0\) (Loslassen aus der Ruhe).

Lösung

Division durch \(m\) bringt Gleichung 1 auf die Standardform \(\ddot{x} + 2\gamma\dot{x} + \omega_0^2 x = 0\). Zunächst berechnen wir die charakteristischen Parameter: \[ \omega_0 = \sqrt{\frac{k}{m}} = \sqrt{\frac{100}{1}} = 10\,\text{rad/s} \]

\[ \gamma = \frac{c}{2m} = \frac{2}{2 \cdot 1} = 1\,\text{s}^{-1} \]

Da \(\gamma = 1 < \omega_0 = 10\), liegt schwache Dämpfung vor. Die gedämpfte Frequenz ist: \[ \omega_\mathrm{d} = \sqrt{\omega_0^2 - \gamma^2} = \sqrt{100 - 1} = \sqrt{99} \approx 9.95\,\text{rad/s} \]

Die allgemeine Lösung für schwache Dämpfung lautet: \[ x(t) = A e^{-\gamma t} \cos(\omega_\mathrm{d} t + \phi) \]

Mit den Anfangsbedingungen \(x(0) = 0.1\) und \(\dot{x}(0) = 0\) ergibt sich aus \(\dot{x}(0) = -A(\gamma\cos\phi + \omega_\mathrm{d}\sin\phi) = 0\) die Bedingung \(\tan\phi = -\gamma/\omega_\mathrm{d} \approx -0.1\), also \(\phi \approx -0.1\) und \(A = x(0)/\cos\phi \approx 0.1005\,\text{m}\). Da die Dämpfung schwach ist (\(\gamma \ll \omega_0\)), gilt in guter Näherung: \[ A \approx 0.1\,\text{m}, \quad \phi \approx 0 \]

Die Lösung ist daher näherungsweise: \[ x(t) \approx 0.1 e^{-t} \cos(9.95t)\,\text{m} \]

Code
import numpy as np
import matplotlib.pyplot as plt

# Parameter
m = 1.0  # kg
k = 100.0  # N/m
c = 2.0  # Ns/m

omega_0 = np.sqrt(k/m)
gamma = c/(2*m)
omega_d = np.sqrt(omega_0**2 - gamma**2)

# Anfangsbedingungen
x0 = 0.1  # m
v0 = 0.0  # m/s

# Zeit
t = np.linspace(0, 5, 1000)

# Lösung
x = x0 * np.exp(-gamma * t) * np.cos(omega_d * t)

# Einhüllende
envelope_upper = x0 * np.exp(-gamma * t)
envelope_lower = -x0 * np.exp(-gamma * t)

plt.figure(figsize=(7, 4))
plt.plot(t, x, 'b-', linewidth=2, label='$x(t)$')
plt.plot(t, envelope_upper, 'r--', linewidth=1.5, alpha=0.7, label='Einhüllende')
plt.plot(t, envelope_lower, 'r--', linewidth=1.5, alpha=0.7)
plt.axhline(y=0, color='k', linestyle='-', linewidth=0.5)
plt.xlabel('Zeit $t$ (s)', fontsize=12)
plt.ylabel('Auslenkung $x(t)$ (m)', fontsize=12)
plt.title('Schwach gedämpfter Oszillator', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=11)
plt.show()
Abbildung 2: Schwach gedämpfter harmonischer Oszillator

Beispiel 2: Stark gedämpfter Oszillator

Problemstellung

Dasselbe System wie oben, aber mit erhöhter Dämpfung \(c = 30\,\text{Ns/m}\).

Lösung

Die charakteristischen Parameter sind: \[ \omega_0 = 10\,\text{rad/s}, \quad \gamma = \frac{30}{2} = 15\,\text{s}^{-1} \]

Da \(\gamma = 15 > \omega_0 = 10\), liegt starke Dämpfung vor. Die Lösungen der charakteristischen Gleichung sind: \[ \lambda_{1,2} = -\gamma \pm \sqrt{\gamma^2 - \omega_0^2} = -15 \pm \sqrt{225 - 100} = -15 \pm \sqrt{125} \]

\[ \lambda_1 \approx -3.82, \quad \lambda_2 \approx -26.18 \]

Die allgemeine Lösung lautet: \[ x(t) = C_1 e^{\lambda_1 t} + C_2 e^{\lambda_2 t} \]

Mit den Anfangsbedingungen \(x(0) = 0.1\) und \(\dot{x}(0) = 0\) ergibt sich nach Einsetzen: \[ x(t) = 0.117 e^{-3.82t} - 0.017 e^{-26.18t}\,\text{m} \]

Code
import numpy as np
import matplotlib.pyplot as plt

# Parameter für starke Dämpfung
m = 1.0
k = 100.0
c = 30.0

omega_0 = np.sqrt(k/m)
gamma = c/(2*m)

# Charakteristische Werte
lambda1 = -gamma + np.sqrt(gamma**2 - omega_0**2)
lambda2 = -gamma - np.sqrt(gamma**2 - omega_0**2)

# Anfangsbedingungen
x0 = 0.1
v0 = 0.0

# Koeffizienten aus Anfangsbedingungen
C2 = (v0 - lambda1*x0)/(lambda2 - lambda1)
C1 = x0 - C2

# Zeit
t = np.linspace(0, 2, 1000)

# Lösung
x = C1 * np.exp(lambda1 * t) + C2 * np.exp(lambda2 * t)

plt.figure(figsize=(7, 4))
plt.plot(t, x, 'b-', linewidth=2, label='$x(t)$')
plt.axhline(y=0, color='k', linestyle='-', linewidth=0.5)
plt.xlabel('Zeit $t$ (s)', fontsize=12)
plt.ylabel('Auslenkung $x(t)$ (m)', fontsize=12)
plt.title('Stark gedämpfter Oszillator (Kriechfall)', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=11)
plt.show()
Abbildung 3: Stark gedämpfter harmonischer Oszillator

Beispiel 3: Kritisch gedämpfter Oszillator

Problemstellung

Das System mit kritischer Dämpfung \(c = 2\sqrt{mk} = 2\sqrt{1 \cdot 100} = 20\,\text{Ns/m}\).

Lösung

Für kritische Dämpfung gilt: \[ \gamma = \frac{20}{2} = 10\,\text{s}^{-1} = \omega_0 \]

Die charakteristische Gleichung hat eine Doppelwurzel \(\lambda = -\gamma = -10\). Die allgemeine Lösung lautet: \[ x(t) = (C_1 + C_2 t) e^{-\gamma t} \]

Mit den Anfangsbedingungen \(x(0) = 0.1\) und \(\dot{x}(0) = 0\) ergibt sich: \[ C_1 = 0.1, \quad C_2 = \gamma C_1 = 1 \]

Die Lösung ist: \[ x(t) = (0.1 + t) e^{-10t}\,\text{m} \]

Code
import numpy as np
import matplotlib.pyplot as plt

# Parameter für kritische Dämpfung
m = 1.0
k = 100.0
c_crit = 2*np.sqrt(m*k)

omega_0 = np.sqrt(k/m)
gamma = c_crit/(2*m)

# Anfangsbedingungen
x0 = 0.1
v0 = 0.0

C1 = x0
C2 = v0 + gamma*x0

# Zeit
t = np.linspace(0, 1, 1000)

# Lösung
x_crit = (C1 + C2*t) * np.exp(-gamma*t)

plt.figure(figsize=(7, 4))
plt.plot(t, x_crit, 'b-', linewidth=2, label='Kritische Dämpfung')
plt.axhline(y=0, color='k', linestyle='-', linewidth=0.5)
plt.xlabel('Zeit $t$ (s)', fontsize=12)
plt.ylabel('Auslenkung $x(t)$ (m)', fontsize=12)
plt.title('Kritisch gedämpfter Oszillator (aperiodischer Grenzfall)', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=11)
plt.show()
Abbildung 4: Kritisch gedämpfter harmonischer Oszillator

Beispiel 4: Vergleich der Dämpfungsregime

Wir vergleichen alle drei Regime mit denselben Anfangsbedingungen.

Code
import numpy as np
import matplotlib.pyplot as plt

m = 1.0
k = 100.0
omega_0 = np.sqrt(k/m)

# Anfangsbedingungen
x0 = 0.1
v0 = 0.0

t = np.linspace(0, 2, 1000)

# Schwache Dämpfung
c_under = 2.0
gamma_under = c_under/(2*m)
omega_d = np.sqrt(omega_0**2 - gamma_under**2)
x_under = x0 * np.exp(-gamma_under*t) * np.cos(omega_d*t)

# Kritische Dämpfung
c_crit = 2*np.sqrt(m*k)
gamma_crit = c_crit/(2*m)
C1_crit = x0
C2_crit = v0 + gamma_crit*x0
x_crit = (C1_crit + C2_crit*t) * np.exp(-gamma_crit*t)

# Starke Dämpfung
c_over = 30.0
gamma_over = c_over/(2*m)
lambda1 = -gamma_over + np.sqrt(gamma_over**2 - omega_0**2)
lambda2 = -gamma_over - np.sqrt(gamma_over**2 - omega_0**2)
C2_over = (v0 - lambda1*x0)/(lambda2 - lambda1)
C1_over = x0 - C2_over
x_over = C1_over * np.exp(lambda1*t) + C2_over * np.exp(lambda2*t)

plt.figure(figsize=(7, 4))
plt.plot(t, x_under, 'b-', linewidth=2, label='Schwache Dämpfung ($\\gamma < \\omega_0$)')
plt.plot(t, x_crit, 'r-', linewidth=2, label='Kritische Dämpfung ($\\gamma = \\omega_0$)')
plt.plot(t, x_over, 'g-', linewidth=2, label='Starke Dämpfung ($\\gamma > \\omega_0$)')
plt.axhline(y=0, color='k', linestyle='-', linewidth=0.5)
plt.xlabel('Zeit $t$ (s)', fontsize=12)
plt.ylabel('Auslenkung $x(t)$ (m)', fontsize=12)
plt.title('Vergleich der Dämpfungsregime', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=10)
plt.show()
Abbildung 5: Vergleich der drei Dämpfungsregime

Beispiel 5: Resonanzkurve

Wir betrachten einen schwach gedämpften Oszillator unter harmonischer Anregung und untersuchen die Amplitude als Funktion der Anregungsfrequenz.

Parameter

\[ m = 1\,\text{kg}, \quad k = 100\,\text{N/m}, \quad c = 2\,\text{Ns/m}, \quad F_0 = 10\,\text{N} \]

Die Amplitude der stationären Schwingung ist: \[ A(\omega) = \frac{F_0/m}{\sqrt{(\omega_0^2 - \omega^2)^2 + (2\gamma\omega)^2}} \]

Code
import numpy as np
import matplotlib.pyplot as plt

m = 1.0
k = 100.0
c = 2.0
F0 = 10.0

omega_0 = np.sqrt(k/m)
gamma = c/(2*m)

# Frequenzbereich
omega = np.linspace(0.1, 20, 1000)

# Amplitude
A = (F0/m) / np.sqrt((omega_0**2 - omega**2)**2 + (2*gamma*omega)**2)

# Resonanzfrequenz
omega_res = np.sqrt(omega_0**2 - 2*gamma**2)
A_res = (F0/m) / np.sqrt((omega_0**2 - omega_res**2)**2 + (2*gamma*omega_res)**2)

plt.figure(figsize=(7, 4))
plt.plot(omega, A, 'b-', linewidth=2)
plt.axvline(x=omega_0, color='r', linestyle='--', linewidth=1.5, alpha=0.7, label=f'Eigenfrequenz $\\omega_0 = {omega_0:.1f}$ rad/s')
plt.axvline(x=omega_res, color='g', linestyle='--', linewidth=1.5, alpha=0.7, label=f'Resonanzfrequenz $\\omega_{{res}} = {omega_res:.1f}$ rad/s')
plt.plot(omega_res, A_res, 'go', markersize=8)
plt.xlabel('Anregungsfrequenz $\\omega$ (rad/s)', fontsize=12)
plt.ylabel('Amplitude $A(\\omega)$ (m)', fontsize=12)
plt.title('Resonanzkurve des gedämpften Oszillators', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=10)
plt.xlim([0, 20])
plt.show()
Abbildung 6: Resonanzkurve: Amplitude als Funktion der Anregungsfrequenz

Die Resonanzkurve zeigt das Maximum der Amplitude bei der Resonanzfrequenz. Bei schwacher Dämpfung liegt diese nahe der Eigenfrequenz. Je stärker die Dämpfung, desto breiter und flacher wird das Resonanzmaximum.

Neben der Amplitude ist auch der Phasengang \(\varphi(\omega)\) aufschlussreich, der in Abbildung 7 für verschiedene Dämpfungen dargestellt ist. Bei \(\omega = \omega_0\) beträgt die Phasenverschiebung unabhängig von der Dämpfung genau \(\pi/2\) — bei Resonanz hinkt die Antwort der Anregung also um eine Viertelperiode hinterher.

Code
import numpy as np
import matplotlib.pyplot as plt

m = 1.0
k = 100.0

omega_0 = np.sqrt(k/m)

# Frequenzbereich
omega = np.linspace(0.1, 20, 1000)

plt.figure(figsize=(7, 4))

for c, farbe in [(2.0, 'b'), (6.0, 'r'), (14.0, 'g')]:
    gamma = c/(2*m)
    # Phase korrekt auf [0, pi] entfaltet
    phi = np.arctan2(2*gamma*omega, omega_0**2 - omega**2)
    plt.plot(omega, phi, farbe, linewidth=2,
             label=f'$\\gamma = {gamma:.0f}$ s$^{{-1}}$')

plt.axvline(x=omega_0, color='k', linestyle='--', linewidth=1.5, alpha=0.7,
            label=f'$\\omega_0 = {omega_0:.0f}$ rad/s')
plt.axhline(y=np.pi/2, color='k', linestyle=':', linewidth=1, alpha=0.7)
plt.plot(omega_0, np.pi/2, 'ko', markersize=8)
plt.yticks([0, np.pi/4, np.pi/2, 3*np.pi/4, np.pi],
           ['0', '$\\pi/4$', '$\\pi/2$', '$3\\pi/4$', '$\\pi$'])
plt.xlabel('Anregungsfrequenz $\\omega$ (rad/s)', fontsize=12)
plt.ylabel('Phasenverschiebung $\\varphi(\\omega)$', fontsize=12)
plt.title('Phasengang des gedämpften Oszillators', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=10)
plt.xlim([0, 20])
plt.show()
Abbildung 7: Phasengang: Phasenverschiebung zwischen Anregung und Antwort als Funktion der Anregungsfrequenz für verschiedene Dämpfungen

Beispiel 6: Harmonische Anregung ohne Dämpfung – Variation der Konstanten

Problemstellung

Ein ungedämpfter Oszillator (\(c = 0\)) mit Masse \(m\) und Eigenfrequenz \(\omega_0\) wird ab \(t = 0\) durch die Kraft \(F_0\cos(\omega t)\) angeregt und startet aus der Ruhe, \(x(0) = 0\) und \(\dot{x}(0) = 0\). Wir bestimmen die Bewegung mit der Variation der Konstanten und untersuchen insbesondere den Fall \(\omega = \omega_0\), in dem der Ansatz vom Typ der rechten Seite versagt.

Lösung

Die Bewegungsgleichung in Standardform lautet: \[ \ddot{x} + \omega_0^2 x = \frac{F_0}{m}\cos(\omega t) \tag{2}\]

Die homogene Gleichung hat das Fundamentalsystem \(x_1 = \cos(\omega_0 t)\), \(x_2 = \sin(\omega_0 t)\) mit der Wronski-Determinante \[ W = x_1\dot{x}_2 - \dot{x}_1 x_2 = \omega_0\cos^2(\omega_0 t) + \omega_0\sin^2(\omega_0 t) = \omega_0. \] Mit \(f(t) = (F_0/m)\cos(\omega t)\) liefern die Koeffizientengleichungen der Variation der Konstanten: \[ \dot{K}_1 = -\frac{F_0}{m\omega_0}\sin(\omega_0 t)\cos(\omega t), \qquad \dot{K}_2 = \frac{F_0}{m\omega_0}\cos(\omega_0 t)\cos(\omega t) \] Die Produkte formen wir mit \(\sin\alpha\cos\beta = \tfrac{1}{2}[\sin(\alpha+\beta) + \sin(\alpha-\beta)]\) und \(\cos\alpha\cos\beta = \tfrac{1}{2}[\cos(\alpha+\beta) + \cos(\alpha-\beta)]\) in Summen um: \[ \dot{K}_1 = -\frac{F_0}{2m\omega_0}\big[\sin((\omega_0+\omega)t) + \sin((\omega_0-\omega)t)\big], \qquad \dot{K}_2 = \frac{F_0}{2m\omega_0}\big[\cos((\omega_0+\omega)t) + \cos((\omega_0-\omega)t)\big] \]

Fall \(\omega \neq \omega_0\). Integration ohne Integrationskonstanten ergibt: \[ K_1 = \frac{F_0}{2m\omega_0}\left[\frac{\cos((\omega_0+\omega)t)}{\omega_0+\omega} + \frac{\cos((\omega_0-\omega)t)}{\omega_0-\omega}\right], \qquad K_2 = \frac{F_0}{2m\omega_0}\left[\frac{\sin((\omega_0+\omega)t)}{\omega_0+\omega} + \frac{\sin((\omega_0-\omega)t)}{\omega_0-\omega}\right] \] Einsetzen in \(x_\mathrm{p} = K_1\cos(\omega_0 t) + K_2\sin(\omega_0 t)\) und das Additionstheorem \(\cos(a)\cos(b) + \sin(a)\sin(b) = \cos(a - b)\) fassen die Terme mit gleichem Nenner zusammen; aus beiden entsteht \(\cos(\omega t)\): \[ x_\mathrm{p}(t) = \frac{F_0}{2m\omega_0}\left[\frac{1}{\omega_0+\omega} + \frac{1}{\omega_0-\omega}\right]\cos(\omega t) = \frac{F_0/m}{\omega_0^2 - \omega^2}\cos(\omega t) \tag{3}\]

Das ist die Resonanzformel für \(\gamma = 0\): Die Amplitude ist \(A = (F_0/m)/|\omega_0^2 - \omega^2|\), die Phase \(\phi = 0\) unterhalb und \(\phi = \pi\) oberhalb der Eigenfrequenz. Die Anfangsbedingungen bestimmen die homogenen Anteile \(C_1\cos(\omega_0 t) + C_2\sin(\omega_0 t)\): Aus \(x(0) = 0\) folgt \(C_1 = -(F_0/m)/(\omega_0^2 - \omega^2)\), aus \(\dot{x}(0) = 0\) folgt \(C_2 = 0\). Die Lösung des Anfangswertproblems ist daher \[ x(t) = \frac{F_0/m}{\omega_0^2 - \omega^2}\big[\cos(\omega t) - \cos(\omega_0 t)\big] = \frac{2F_0/m}{\omega_0^2 - \omega^2}\sin\!\left(\frac{(\omega_0-\omega)t}{2}\right)\sin\!\left(\frac{(\omega_0+\omega)t}{2}\right). \tag{4}\] Die Bewegung ist eine Schwebung: eine schnelle Schwingung mit der mittleren Frequenz \((\omega_0+\omega)/2\), deren Amplitude mit der langsamen Frequenz \((\omega_0-\omega)/2\) an- und abschwillt (Abbildung 8 (a)). Ohne Dämpfung klingt der homogene Anteil nicht ab, und die Schwebung bleibt für alle Zeiten bestehen.

Fall \(\omega = \omega_0\). Jetzt sind die Nenner \(\omega_0 - \omega\) null, und die Rechnung muss von den Koeffizientengleichungen aus neu beginnen. Mit \(\sin((\omega_0-\omega)t) = 0\) und \(\cos((\omega_0-\omega)t) = 1\) lauten sie \[ \dot{K}_1 = -\frac{F_0}{2m\omega_0}\sin(2\omega_0 t), \qquad \dot{K}_2 = \frac{F_0}{2m\omega_0}\big[\cos(2\omega_0 t) + 1\big], \] und Integration liefert \[ K_1 = \frac{F_0}{4m\omega_0^2}\cos(2\omega_0 t), \qquad K_2 = \frac{F_0}{4m\omega_0^2}\sin(2\omega_0 t) + \frac{F_0}{2m\omega_0}\,t. \] Einsetzen in den Ansatz ergibt mit demselben Additionstheorem \[ x_\mathrm{p}(t) = \frac{F_0}{4m\omega_0^2}\cos(\omega_0 t) + \frac{F_0}{2m\omega_0}\,t\sin(\omega_0 t). \] Der erste Term ist eine homogene Lösung und kann weggelassen werden. Die partikuläre Lösung im Resonanzfall ist daher \[ x_\mathrm{p}(t) = \frac{F_0}{2m\omega_0}\,t\sin(\omega_0 t). \tag{5}\] Sie erfüllt bereits \(x_\mathrm{p}(0) = 0\) und \(\dot{x}_\mathrm{p}(0) = 0\), sodass die homogenen Anteile verschwinden und Gleichung 5 die vollständige Lösung des Anfangswertproblems ist. Die Amplitude wächst linear mit der Zeit (Abbildung 8 (b)): Das ist die ungedämpfte Resonanz, die der Konzepte-Teil als Grenzfall \(A \to \infty\) beschreibt. Dasselbe Ergebnis erhält man als Grenzwert \(\omega \to \omega_0\) von Gleichung 4, denn für kleine \(\omega_0 - \omega\) ist \(\sin((\omega_0-\omega)t/2) \approx (\omega_0-\omega)t/2\).

Der Ansatz vom Typ der rechten Seite scheitert in diesem Fall: \(A\cos(\omega_0 t - \phi)\) löst die homogene Gleichung, Einsetzen in Gleichung 2 liefert \(0 = (F_0/m)\cos(\omega_0 t)\), und keine Wahl von \(A\) und \(\phi\) erfüllt das. Die Variation der Konstanten braucht diese Fallunterscheidung nicht; sie erzeugt den Faktor \(t\) von selbst aus der Integration des konstanten Anteils von \(\dot{K}_2\).

Code
import numpy as np
import matplotlib.pyplot as plt

m, omega_0, F0 = 1.0, 10.0, 1.0   # kg, rad/s, N
t = np.linspace(0, 10, 4000)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(7, 3.4))

# (a) omega != omega_0: Schwebung
omega = 0.8 * omega_0
amp = (F0 / m) / (omega_0**2 - omega**2)
x = amp * (np.cos(omega * t) - np.cos(omega_0 * t))
env = 2 * amp * np.abs(np.sin((omega_0 - omega) * t / 2))
ax1.plot(t, x, 'b-', lw=1, label='$x(t)$')
ax1.plot(t, env, 'r--', lw=1.2, label='Einhüllende')
ax1.plot(t, -env, 'r--', lw=1.2)
ax1.set_ylim(-1.4 * 2 * amp, 1.4 * 2 * amp)
ax1.set_xlabel('Zeit $t$ (s)', fontsize=11)
ax1.set_ylabel('Auslenkung $x(t)$ (m)', fontsize=11)
ax1.set_title(r'(a) $\omega = 0{,}8\,\omega_0$', fontsize=11, loc='left')
ax1.grid(True, alpha=0.3)
ax1.legend(fontsize=9, loc='upper center', ncol=2)

# (b) omega = omega_0: Resonanz
x_res = F0 / (2 * m * omega_0) * t * np.sin(omega_0 * t)
env_res = F0 / (2 * m * omega_0) * t
ax2.plot(t, x_res, 'b-', lw=1, label='$x(t)$')
ax2.plot(t, env_res, 'r--', lw=1.2, label='Einhüllende')
ax2.plot(t, -env_res, 'r--', lw=1.2)
ax2.set_xlabel('Zeit $t$ (s)', fontsize=11)
ax2.set_ylabel('Auslenkung $x(t)$ (m)', fontsize=11)
ax2.set_title(r'(b) $\omega = \omega_0$', fontsize=11, loc='left')
ax2.grid(True, alpha=0.3)
ax2.legend(fontsize=9, loc='upper left')

plt.tight_layout()
plt.show()
Abbildung 8: Ungedämpfter Oszillator (\(m = 1\) kg, \(\omega_0 = 10\) rad/s) unter der Kraft \(F_0\cos(\omega t)\) mit \(F_0 = 1\) N, Start aus der Ruhe. (a) Für \(\omega = 0{,}8\,\omega_0\) entsteht eine Schwebung mit konstanter Maximalamplitude. (b) Für \(\omega = \omega_0\) wächst die Amplitude linear mit der Zeit.