19  Oszillator und Energie-Umpacken

Auf der Anzeige eines Radios steht „UKW 100,6 MHz”. Aus der Steckdose, die das Radio speist, kommen 50 Hz. Zwischen den beiden Zahlen liegt ein Faktor von zwei Millionen — und irgendwo im Gerät muss er entstehen. Wie macht man aus dem trägen Wechselstrom des Kraftwerks die flinken hundert Millionen Schwingungen pro Sekunde, die eine Antenne braucht? Die naheliegende Antwort („man transformiert die Frequenz hoch, so wie ein Trafo die Spannung hochtransformiert”) ist falsch, und zwar auf eine lehrreiche Art: Sie verwechselt die Energie mit dem Muster, das man ihr aufprägt. Dieses Kapitel sortiert die Begriffe, baut das schwingfähigste aller Schaltbilder — den LC-Schwingkreis — und zeigt, dass seine Frequenz aus genau dem Vorgang folgt, den Kapitel 18 vorbereitet hat: aus dem Umpacken von Energie zwischen einem elektrischen und einem magnetischen Topf.

Kapitel 18 hat es wörtlich angekündigt: Die stehende Welle im geschlossenen Kasten schaufelt ihre Energie zweimal pro Periode vollständig vom E-Topf in den B-Topf und zurück — „Kapitel 19 baut auf genau diesem Bild den Schwingkreis.” Heute lösen wir das ein. Unterwegs treffen wir alte Bekannte in neuer Rolle: den Leapfrog aus Kapitel 5 (diesmal mit nur zwei Zahlen statt zwei Feldern), die Stabilitätsgrenze aus Kapitel 8 (diesmal in null Raumdimensionen), die ca/cb-Verlustkoeffizienten aus Kapitel 6, die Güte \(Q\) aus Kapitel 15 — und am Ende den Hohlraumresonator selbst, der sich als Schwingkreis ohne Bauteile entpuppt.

Lernziele

Nach diesem Kapitel kannst du …

  1. … Energie, Leistung, Strom, Spannung, Frequenz und Signal sauber auseinanderhalten — und erklären, warum „Strom” nicht die Energie ist und Energie keine Frequenz hat,
  2. … die Schwingfrequenz \(\omega_0 = 1/\sqrt{LC}\) aus der Energieerhaltung herleiten (nicht auswendig lernen),
  3. … den Schwingkreis als kleinstes Yee-Gitter simulieren: Leapfrog mit versetzter Energie-Buchhaltung auf Maschinengenauigkeit, Eulers exponentielles Aufblähen, Stabilitätsgrenze \(\omega_0\Delta t = 2\),
  4. … die drei Schicksale einer Schwingung unterscheiden (ideal, gedämpft, angetrieben), \(Q = \omega_0 L/R\) messen und erklären, warum ein echter Oszillator eine Amplitudenregelung braucht,
  5. … einen Hohlraumresonator als verteilten Schwingkreis lesen: Die Energie pendelt mit \(2f_0\) zwischen E- und B-Topf.

19.1 Erst die Begriffe: Was ist was?

Viele Knoten in diesem Themenkreis lösen sich, sobald die Begriffe sauber getrennt sind. Die Alltagssprache hilft dabei nicht — wir „verbrauchen Strom” und zahlen die „Stromrechnung”, obwohl kein einziges Elektron im Kraftwerk bleibt. Ein Wasserwerk-Bild sortiert die Rollen:

Tabelle 19.1: Sechs Begriffe, die die Alltagssprache verrührt.
Begriff Was es physikalisch ist Wasserwerk-Bild
Energie die „Ware”, die gespeichert und transportiert wird (Joule) das Wasser
Leistung die Lieferrate der Energie (Watt = Joule pro Sekunde) Liter pro Sekunde
Strom bewegte Ladung — ein Träger, nicht die Energie selbst (Ampere) die Strömung im Rohr
Spannung der „Druck”, der die Ladungen treibt (Volt) der Wasserdruck
Frequenz Eigenschaft des zeitlichen Musters — nicht der Energie (Hertz) wie oft die Pumpe pro Sekunde umschaltet
Signal Information, die dem Energiefluss aufgeprägt ist Morsezeichen mit dem Wasserhahn

Zwei Zeilen dieser Tabelle hat Kapitel 18 bereits mit Messungen unterfüttert: Die Energie reist im Feld (nicht im Draht), und der Strom ist nur der Träger, an dem das Feld angreift — die Elektronen selbst kriechen mit Mikrometern pro Sekunde. Neu und zentral für dieses Kapitel ist die Frequenz-Zeile: Gleichstrom ist ein vollkommen gleichmäßiger Energiefluss ohne Frequenz, und trotzdem kann man aus ihm jede beliebige Schwingung gewinnen. Die Frequenz steckt nicht in der Energie — sie entsteht erst, wenn man die Energie in etwas Schwingfähiges füllt, und sie ist eine Eigenschaft dieser Struktur. Was so ein Schwingfähiges ausmacht, ist die nächste Frage.

19.2 Zwei Töpfe werden Bauteile

Die stehende Welle aus Kapitel 18 hatte alles, was eine Schwingung braucht: zwei Energietöpfe (E-Feld und B-Feld) und einen Mechanismus, der den Inhalt verlustfrei hin- und herschaufelt (die Maxwell-Gleichungen). Die Elektrotechnik verpackt diese beiden Töpfe seit 150 Jahren in zwei Bauteile:

  • Der Kondensator \(C\) ist ein eingesperrtes E-Feld: zwei Platten, dazwischen das Feld der Ladung \(q\), die auf ihnen sitzt. Seine Spannung ist \(u_C = q/C\) (das definiert die Kapazität: viel Ladung pro Volt = großes \(C\)), seine gespeicherte Energie \[E_C = \frac{q^2}{2C}.\] Das ist wörtlich die Energiedichte \(\tfrac{\varepsilon_0}{2}E^2\) aus Kapitel 18, aufintegriert über das Plattenvolumen.
  • Die Spule \(L\) ist ein eingesperrtes B-Feld: eine Drahtwicklung, durch die der Strom \(i\) sein Magnetfeld aufbaut. Ändert sich der Strom, wehrt sich die Spule mit der Induktionsspannung \(u_L = L\,\mathrm{d}i/\mathrm{d}t\) — das ist das Induktionsgesetz aus Kapitel 3, eingedampft auf ein Bauteil (die Lenz-Regel steckt im Vorzeichen: die Spule stemmt sich gegen jede Änderung). Ihre Energie ist \[E_L = \frac{L\,i^2}{2},\] das aufintegrierte \(\tfrac{1}{2\mu_0}B^2\).

Jetzt verbinden wir beide zu einem Ring: Kondensator an Spule, sonst nichts. Auf dem Kondensator sitze die Ladung \(q\), durch die Spule fließe der Strom \(i = \mathrm{d}q/\mathrm{d}t\) (was vom Kondensator abfließt, fließt durch die Spule). Statt wie üblich die Maschenregel zu bemühen, nehmen wir den Weg, der zum Kapitel gehört: die Energieerhaltung selbst als Bewegungsgesetz. Im verlustfreien Ring muss die Gesamtenergie konstant sein:

\[\frac{\mathrm{d}}{\mathrm{d}t}\left[\frac{q^2}{2C} + \frac{L\,i^2}{2}\right] = 0 \quad\Longrightarrow\quad \frac{q}{C}\,i + L\,i\,\frac{\mathrm{d}i}{\mathrm{d}t} = 0 .\]

Den gemeinsamen Faktor \(i\) kürzen (solange Strom fließt), und übrig bleibt

\[L\,\frac{\mathrm{d}i}{\mathrm{d}t} = -\frac{q}{C} \qquad\text{mit}\qquad \frac{\mathrm{d}q}{\mathrm{d}t} = i .\]

Das ist Wort für Wort die Feder-Masse-Gleichung der Mechanik: \(m\,\dot v = -k\,x\) mit \(\dot x = v\). Die Spule spielt die träge Masse (sie wehrt sich gegen Stromänderung), der Kondensator die gespannte Feder (er drückt die Ladung zurück). Und wie bei der Feder folgt die Schwingung \(q(t) = q_0\cos(\omega_0 t)\) mit

\[\boxed{\;\omega_0 = \frac{1}{\sqrt{LC}}, \qquad f_0 = \frac{1}{2\pi\sqrt{LC}}\;}\]

— nachrechnen: \(\ddot q = -q/(LC)\), und \(\cos(\omega_0 t)\) erfüllt das genau für \(\omega_0^2 = 1/LC\). Die Frequenz folgt allein aus den beiden Topfgrößen \(L\) und \(C\) — nicht aus der Energiemenge (die setzt nur die Amplitude) und schon gar nicht aus der Frequenz irgendeiner Quelle.

Wie groß sind solche Bauteile im Radio? Für UKW bei \(f_0 = 100\) MHz wähle eine handelsübliche kleine Spule mit \(L = 0{,}1\) µH. Dann muss

\[C = \frac{1}{(2\pi f_0)^2\,L} = \frac{1}{(6{,}28\cdot 10^8)^2 \cdot 10^{-7}\,\text{H}} \approx 25\ \text{pF}\]

sein — 25 Picofarad, ein winziger Keramikkondensator. Beides sind Centartikel: Die hundert Millionen Schwingungen pro Sekunde kosten keine Hightech, nur die richtige Paarung zweier Töpfe. (Wer am Drehkondensator eines alten Radios dreht, ändert genau dieses \(C\) — Ü 19.1 rechnet die Mittelwellen-Skala nach.)

19.3 Das kleinste Yee-Gitter

Jetzt ins Labor — und das Labor ist diesmal verblüffend klein. Unser FDTD-Verfahren aus Kapitel 5 brauchte zwei Felder auf einem Gitter; der Schwingkreis braucht zwei Zahlen: \(q\) und \(i\). Null Raumdimensionen, das ganze System ein Punkt. Aber die Struktur der Gleichungen ist dieselbe — \(q\) ändert sich durch \(i\), \(i\) ändert sich durch \(q\) —, also übertragen wir auch das Erfolgsrezept: versetzte Zeiten. Die Ladung lebt zu ganzen Zeitschritten \(q^n\), der Strom zu halben \(i^{n+1/2}\), jeder macht seinen Schritt mit dem aktuellsten Wert des anderen:

\[i^{n+1/2} = i^{n-1/2} - \frac{\Delta t}{L}\,\frac{q^n}{C}, \qquad q^{n+1} = q^n + \Delta t\, i^{n+1/2}.\]

Das ist der Leapfrog aus Kapitel 5 in seiner kleinstmöglichen Form — und der Kondensator-Strom-Tanz ist das E-B-Schachbrett des Yee-Gitters, auf einen einzigen Punkt zusammengezogen.

In Kapitel 5 stand neben dem Leapfrog der naive Euler-Schritt, bei dem beide Größen aus den alten Werten schreiten — und der dort das Feld explodieren ließ. Hier ist das System so klein, dass wir dem Versagen erstmals komplett mit Papier und Bleistift beikommen. Vorher du:

WichtigVorhersage-Punkt

Wir simulieren den idealen Schwingkreis (\(L = C = 1\), also \(\omega_0 = 1\), Periode \(T_0 = 2\pi\)) über 30 Perioden, einmal mit Euler, einmal mit Leapfrog, Schrittweite \(\Delta t = 0{,}05\) (126 Schritte pro Periode — üppig). Was macht die Schwingungsamplitude in den beiden Läufen: bleibt sie, schrumpft sie, wächst sie? Und falls sie sich ändert — wie schnell?

Die Handrechnung dazu ist zwei Zeilen lang und einer der schönsten Momente dieses Buchs. Euler macht (mit \(L = C = 1\)) aus dem Paar \((q, i)\) den neuen Zustand \(q' = q + \Delta t\, i\) und \(i' = i - \Delta t\, q\). Berechne die neue Energie:

\[q'^2 + i'^2 = (q + \Delta t\, i)^2 + (i - \Delta t\, q)^2 = q^2 + i^2 + \Delta t^2 (q^2 + i^2) = \left(1 + \Delta t^2\right)\left(q^2 + i^2\right)\]

— die gemischten Terme \(\pm 2\Delta t\, qi\) heben sich exakt weg, der quadratische Rest bleibt. Euler multipliziert die Energie in jedem Schritt mit exakt \(1 + (\omega_0\Delta t)^2\). Kein Rauschen, kein Zufall: ein eingebautes exponentielles Aufblähen, das mit kleinerem \(\Delta t\) langsamer wird, aber nie verschwindet. Genau das war in Kapitel 5 die Explosion — dort konnten wir sie nur vorführen, hier können wir sie ausrechnen.

Nun das Experiment. Frage: Packt der Schwingkreis seine Energie wirklich nur um — und hält unser Leapfrog diese Buchhaltung, während Euler sie aufbläht? Bühne: keine — nur die zwei Zahlen \(q\) und \(i\) mit \(L = C = 1\). Anfangsbedingungen: \(q_0 = 1\) (Kondensator voll geladen), \(i = 0\) (noch kein Strom) — alles startet im E-Topf. Messgrößen: \(E_C = q^2/2C\), \(E_L = L i^2/2\) und ihre Summe, über drei Perioden; dazu die Energieverläufe beider Verfahren über 30 Perioden. Erfolgskriterium: Beim Leapfrog bleibt die versetzte Summe (gleich mehr dazu) auf Maschinengenauigkeit konstant; Eulers Energie folgt der eben hergeleiteten \(\left(1+(\omega_0\Delta t)^2\right)^n\)-Kurve.

import numpy as np
import matplotlib.pyplot as plt

L, C = 1.0, 1.0                  # Eigenkreisfrequenz w0 = 1/sqrt(LC) = 1
OMEGA0 = 1.0 / np.sqrt(L * C)
T0 = 2 * np.pi / OMEGA0          # Periode

def leapfrog(R=0.0, dt=0.05, T=200.0, q0=1.0):
    """q zu ganzen, i zu halben Zeiten; R semi-implizit (Kapitel 6)."""
    s = R * dt / (2 * L)
    ca, cb = (1 - s) / (1 + s), (dt / L) / (1 + s)
    q, i, waerme = q0, 0.0, 0.0
    qs, is_, EC, EL, U, W = [], [], [], [], [], []
    for n in range(int(T / dt)):
        i_alt = i
        i = ca * i - cb * q / C
        q_alt = q
        q = q + dt * i
        waerme += R * ((i_alt + i) / 2) ** 2 * dt   # zeitzentriert
        qs.append(q); is_.append(i)
        EC.append(q**2 / (2 * C)); EL.append(L * i**2 / 2)
        U.append(q_alt * q / (2 * C) + L * i**2 / 2)  # versetzt!
        W.append(waerme)
    return [np.array(a) for a in (qs, is_, EC, EL, U, W)]

DT = 0.05
q, i, EC, EL, U, _ = leapfrog(dt=DT, T=3 * T0)
t = np.arange(1, len(q) + 1) * DT

fig, ax = plt.subplots(figsize=(8, 3.4))
ax.plot(t / T0, EC, color="crimson", lw=2, label="$E_C$ (E-Feld)")
ax.plot(t / T0, EL, color="royalblue", lw=2, label="$E_L$ (B-Feld)")
ax.plot(t / T0, EC + EL, color="black", lw=2, label="Summe")
ax.plot(t / T0, 0.5 * np.cos(OMEGA0 * t) ** 2, "k--", lw=0.9,
        label="Theorie $\\cos^2$, $\\sin^2$")
ax.plot(t / T0, 0.5 * np.sin(OMEGA0 * t) ** 2, "k--", lw=0.9)
ax.set_xlabel("Zeit in Perioden")
ax.set_ylabel("Energie")
ax.legend(fontsize=9, ncol=2)
plt.show()

schwankung = np.ptp(U) / U[0]    # np.ptp: Spannweite (max - min)
print(f"Versetzte Energie qⁿqⁿ⁺¹/2C + Li²/2: "
      f"Schwankung {schwankung:.1e}")
Abbildung 19.1: Das Energie-Pendel des idealen Schwingkreises (Leapfrog, Δt = 0,05): Die Energie wandert zweimal pro Periode vollständig vom Kondensator (E-Feld, rot) in die Spule (B-Feld, blau) und zurück — exakt auf den gestrichelten Theoriekurven cos² und sin². Die Summe (schwarz) ist eine Gerade: Es ist immer dieselbe Energie, nur umgepackt. Das Bild ist das Schaltkreis-Double der stehenden Welle aus Kapitel 18.
Versetzte Energie qⁿqⁿ⁺¹/2C + Li²/2: Schwankung 1.8e-15

Das Pendel läuft punktgenau auf den \(\cos^2\)/\(\sin^2\)-Kurven — und die ausgedruckte Zahl darunter ist die eigentliche Sensation: Schwankung um wenige \(10^{-15}\) — Maschinengenauigkeit. Aber Vorsicht, hier steckt das Kapitel-18-Kleingedruckte drin: Konstant auf diesem Niveau ist nicht die naive Summe \(q^2/2C + Li^2/2\) (die zittert leicht, weil \(q\) und \(i\) zu verschiedenen Zeiten leben), sondern die versetzt gebuchte Energie

\[U^{n+1/2} = \frac{q^n\,q^{n+1}}{2C} + \frac{L\left(i^{n+1/2}\right)^2}{2}\]

— das Produkt zweier benachbarter \(q\)-Werte schiebt den E-Topf rechnerisch auf den Halbschritt, auf dem der Strom ohnehin wohnt. In Kapitel 18 war das die Identität \(\tfrac{\varepsilon_0}{2}\sum E^n E^{n+1}\); hier ist es dieselbe Pointe mit einem einzigen Summanden. Der Yee-Versatz ist kein Implementierungsdetail, sondern der Grund, warum dieses Verfahren Energie exakt buchhalten kann.

Jetzt die Gegenprobe mit Euler — und mit der Stabilitätsgrenze, die das Leapfrog-Verfahren auch in null Dimensionen hat.

# von oben: np, plt, leapfrog, L, C, OMEGA0, T0, DT

def euler(dt=DT, T=30 * T0, q0=1.0):
    """Beide Updates aus den ALTEN Werten — Kapitel 5 lässt grüßen."""
    q, i = q0, 0.0
    U = []
    for n in range(int(T / dt)):
        q, i = q + dt * i, i - dt * q / (L * C)
        U.append(q**2 / (2 * C) + L * i**2 / 2)
    return np.array(U)

U_eu = euler()
_, _, _, _, U_lf, _ = leapfrog(dt=DT, T=30 * T0)
t30 = np.arange(1, len(U_eu) + 1) * DT / T0
theorie = 0.5 * (1 + (OMEGA0 * DT) ** 2) ** np.arange(1, len(U_eu) + 1)

fig, ax = plt.subplots(figsize=(8, 3.2))
ax.semilogy(t30, U_eu, color="crimson", lw=2, label="Euler")
ax.semilogy(t30, theorie, "k--", lw=1.2,
            label="Theorie $(1+(\\omega_0\\Delta t)^2)^n$")
ax.semilogy(t30, U_lf, color="royalblue", lw=2,
            label="Leapfrog (versetzt gebucht)")
ax.set_xlabel("Zeit in Perioden")
ax.set_ylabel("Energie")
ax.legend(fontsize=9)
plt.show()

print(f"Euler nach 30 Perioden: Energie x{U_eu[-1] / 0.5:.0f} "
      f"(Theorie x{theorie[-1] / 0.5:.0f})")
for dt_test in (1.99, 2.01):
    q_t, *_ = leapfrog(dt=dt_test, T=400.0)
    print(f"Leapfrog mit ω₀Δt = {dt_test}: "
          f"max|q| = {np.abs(q_t).max():.0e}")
Abbildung 19.2: Energie über 30 Perioden, logarithmisch. Eulers Energie (rot) wächst exakt auf der hergeleiteten Theoriegeraden (1+(ω₀Δt)²)ⁿ (schwarz gestrichelt) — nach 30 Perioden ist sie um den Faktor 12 000 aufgebläht. Der Leapfrog (blau) hält seine versetzte Energie über dieselbe Strecke auf vierzehn Stellen konstant; im Bild ist seine Linie schlicht waagerecht.
Euler nach 30 Perioden: Energie x12219 (Theorie x12219)
Leapfrog mit ω₀Δt = 1.99: max|q| = 1e+01
Leapfrog mit ω₀Δt = 2.01: max|q| = 1e+18

Drei Befunde in einem Bild samt Ausdruck. Erstens: Euler liegt deckungsgleich auf der von Hand hergeleiteten Geraden — die Explosion ist Algebra, keine Laune. Zweitens: Der Leapfrog hält. Drittens, aus den letzten beiden Zeilen: Auch der Leapfrog hat seine Grenze, und sie liegt exakt bei \(\omega_0\Delta t = 2\) — bei \(1{,}99\) bleibt die Schwingung endlich, bei \(2{,}01\) explodiert sie um achtzehn Größenordnungen. Das ist die CFL-Bedingung aus Kapitel 8 in ihrer nacktesten Form: Dort lautete sie \(S \le 1\) und besagte, dass auch die schnellste Gitterwelle — die mit \(\omega_{\max}\Delta t = 2\) — noch sauber abgetastet werden muss. Ein räumliches Gitter ist ein Chor aus Schwingkreisen verschiedener Frequenzen, und der Zeitschritt muss den flinksten von ihnen aushalten. Hier gibt es nur einen, also sieht man die Grenze pur.

Bevor wir weiterziehen, die Pflicht-Gegenprobe mit fertigem Werkzeug (Kapitel 11: Vertraue keinem einzelnen Löser): scipy bringt mit solve_ivp einen erwachsenen Integrator für gewöhnliche Differentialgleichungen mit — adaptive Schrittweite, eingebaute Fehlerkontrolle.

# von oben: np, leapfrog, L, C, T0, DT
from scipy.integrate import solve_ivp   # scipy-ODE-Löser (Kapitel 11)

# Zustand y = [q, i]; Rückgabe: die Zeitableitungen [dq/dt, di/dt]
sol = solve_ivp(lambda t, y: [y[1], -y[0] / (L * C)],
                [0, 30 * T0], [1.0, 0.0],
                rtol=1e-10, atol=1e-12,    # Toleranzen eng anziehen
                dense_output=True)          # Loesung als Funktion
q_lf, *_ = leapfrog(dt=DT, T=30 * T0)
t_lf = np.arange(1, len(q_lf) + 1) * DT
abw = np.abs(q_lf - sol.sol(t_lf)[0]).max()
print(f"Leapfrog vs. solve_ivp über 30 Perioden: "
      f"max. Abweichung {abw:.3f}")
Leapfrog vs. solve_ivp über 30 Perioden: max. Abweichung 0.044

Gut vier Prozent Abweichung — und die sind lehrreich, nicht peinlich. Zwei Effekte stecken darin: Der Leapfrog schwingt minimal zu langsam (seine Gitterfrequenz ist \(\omega_{\text{num}} = \tfrac{2}{\Delta t}\arcsin(\omega_0\Delta t/2)\), das ist die Dispersionsformel aus Kapitel 8 ohne den Ortsterm — über 30 Perioden läuft eine kleine Phasendifferenz auf), und unser Start setzt \(i = 0\) zur Zeit \(t = -\Delta t/2\) statt exakt zu \(t = 0\) — der halbe Schritt Versatz, der in Kapitel 11 schon Meeps Quellen um 4,7 % verschoben hat. Beide Effekte schrumpfen mit \(\Delta t\). Die Energie hält der Leapfrog trotzdem exakt: Er verteilt seinen Fehler in die Phase, nie in die Amplitude — für lange Läufe ist das Gold wert (das Kleingedruckte verrät den Fachbegriff dafür).

19.4 Drei Schicksale einer Schwingung

Der ideale Kreis schwingt ewig. Echte Spulen haben Drahtwiderstand, echte Kondensatoren Leckströme — zusammen ein Serienwiderstand \(R\), an dem die Leistung \(R\,i^2\) in Wärme fällt (das \(\vec J\cdot\vec E\) aus Kapitel 18, auf ein Bauteil eingedampft). Die Bewegungsgleichung bekommt den Reibungsterm \(L\,\dot i = -q/C - R\,i\), und numerisch behandeln wir ihn genau wie das \(\sigma\) in Kapitel 6: semi-implizit, mit den ca/cb-Koeffizienten (der Code oben in leapfrog() kann das längst — wir haben den Parameter R bisher nur nicht benutzt).

Auch die Wärme buchen wir mit der Sorgfalt aus Kapitel 18: zeitzentriert. Der Strom lebt auf Halbschritten; die in einem ganzen Schritt verheizte Energie ist \(R\,\bigl(\tfrac{i_{\text{alt}}+i_{\text{neu}}}{2}\bigr)^2\Delta t\) — das arithmetische Mittel schiebt \(i^2\) auf den ganzen Schritt. Mit dieser Paarung (und nur mit ihr) muss die Bilanz „EM-Energie + kumulierte Wärme = konstant” exakt aufgehen.

Frage: Wohin geht die Energie des gedämpften Kreises, und wie schnell? Bühne und Anfangsbedingungen: wie eben, dazu \(R = 0{,}12\) (in unseren Einheiten; das gibt gut acht Schwingungen, bis die Energie auf 1/e fällt). Messgrößen: \(E_C + E_L\), kumulierte Wärme, ihre Summe; dazu der Logarithmus der EM-Energie für den Abkling-Fit (die Methode aus Kapitel 15). Erfolgskriterium: Summe konstant auf Maschinengenauigkeit; Abklingrate \(R/L\), also \(Q = \omega_0/\text{Rate} = \omega_0 L/R = 8{,}33\).

# von oben: np, plt, leapfrog, L, C, OMEGA0

R = 0.12
q, i, EC, EL, U, W = leapfrog(R=R, dt=0.01, T=120.0)
t = np.arange(1, len(q) + 1) * 0.01

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(9, 3.4))
ax1.plot(t, U, color="black", lw=1.5, label="EM-Energie")
ax1.plot(t, W, color="darkorange", ls="--", lw=1.5,
         label="Wärme (kumuliert)")
ax1.plot(t, U + W, color="seagreen", ls=":", lw=2.2, label="Summe")
ax1.set_xlabel("Zeit")
ax1.set_ylabel("Energie")
ax1.legend(fontsize=9)

ax2.semilogy(t, U, color="black", lw=1.2, label="EM-Energie")
ax2.semilogy(t, U[0] * np.exp(-R / L * (t - t[0])), "k--", lw=1.2,
             label="Theorie $e^{-Rt/L}$")
ax2.set_xlabel("Zeit")
ax2.set_ylabel("Energie (log)")
ax2.legend(fontsize=9)
plt.show()

bilanz = np.ptp(U + W) / U[0]
rate = -np.polyfit(t, np.log(U), 1)[0]
print(f"EM + Wärme: Schwankung {bilanz:.1e}")
print(f"Abklingrate {rate:.4f} (Theorie R/L = {R / L}) -> "
      f"Q = ω₀/Rate = {OMEGA0 / rate:.2f} "
      f"(Theorie ω₀L/R = {OMEGA0 * L / R:.2f})")
Abbildung 19.3: Der gedämpfte Schwingkreis (R = 0,12). Links: Die EM-Energie (schwarz) fällt, die kumulierte Wärme (orange, gestrichelt) steigt spiegelbildlich — ihre Summe (grün gepunktet) ist eine perfekte Waagerechte: Energie verschwindet nicht, sie wechselt nur das Konto. Rechts: dieselbe EM-Energie logarithmisch; sie folgt der Theoriegeraden e^(−Rt/L) (gestrichelt) — aus der Steigung folgt Q = 8,33, exakt ω₀L/R. Die kleine Treppe um die Gerade ist echte Physik: Wärme entsteht nur, wenn Strom fließt (R·i²), und der ist zweimal pro Periode null — die Energie fällt stoßweise.
EM + Wärme: Schwankung 5.8e-14
Abklingrate 0.1200 (Theorie R/L = 0.12) -> Q = ω₀/Rate = 8.33 (Theorie ω₀L/R = 8.33)

Die Bilanz schließt auf \(10^{-13}\) — das diskrete Double des Energiesatzes, zum dritten Mal nach Kapitel 18 (Vakuum und σ-Zone), diesmal im Schaltkreis. Und die Güte ist exakt die aus Kapitel 15: Dort war \(Q = \omega W/P\) definiert und über \(2\pi f/\sigma_D\) gemessen; hier ist \(P\) die Wärmeleistung und es kommt \(Q = \omega_0 L/R\) heraus — gleiche Definition, gleiches Abklinggesetz \(e^{-\omega_0 t/Q}\), nur der Verlustmechanismus hat einen anderen Namen. Ein Schwingkreis mit \(Q = 8\) ist übrigens ein schlechter: Radio-Schwingkreise erreichen 100, Quarze hunderttausend — je höher \(Q\), desto schärfer die Frequenz (Kapitel 15: \(\Delta f = f/Q\)) und desto besser der Takt.

Das kleinste Yee-Gitter ist auch die kleinste Spielwiese des Buchs — der komplette Löser steht unten in acht Zeilen (editierbar; Run-Knopf oder Strg+Enter). Drei Aufträge: Erstens setze R_OHM = 0.12 — die gestrichelte Hüllkurve \(e^{-Rt/2L}\) muss sich exakt über die Maxima legen (die Amplitude fällt halb so schnell wie die Energie, daher \(2L\)). Zweitens der Stabilitäts-Nervenkitzel: Sage erst voraus, was bei DT_S = 1.99 und was bei DT_S = 2.01 passiert — dann probiere beide. Drittens DT_S = 0.5: nur gut zwölf Punkte pro Periode, die Kurve wird sichtbar eckig — aber beobachte, was die Amplitude über 30 Perioden macht. Der Leapfrog steckt seine Fehler in die Phase, nie in die Amplitude.

Womit wir beim dritten Schicksal wären. Gedämpft stirbt die Schwingung — ein Sender braucht sie aber dauerhaft. Die Lösung: eine Rückkopplung, die im Takt der Schwingung Energie nachschiebt, wie man eine Schaukel im richtigen Moment anstößt. Elektrisch wirkt so eine mitschwingende Quelle wie ein negativer Widerstand \(-k\): Statt \(R\,i^2\) zu entnehmen, speist sie \(k\,i^2\) ein. Für \(k = R\) heben sich Verlust und Nachschub exakt auf, und der Kreis schwingt ewig — auf dem Papier.

In Wirklichkeit ist \(k = R\) eine Messerschneide: Ist die Rückkopplung ein Haar zu schwach, klingt die Schwingung ab; ein Haar zu stark, wächst sie über alle Grenzen. Kein Bauteil der Welt trifft und hält eine solche Gleichheit. Jeder echte Oszillator löst das mit einem Trick, der so robust ist, dass man ihn leicht übersieht: Die Rückkopplung ist bei kleinen Amplituden zu stark und sättigt bei großen — zum Beispiel \(k_{\text{eff}} = k\,(1 - (q/q_s)^2)\) mit einer Sättigungsskala \(q_s\). Kleine Schwingungen werden angefacht (\(k_{\text{eff}} > R\)), große gebremst (\(k_{\text{eff}} < R\)), und dazwischen liegt genau eine Amplitude, bei der sich Zufuhr und Verlust über die Periode die Waage halten. Diese Gleichung hat einen berühmten Namen — van-der-Pol-Oszillator — und ihr Verhalten einen schönen Fachbegriff: einen Grenzzyklus, eine Schwingung, die ihre Amplitude selbst findet und festhält.

Frage: Stellt sich die Amplitude wirklich von selbst ein — unabhängig davon, wie der Kreis startet? Bühne: der Kreis von oben mit \(R = 0{,}12\), Rückkopplung \(k = 0{,}3\) und \(q_s = 1\); gelöst mit solve_ivp (die Gleichung ist nichtlinear — genau der Fall, für den man einen adaptiven Löser dabei hat). Anfangsbedingungen: einmal ein Hauch von nichts (\(q_0 = 0{,}001\) — etwa das thermische Rauschen, aus dem jeder reale Oszillator anläuft), einmal viel zu viel (\(q_0 = 3\)). Messgrößen: \(q(t)\) und die Endamplitude beider Läufe. Erfolgskriterium: Beide laufen auf dieselbe Amplitude; die Störungstheorie (Kleingedrucktes) sagt \(A = 2q_s\sqrt{(k-R)/k} = 1{,}549\) voraus.

# von oben: np, plt, solve_ivp, L, C, R

K, QS = 0.30, 1.0

def vdp(t, y):
    q, i = y
    daempfung = R - K * (1 - (q / QS) ** 2)   # saettigende Rueckkopplung
    return [i, (-daempfung * i - q / C) / L]

A_theo = 2 * QS * np.sqrt((K - R) / K)
t_aus = np.linspace(0, 150, 4000)
fig, ax = plt.subplots(figsize=(8, 3.4))
for q0, farbe, lab in ((1e-3, "purple", "Start $q_0 = 0{,}001$"),
                       (3.0, "0.6", "Start $q_0 = 3$")):
    s = solve_ivp(vdp, [0, 150], [q0, 0.0], rtol=1e-9, atol=1e-12,
                  dense_output=True, max_step=0.05)
    ax.plot(t_aus, s.sol(t_aus)[0], color=farbe, lw=0.8, label=lab)
ax.axhline(A_theo, color="black", ls="--", lw=1.2,
           label="Theorie $\\pm 2 q_s\\sqrt{(k-R)/k}$")
ax.axhline(-A_theo, color="black", ls="--", lw=1.2)
ax.set_xlabel("Zeit")
ax.set_ylabel("q(t)")
ax.legend(fontsize=9, loc="lower right")
plt.show()

tt = np.linspace(300, 400, 4000)
for q0 in (1e-3, 3.0):
    s = solve_ivp(vdp, [0, 400], [q0, 0.0], rtol=1e-9, atol=1e-12,
                  dense_output=True, max_step=0.05)
    print(f"Start q0 = {q0}: Endamplitude "
          f"{np.abs(s.sol(tt)[0]).max():.4f}  "
          f"(Theorie {A_theo:.4f})")
Abbildung 19.4: Der van-der-Pol-Oszillator findet seine Amplitude selbst. Violett: Anlauf aus q₀ = 0,001 — das „Rauschen“ wird exponentiell angefacht, bis die Sättigung greift. Grau: Start mit viel zu großem q₀ = 3 — die Schwingung wird auf denselben Wert heruntergebremst. Beide enden exakt auf dem theoretischen Grenzzyklus ±2q_s·√((k−R)/k) = ±1,549 (gestrichelte Linien). Die Amplitude ist eine Eigenschaft der Schaltung, nicht der Vorgeschichte — wie die Frequenz.
Start q0 = 0.001: Endamplitude 1.5495  (Theorie 1.5492)
Start q0 = 3.0: Endamplitude 1.5495  (Theorie 1.5492)

Beide Startwerte enden auf der vierten Nachkommastelle bei derselben Amplitude. Das ist der Kern jedes Oszillators, vom Quarz in der Armbanduhr bis zum Sender im WLAN-Router: ein schwingfähiges Paar Töpfe (das die Frequenz setzt), ein Verlust, eine übersteuerte Rückkopplung mit Sättigung (die die Amplitude setzt) — und eine Energiequelle ohne jede Frequenz, meist schlichter Gleichstrom. Die Pendeluhr ist dasselbe Prinzip aus Messing: Das Pendel ist der Schwingkreis, das aufgezogene Gewicht die DC-Quelle, und die Hemmung — der Anker, der das Zahnrad genau zweimal pro Periode freigibt — ist die getaktete Rückkopplung (Ü 19.4 baut sie nach). Damit lässt sich die Analogie-Landkarte zeichnen, die alle Bilder dieses Kapitels nebeneinanderlegt:

Tabelle 19.2: Ein Bild für alles: dieselben sechs Rollen in drei Kostümen.
Schwingkreis Feder und Masse Pendeluhr
Kondensator \(C\) (E-Feld-Energie) gespannte Feder (Lageenergie) Pendel am Umkehrpunkt
Spule \(L\) (B-Feld-Energie) bewegte Masse (Schwung) Pendel im Tiefpunkt (volle Fahrt)
Widerstand \(R\) (→ Wärme) Reibung Luft- und Lagerreibung
Rückkopplung mit Sättigung Anstoßen im richtigen Moment Hemmung (Escapement)
DC-Quelle (Netzteil) dein Arm beim Anschaukeln das aufgezogene Gewicht
\(f = 1/(2\pi\sqrt{LC})\) \(f\) aus Federhärte und Masse \(f\) aus der Pendellänge

19.5 Der Hohlraum ist ein Schwingkreis ohne Bauteile

Jetzt schließt sich der Kreis zu Kapitel 15 und 18. Der Resonatorkasten aus Kapitel 15 — vier mal drei Einheiten, ideal leitende Wände — hat Eigenfrequenzen, Güten, Abklingkurven: alles, was ein Schwingkreis hat. Kein Wunder, behaupten wir jetzt: Er ist einer. Seine Grundmode hat ihr E-Feld als Bauch in der Kastenmitte (ein verteilter Kondensator) und ihr B-Feld als Wirbel darum herum (eine verteilte Spule); die Maxwell-Gleichungen verdrahten beide. Wenn das stimmt, muss die Energie der Mode genauso zwischen E-Topf und B-Topf pendeln wie in Abbildung 19.1. Meep kann beide Töpfe direkt wiegen — und bevor wir es tun, die Pflichtfrage:

WichtigVorhersage-Punkt

Die Grundmode TM\(_{11}\) schwingt mit \(f_{11} = 0{,}2083\) (Kapitel-15-Formel). Mit welcher Frequenz pendelt die Energie zwischen E-Topf und B-Topf: mit \(f_{11}\), mit \(f_{11}/2\) — oder mit \(2f_{11}\)? (Denk an Abbildung 19.1: Wie oft pro Periode ist der Kondensator leer?)

Das Experiment dazu. Frage: Pendelt die Modenenergie vollständig und mit welcher Frequenz — und klingt sie mit Verlusten so ab, wie es der Kapitel-15-Anker verlangt? Bühne: der Kasten aus Kapitel 15 (\(4\times 3\), Auflösung 24, Zellrand = PEC-Wand). Anfangs- und Randbedingungen: Ein schmalbandiger Gauß-Puls bei \(f_{11}\) (Bandbreite \(f_{11}/8\), damit keine Nachbarmode mitschwingt) lädt die Grundmode; nach Quellende läuft der Kasten frei. Messgrößen: die elektrische und die magnetische Gesamtenergie im Kasten, alle zwei Zeitschritte; danach derselbe Lauf mit Materialverlusten \(\sigma_D = 0{,}02\) (die Konvention, die wir in Kapitel 15 selbst vermessen haben: Felder klingen mit Rate \(\sigma_D/2\)). Erfolgskriterium: Pendeln mit \(2f_{11} = 0{,}4167\), Topfwechsel vollständig (0 bis 100 %), Summe konstant; im Verlustlauf fällt die Energie mit Rate \(\sigma_D\) (doppelte Feldrate, weil Energie quadratisch in den Feldern ist).

# von oben: np, plt
import meep as mp

mp.verbosity(0)

LX, LY = 4.0, 3.0                        # der Kasten aus Kapitel 15
AUFL = 24
DT_MEEP = 0.5 / AUFL
F11 = 0.5 * np.sqrt((1 / LX) ** 2 + (1 / LY) ** 2)
# mp.Volume: ein benanntes Raumgebiet (hier: der ganze Kasten)
KASTEN = mp.Volume(center=mp.Vector3(), size=mp.Vector3(LX, LY))

def hohlraum(sigma_d=0.0, dauer=120.0):
    geometrie = []
    if sigma_d > 0:
        geometrie = [mp.Block(size=mp.Vector3(mp.inf, mp.inf, mp.inf),
                              material=mp.Medium(D_conductivity=sigma_d))]
    quelle = [mp.Source(mp.GaussianSource(F11, fwidth=F11 / 8),
                        component=mp.Ez, center=mp.Vector3(0.3, 0.2))]
    sim = mp.Simulation(cell_size=mp.Vector3(LX, LY), resolution=AUFL,
                        sources=quelle, geometry=geometrie)
    t, uE, uB = [], [], []

    def messen(s):
        t.append(s.meep_time())
        # Meep wiegt die Toepfe direkt: Integral der Energiedichte
        uE.append(s.electric_energy_in_box(box=KASTEN))
        uB.append(s.magnetic_energy_in_box(box=KASTEN))

    # synchronized_magnetic: schiebt B fuer die Messung auf den
    # E-Zeitpunkt — sonst zittert die Summe (der Yee-Versatz!)
    sim.run(mp.after_sources(mp.synchronized_magnetic(
        mp.at_every(2 * DT_MEEP, messen))), until_after_sources=dauer)
    return np.array(t), np.array(uE), np.array(uB)

t_h, uE_h, uB_h = hohlraum()
summe = uE_h + uB_h
t_rel = t_h - t_h[0]

SD = 0.02
t_v, uE_v, uB_v = hohlraum(sigma_d=SD, dauer=200.0)
summe_v = uE_v + uB_v
t_vrel = t_v - t_v[0]

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(9, 3.4))
ax1.plot(t_rel, uE_h / summe.mean(), color="crimson", lw=1.4,
         label="E-Topf")
ax1.plot(t_rel, uB_h / summe.mean(), color="royalblue", lw=1.4,
         label="B-Topf")
ax1.plot(t_rel, summe / summe.mean(), color="black", lw=1.6,
         label="Summe")
ax1.set_xlim(0, 12)
ax1.set_xlabel("Zeit nach Quellende")
ax1.set_ylabel("Energieanteil")
ax1.legend(fontsize=9, loc="center right")

ax2.semilogy(t_vrel, summe_v / summe_v[0], color="black", lw=1.4,
             label="Gesamtenergie")
ax2.semilogy(t_vrel, np.exp(-SD * t_vrel), "k--", lw=1.2,
             label="Theorie $e^{-\\sigma_D t}$")
ax2.set_xlabel("Zeit nach Quellende")
ax2.set_ylabel("Energie (normiert, log)")
ax2.legend(fontsize=9)
plt.show()

sp = np.abs(np.fft.rfft(uE_h - uE_h.mean()))
fr = np.fft.rfftfreq(len(t_h), t_h[1] - t_h[0])
print(f"Pendel-Frequenz {fr[sp.argmax()]:.4f}  "
      f"(2 f11 = {2 * F11:.4f})")
print(f"E-Topf: {uE_h.min() / summe.mean() * 100:.1f} % bis "
      f"{uE_h.max() / summe.mean() * 100:.1f} % der Gesamtenergie; "
      f"Summe konstant auf {np.ptp(summe) / summe.mean() * 100:.1f} %")
rate = -np.polyfit(t_v, np.log(summe_v), 1)[0]
print(f"Verlustlauf: Abklingrate {rate:.4f}  (σ_D = {SD}) -> "
      f"Q = 2πf/σ_D = {2 * np.pi * F11 / SD:.1f}")
Using MPI version 4.1, 1 processes
Abbildung 19.5: Der Hohlraum als Schwingkreis. Links: Nach dem Quellende pendelt die Energie der Grundmode vollständig zwischen E-Topf (rot) und B-Topf (blau) — gemessen mit Frequenz 0,4165, exakt das erwartete 2·f₁₁ = 0,4167. Die Summe (schwarz) bleibt waagerecht: derselbe Befund wie im Bauteil-Schwingkreis (Abbildung 19.1), nur dass L und C hier über den Raum verschmiert sind. Rechts: Mit Materialverlusten σ_D = 0,02 fällt die Gesamtenergie logarithmisch exakt auf der Theoriegeraden e^(−σ_D·t) — die Feldrate σ_D/2 aus Kapitel 15, verdoppelt fürs Quadrat.
Pendel-Frequenz 0.4165  (2 f11 = 0.4167)
E-Topf: 0.0 % bis 100.3 % der Gesamtenergie; Summe konstant auf 0.7 %
Verlustlauf: Abklingrate 0.0200  (σ_D = 0.02) -> Q = 2πf/σ_D = 65.4

Alle drei Vorhersagen treffen ein. Die Energie pendelt mit \(2f_{11}\) — zweimal pro Feldperiode ist der E-Topf leer, genau wie der Kondensator in Abbildung 19.1 und die stehende Welle in Kapitel 18 (die Energie ist quadratisch im Feld, darum verdoppelt sich ihre Frequenz). Der Topfwechsel ist vollständig: 0 bis 100 Prozent. Und der Verlustlauf liefert die Rate \(\sigma_D\) auf vier Stellen — was \(Q = 2\pi f_{11}/\sigma_D = 65{,}4\) ergibt, exakt die Zahl, die Kapitel 15 für dieselbe Mode mit drei unabhängigen Methoden gemessen hat. Damals war \(Q = 2\pi f/\sigma_D\) ein Anker aus Abklingkurve, Linienbreite und Harminv; heute wissen wir, was da abklingt: die pendelnde Energie eines Schwingkreises, dessen \(L\) und \(C\) über den Kasten verschmiert sind.

Dass die schwarze Summenlinie links bei genauem Hinsehen um ein halbes Prozent kräuselt, ist kein Messfehler, sondern ein alter Bekannter: Meeps Energiezähler bucht naiv — \(E\) und \(B\) leben auf versetzten Zeiten, und synchronized_magnetic interpoliert das B-Feld nur näherungsweise auf den E-Zeitpunkt (ohne diese Hilfe wäre das Kräuseln viermal größer; probiere es aus). Die exakt versetzte Buchhaltung aus Abbildung 19.1 und Kapitel 18 bekommt man nur, wenn man selbst Buch führt.

Der Blick nach vorn: Ein Kasten hat nicht eine Mode, sondern abzählbar viele (Kapitel 15 hat vier vermessen) — ein Hohlraum ist ein ganzes Sortiment von Schwingkreisen, jede Mode mit eigenem \(f\) und eigenem \(Q\). Genau so werden wir in Kapitel 27 den Fabry-Pérot-Resonator und den Ringresonator lesen, und der Laser ist am Ende ein solcher Schwingkreis mit einer Rückkopplung, die nicht aus einem Transistor kommt, sondern aus stimuliertem Licht.

19.6 Vom Kraftwerk zur Antenne

Jetzt lässt sich die Eingangsfrage vollständig beantworten — und zuerst räumen wir die naheliegende falsche Antwort ab:

WarnungNaheliegende Vermutung

„Die 50 Hz aus der Steckdose werden im Sender zu 100 MHz hochtransformiert — so wie ein Trafo die Spannung hochtransformiert.”

Warum sie naheliegt: Ein Trafo macht aus 230 V mühelos 10 000 V; dass ein ähnliches Bauteil aus 50 Hz eben 100 MHz macht, klingt nur konsequent. Und irgendwoher müssen die 100 MHz ja kommen.

Was stattdessen stimmt: Ein Transformator ändert nie die Frequenz — er kann es nicht, denn die Frequenz ist kein Pegel, den man übersetzen könnte, sondern das zeitliche Muster des Signals selbst (und ein Trafo ist ein lineares Bauteil: Was mit 50 Hz hineinschwingt, kommt mit 50 Hz heraus). Energie hat keine Frequenz. Die 100 MHz werden im Sender neu erzeugt: von einem Oszillator, dessen schwingfähige Struktur — ein LC-Kreis oder ein Quarz — genau diese Eigenfrequenz hat. Die Steckdose liefert nur die Ware Energie; das Muster prägt ihr erst der Oszillator auf.

Der vollständige Weg der Energie von der Steckdose bis zur Funkwelle hat damit vier Stationen:

Tabelle 19.3: Von 50 Hz zu 100 MHz: Die Frequenz wird nicht gewandelt, sondern an Station 2 neu geboren.
Station was mit der Energie passiert Frequenz danach
Netzteil richtet die 50 Hz zu Gleichstrom keine (DC)
Oszillator (LC oder Quarz) füllt sie in eine schwingfähige Struktur \(f_0 = \tfrac{1}{2\pi\sqrt{LC}}\) — neu erzeugt
Verstärker macht die Schwingung kräftig (mehr DC-Energie ins selbe Muster) unverändert
Antenne übergibt sie als Welle ans Feld unverändert

Im Alltag ist die schwingfähige Struktur meist kein LC-Paar aus Einzelteilen, sondern ein Schwingquarz: ein Kristallplättchen, das mechanisch schwingt wie eine winzige Stimmgabel und dessen Piezoeffekt die Schwingung elektrisch ankoppelt. Sein Vorteil ist das \(Q\): Wo ein LC-Kreis bei ein paar hundert endet, erreicht ein Quarz \(10^4\) bis \(10^6\) — entsprechend schärfer (Kapitel 15: \(\Delta f = f/Q\)) und stabiler ist sein Takt. Der Quarz in jeder Armbanduhr schwingt bei 32 768 Hz, und warum ausgerechnet dort, klärt Ü 19.1. Die Rückkopplung übernimmt ein Transistor: ein Ventil, das den großen DC-Energiefluss des Netzteils im Takt der Schwingung öffnet — die Hemmung der Pendeluhr, in Silizium gegossen, samt Sättigung als Amplitudenregler.

Und damit ist auch klar, was die Source in unseren Meep-Läufen die ganze Zeit war: die Abstraktion genau dieser Kette. „Hier sitzt ein Sender mit Frequenz \(f\)” — Netzteil, Oszillator und Verstärker in einer Programmzeile. Wie die Antenne als letzte Station die Schwingung tatsächlich vom Draht ins Feld ablöst, ist die Geschichte von Teil VI (Kapitel 21); und warum man dafür nicht einfach die 50 Hz direkt auf einen Draht geben kann, beantwortet Kapitel 25 mit einer einzigen Längenrechnung.

Bevor das Kapitel-Programm alles bündelt, der Kern dieses Kapitels in einem Satz: Wer Energie in zwei Formen speichern und verlustarm umpacken kann, schwingt — mit der Frequenz seiner Struktur, nicht der seiner Quelle.

TippMerkkasten
  • Energie hat keine Frequenz. Die Frequenz ist Eigenschaft einer schwingfähigen Struktur (\(\omega_0 = 1/\sqrt{LC}\)) und wird im Oszillator neu erzeugt — nie „hochtransformiert”.
  • Schwingen = Energie-Umpacken zwischen zwei Töpfen: Kondensator ↔︎ Spule, E-Feld ↔︎ B-Feld, Feder ↔︎ Masse. Die Energie pendelt mit \(2f_0\), weil sie quadratisch im Feld ist.
  • Der Leapfrog ist auch in null Dimensionen der richtige Integrator: versetzte Energie exakt konstant, Stabilität bis \(\omega_0\Delta t = 2\); Euler bläht jede Schwingung um exakt \(1+(\omega_0\Delta t)^2\) pro Schritt auf.
  • Ein Oszillator = Schwingkreis (Frequenz) + Verlust + sättigende Rückkopplung (Amplitude) + DC-Quelle (Energie). Das Schicksal ohne Rückkopplung: \(Q = \omega_0 L/R\) Schwingungen, dann ist Schluss.
  • Ein Hohlraum ist ein Schwingkreis ohne Bauteile — jede Mode ein eigenes LC-Paar mit eigenem \(Q\).

19.7 Das Kapitel-Programm

Das Programm kap19_oszillator.py (im Buchpaket unter programme/kap19/) bündelt alles: Leapfrog gegen Euler samt Theoriefaktor und Stabilitätsgrenze, die solve_ivp-Gegenprobe, den gedämpften Kreis mit exakter Wärmebilanz und \(Q\)-Fit, den van-der-Pol-Grenzzyklus von beiden Seiten, das Hohlraum-Pendel mit Verlustlauf und den Hemmungs-Stoß aus Ü 19.4. Jede Behauptung steht als assert; der Lauf braucht eine knappe halbe Minute und endet mit „Alle Tests bestanden.”

Roter Faden

Rückwärts: Das Induktionsgesetz aus Kapitel 3 ist zur Spule geschrumpft, der Leapfrog aus Kapitel 5 hat seine kleinste Bühne bekommen (und Eulers Explosion endlich ihre Zwei-Zeilen-Herleitung), die ca/cb-Koeffizienten aus Kapitel 6 dämpfen jetzt Schaltkreise, die CFL-Grenze aus Kapitel 8 zeigt sich als \(\omega_0\Delta t \le 2\) pur, das scipy aus Kapitel 11 hat seinen ODE-Auftritt, die Güte aus Kapitel 15 ihre Schaltkreis-Form \(Q = \omega_0 L/R\) (und der \(\sigma_D\)-Anker seine Energie-Lesart), und das Energie-Pendel aus Kapitel 18 ist zum Bauteilpaar geworden. Vorwärts: Kapitel 20 fragt, ob man die gedämpfte Schwingung rückwärts rechnen kann (die Wärme wird zum Problem), Kapitel 21 löst die Schwingung von der Schaltung und schickt sie als Welle davon — die Meep-Source bleibt dabei unsere Sender-Abstraktion —, Kapitel 22 verbindet Schaltkreis- und Feldsicht zur Leitungstheorie (50 Ω!), und Kapitel 27 liest Fabry-Pérot- und Ringresonatoren als das, was der Hohlraum heute geworden ist: Schwingkreise für Licht.

Übungen

Ü 19.1 (Verstehen). Zwei Frequenz-Steckbriefe: (a) Der Quarz jeder Armbanduhr schwingt bei exakt 32 768 Hz. Was ist an dieser Zahl so besonders, dass die Uhrenindustrie sie seit 1970 verwendet? (Tipp: Wie macht man aus der Schwingung ein Ein-Sekunden-Ticken, wenn die einzige billige Digitalschaltung ein Frequenzhalbierer ist?) (b) Ein Mittelwellenradio (530 kHz bis 1600 kHz) stimmt mit einem Drehkondensator ab, der sich von 500 pF auf 50 pF drehen lässt. Welche Spule \(L\) braucht der Schwingkreis — und passt der Drehbereich zum Frequenzband?

# von oben: np
print(f"(a) 32768 = 2^{int(np.log2(32768))}")
L_mw = 1 / ((2 * np.pi * 530e3) ** 2 * 500e-12)
print(f"(b) L = {L_mw * 1e6:.0f} µH")
for C_pf in (500, 50):
    f = 1 / (2 * np.pi * np.sqrt(L_mw * C_pf * 1e-12))
    print(f"    C = {C_pf} pF  ->  f = {f / 1e3:.0f} kHz")
(a) 32768 = 2^15
(b) L = 180 µH
    C = 500 pF  ->  f = 530 kHz
    C = 50 pF  ->  f = 1676 kHz

(a) \(32\,768 = 2^{15}\): Fünfzehn hintereinandergeschaltete Halbierer-Stufen machen daraus exakt 1 Hz — das Sekunden-Ticken. Jede andere Frequenz bräuchte Teiler durch krumme Zahlen, die Zweierpotenz braucht nur das billigste Digitalbauteil der Welt, fünfzehnmal. (b) Aus \(f = 1/(2\pi\sqrt{LC})\) am unteren Bandende folgt \(L \approx 180\) µH; weil \(f \propto 1/\sqrt{C}\) ist, überstreicht der Faktor 10 im Kondensator den Faktor \(\sqrt{10} \approx 3{,}2\) in der Frequenz — gemessen 530 bis 1676 kHz, das Band passt. Genau so fühlte sich Radio-Abstimmen ein Jahrhundert lang an: Man verdrehte ein \(C\) und wanderte damit die \(1/\sqrt{LC}\)-Skala entlang.

Ü 19.2 (Verstehen/Verändern). Eulers Aufblähfaktor \(1+(\omega_0\Delta t)^2\) pro Schritt sieht harmlos aus, wenn \(\Delta t\) klein ist. Zeige numerisch, dass er es nicht ist: Miss das Energiewachstum über 10 Perioden für \(\Delta t = 0{,}1\), \(0{,}05\), \(0{,}02\) und \(0{,}01\) und vergleiche mit der Näherung \(e^{T\Delta t}\) (mit \(T = 20\pi\); sie folgt aus \(\ln(1+x) \approx x\)). Wie klein müsste \(\Delta t\) sein, damit die Energie über 10 Perioden um höchstens 1 % wächst — und wie viele Schritte wären das?

# von oben: np, euler, T0
T = 10 * T0
for dt in (0.1, 0.05, 0.02, 0.01):
    U = euler(dt=dt, T=T)
    print(f"dt = {dt}: Energie x{U[-1] / 0.5:7.2f}   "
          f"(Näherung e^(T·dt) = {np.exp(T * dt):7.2f})")
dt_1prozent = np.log(1.01) / T
print(f"Für 1 %: dt = {dt_1prozent:.1e}  ->  "
      f"{T / dt_1prozent:.0f} Schritte für 10 Perioden")
dt = 0.1: Energie x 517.40   (Näherung e^(T·dt) =  535.49)
dt = 0.05: Energie x  23.01   (Näherung e^(T·dt) =   23.14)
dt = 0.02: Energie x   3.51   (Näherung e^(T·dt) =    3.51)
dt = 0.01: Energie x   1.87   (Näherung e^(T·dt) =    1.87)
Für 1 %: dt = 1.6e-04  ->  396755 Schritte für 10 Perioden

Die Näherung trifft gut (sie liegt stets leicht drüber, weil \(\ln(1+x) < x\)). Das Wachstum pro Zeiteinheit ist \(e^{\omega_0^2\Delta t}\) — es schrumpft nur linear mit \(\Delta t\). Für 1 % über 10 Perioden braucht Euler \(\Delta t \approx 1{,}6\cdot 10^{-4}\), also rund 400 000 Schritte — während der Leapfrog mit \(\Delta t = 0{,}05\) (1257 Schritte) die Energie auf fünfzehn Dezimalstellen hält. Der Unterschied ist nicht Fleiß, sondern Struktur: Euler hat das Aufblähen eingebaut, der Leapfrog die Erhaltung.

Ü 19.3 (Verändern). Die \(Q\)-Gerade des Schwingkreises: Lass den gedämpften Kreis für \(R = 0{,}05\), \(0{,}1\), \(0{,}2\), \(0{,}4\) und \(0{,}8\) laufen, miss jeweils die Abklingrate der Energie per Log-Fit und trage \(Q = \omega_0/\text{Rate}\) gegen \(\omega_0 L/R\) auf. Liegt alles auf der Geraden — auch beim „schlechten” Kreis mit \(Q\) nahe 1, wo die Schwingung nach einer Umdrehung fast verhungert? (Kapitel 15 hat dieselbe Messung am Hohlraum gemacht — dort war \(\sigma_D\) der Drehknopf.)

# von oben: np, leapfrog, OMEGA0, L
print(" R      Q gemessen   Q = w0 L/R")
for R_test in (0.05, 0.1, 0.2, 0.4, 0.8):
    *_, U_t, _ = leapfrog(R=R_test, dt=0.005, T=80.0)
    t_t = np.arange(1, len(U_t) + 1) * 0.005
    rate = -np.polyfit(t_t, np.log(U_t), 1)[0]
    print(f"{R_test:5.2f}   {OMEGA0 / rate:9.2f}   "
          f"{OMEGA0 * L / R_test:9.2f}")
 R      Q gemessen   Q = w0 L/R
 0.05       20.00       20.00
 0.10       10.00       10.00
 0.20        5.00        5.00
 0.40        2.50        2.50
 0.80        1.25        1.25

Alle fünf Punkte sitzen auf der Geraden, selbst \(Q = 1{,}25\) — die Energie-Abklingrate ist exakt \(R/L\), unabhängig davon, wie stark die Dämpfung die Schwingung schon verformt (erst nahe am Kriechfall, \(R = 2\sqrt{L/C}\), bräche die Auswertung zusammen, weil nichts mehr schwingt). Die Messkette ist dieselbe wie am Kapitel-15-Hohlraum: anregen, loslassen, Logarithmus fitten — nur der Verlust-Drehknopf heißt hier \(R\) statt \(\sigma_D\).

Ü 19.4 (Übertragen). Die Pendeluhr im Computer: Ersetze die kontinuierliche Rückkopplung des van-der-Pol-Kreises durch eine Hemmung — einen festen Stromstoß \(\Delta i = 0{,}05\), der genau einmal pro Periode wirkt (im Moment des Nulldurchgangs von \(q\), wenn \(|i|\) maximal ist, in Bewegungsrichtung). Starte den gedämpften Kreis (\(R = 0{,}12\)) mit kleiner Amplitude und beobachte \(|i|\) unmittelbar nach jedem Stoß. Auf welchen Wert stellt sich die Schwingung ein? Leite das Gleichgewicht her: Zwischen zwei Stößen fällt die Stromamplitude um den Faktor \(e^{-R T_0/2L}\), der Stoß hebt sie um \(\Delta i\).

# von oben: np, L, C, T0
R_u, DI, dt = 0.12, 0.05, 0.005
s = R_u * dt / (2 * L)
ca, cb = (1 - s) / (1 + s), (dt / L) / (1 + s)
q, i = 0.2, 0.0
amps = []
for n in range(int(600 / dt)):
    i = ca * i - cb * q / C
    q_alt, q = q, q + dt * i
    if q_alt > 0 >= q:            # Nulldurchgang abwärts
        i -= DI                   # Stoß in Bewegungsrichtung
        amps.append(abs(i))
i_stat = DI / (1 - np.exp(-R_u * T0 / (2 * L)))
print(f"|i| nach Stoß: erst {amps[0]:.3f}, zuletzt {amps[-1]:.4f}")
print(f"Gleichgewicht Δi/(1-e^(-R T₀/2L)) = {i_stat:.4f}")
|i| nach Stoß: erst 0.231, zuletzt 0.1589
Gleichgewicht Δi/(1-e^(-R T₀/2L)) = 0.1592

Im Gleichgewicht muss der Stoß genau das ersetzen, was eine Periode Dämpfung wegnimmt: \(i_\infty\,(1 - e^{-R T_0/2L}) = \Delta i\), also \(i_\infty = \Delta i/(1 - e^{-R T_0/2L}) = 0{,}159\) — die Messung trifft das auf drei Stellen. Wie beim van der Pol findet die Amplitude sich selbst, aber der Mechanismus ist getaktet statt kontinuierlich: zu kleine Schwingung → der relative Verlust pro Periode ist kleiner als der Stoß → sie wächst (und umgekehrt). Genau so hält die Hemmung einer Pendeluhr ihr Pendel seit dem 17. Jahrhundert auf Amplitude — und genau so arbeitet jeder getaktete Treiber, vom Schaukel-Anschubser bis zur Motorzündung.

Das Kleingedruckte

Warum der Leapfrog die Energie hält: Symplektik. Dass der Leapfrog die (versetzte) Energie exakt erhält, ist kein Zufall, sondern Familieneigenschaft: Er gehört zu den symplektischen Integratoren, die die geometrische Struktur der Mechanik (die Erhaltung von Phasenraumvolumen) ins Diskrete retten. Solche Verfahren lösen nicht die exakte Gleichung näherungsweise, sondern eine minimal verschobene Gleichung exakt — unsere versetzte Energie ist genau die Erhaltungsgröße dieser Schattengleichung. Deshalb rechnet die Himmelsmechanik Planetenbahnen über Jahrmillionen mit Leapfrog-Verwandten („Störmer–Verlet”), und deshalb driftet FDTD auch nach Millionen Zeitschritten nicht in der Amplitude. Der Preis ist der Phasenfehler aus dem solve_ivp-Vergleich — Energie exakt, Tempo leicht daneben: für Stabilität fast immer der bessere Tausch.

Die van-der-Pol-Amplitude. Die Behauptung \(A = 2q_s\sqrt{(k-R)/k}\) folgt mit dem Mittelungstrick aus Kapitel 10: Für eine fast sinusförmige Schwingung \(q = A\cos\omega_0 t\) ist die mittlere Verlustleistung \(\langle (R - k + k q^2/q_s^2)\,i^2\rangle\). Mit \(\langle i^2\rangle = A^2\omega_0^2/2\) und \(\langle q^2 i^2\rangle = A^4\omega_0^2/8\) (das Produkt \(\cos^2\sin^2\) mittelt auf \(1/8\)) verschwindet sie genau bei \(A^2 = 4q_s^2 (k-R)/k\). Die Messung in Abbildung 19.4 trifft das auf vier Stellen, weil \(k - R\) klein ist; bei brutal übersteuerter Rückkopplung wird die Schwingung merklich unsinusförmig und die Formel zur Näherung — der van der Pol wird dann zum „Relaxationsoszillator” mit Sägezahn-Charakter.

Meeps Energie-Zähler und der Yee-Versatz. electric_energy_in_box und magnetic_energy_in_box integrieren \(\tfrac12\vec E\cdot\vec D\) bzw. \(\tfrac12\vec H\cdot\vec B\) über das Gebiet — zum aktuellen Zeitpunkt, und der ist für E und B verschieden (Kapitel 5). Ohne Gegenmaßnahme zittert die Summe deshalb um ein paar Prozent; synchronized_magnetic lässt Meep das B-Feld für die Dauer der Messung um den halben Schritt mitteln und drückt das Zittern in unserem Lauf von 2,8 % auf 0,65 %. Ganz verschwinden kann es so nicht — die Mittelung ist zweiter Ordnung, keine exakte Buchhaltung. Wer es exakt braucht, bucht versetzt (\(E^n E^{n+1}\)), wie in Kapitel 18 von Hand.

Reale Oszillatoren. Zwischen unserem van der Pol und einem WLAN-Sender liegen drei Ingenieursschichten, die alle dieselbe Physik verfeinern: Der Quarz ersetzt das LC-Paar durch einen mechanischen Resonator mit \(Q \sim 10^5\) (schärferer Takt, denn das Phasenrauschen eines Oszillators sinkt mit \(1/Q^2\)); die PLL (Phasenregelschleife) vervielfacht eine Quarz-Referenzfrequenz auf die Zielfrequenz — auch sie transformiert keine Frequenz „hoch”, sondern vergleicht und regelt einen zweiten Oszillator; und die Amplitudenregelung ist statt einer rohen Sättigung oft eine eigene Regelschleife, die die Verzerrung kleinhält. Das Grundgerüst bleibt in jedem Fall das von Tabelle 19.2: Töpfe, Verlust, getaktete Zufuhr.