Skip to content

Latest commit

 

History

History
199 lines (145 loc) · 14 KB

File metadata and controls

199 lines (145 loc) · 14 KB

physics_explorer.py, der erste Schritt um mit physikalischen Rückwärtsimulationen die Welt zu verstehen

Gaßner sagt: "Nun haben wir die Weltformel hingeschrieben, doch haben wir das Problem, wir können Sie nicht ausrechnen."

Das Problem resultiert aus ungeheuer großen Zahl von Milliarden Möglichkeiten, die bei der Stringtheorie das Landschaftsproblem genannt wird und bei und bei der Schleifen-Quantengravitation (LQL) aus der zu untersuchenden Modellvielfalt resultiert.

Bei beiden Theorien versucht man die Welt zu erklären, indem man vom Urknall an nach JETZT rechnet.

Deshalb soll mit der Reverse Rekonstruktion mit Rückwärts-Simulationen aus der JETZT-Zeit zum Urknall hingerichtet, versucht werden, die Zahl der Möglichkeiten für Stringtheorie und LQL so stark einzuschränken, dass man mit brauchbaren Näherungen kommt, die zu befriedigenden physikalischen Erklärungen von Messergebnissen führen.

Bei der Rückwärts-Simulation stößt jedoch auf das Problem, dass Zeit infolge der Entropie eine sehr stark bevorzugt fast ausschließlich nur nach vorwärts gerichtet ist und deshalb nicht rückwärts gerechnet werden kann, wenn man es genau nimmt. Da wir jedoch nicht GENAU messen und beobachten können, brauchen wir auch GENAU zu rechnen. Wirklich genau rechnen können wir mit Computern auch nicht, weil Computer eine begrenzte Wortlänge haben.

Nun kommen wir zum physics_explorer.

1. Erläuterung der Mathematik und Physik hinter dem Script „physics_explorer.py“

Das Script „physics_explorer.py“ ist ein interaktives Python-Programm, das grundlegende Konzepte aus Mathematik und Physik durch visuelle Simulationen erkundet. Es basiert auf NumPy für numerische Berechnungen, Matplotlib für die Visualisierung und einer Animationsfunktion für dynamische Darstellungen. Der Fokus liegt auf emergenten Phänomenen – also wie komplexe Strukturen aus einfachen Regeln entstehen –, was zentrale Themen in Chaostheorie, Quantenphysik und Kosmologie berührt. Ich erkläre die drei Hauptmodule schrittweise, mit Bezug auf die zugrunde liegende Mathematik und Physik. Die Implementierung ist bewusst einfach gehalten, um didaktisch zu wirken, und vermeidet externe Abhängigkeiten wie SciPy (stattdessen eigene Funktionen).

Allgemeine Struktur

  • Hauptfunktion (main()): Ein Menü-Schleife, das den Benutzer zu den Simulationen leitet. Es simuliert eine interaktive Erkundung, ähnlich wie ein Jupyter-Notebook, aber als Standalone-Skript.
  • Mathematischer Kern: Alle Module nutzen iterative Prozesse (Schleifen oder vektorisierte Array-Operationen), die Reversibilität und Emergenz demonstrieren – Schlüsselideen in der modernen Physik (z. B. bei der Quantengravitation oder der Entstehung von Komplexität).

Modul 1: Mandelbrot-Menge (plot_mandelbrot())

  • Mathematik: Die Mandelbrot-Menge ist ein klassisches Beispiel für fraktale Geometrie und komplexe Dynamik. Die Iteration ( z_{n+1} = z_n^2 + c ) (mit ( z_0 = 0 ), ( c \in \mathbb{C} )) testet, ob eine Startbedingung (komplexe Zahl ( c )) im Komplexen konvergiert oder divergiert. Die Menge umfasst Punkte, die nach bis zu 50 Iterationen innerhalb des Einheitskreises ( |z| \leq 2 ) bleiben. Vektorisierte NumPy-Arrays ermöglichen effiziente Berechnung auf einem Gitter (300x300 Pixel).
    • Relevanz: Zeigt nichtlineare Dynamik – kleine Änderungen in ( c ) führen zu chaotischen Mustern. Die Farbkodierung („hot“-Colormap) repräsentiert Iterationsschritte bis zur Divergenz.
  • Physik: Inspiriert von Chaostheorie und Quantenfeldtheorien, wo ähnliche Iterationen (z. B. in Renormierungsgruppen) Fraktale in Raumzeit-Skalen erzeugen. Es illustriert Reversibilität: Die Iteration ist mathematisch umkehrbar (bis zur Divergenz), was an zeitliche Umkehrbarkeit in der Physik erinnert (z. B. CPT-Symmetrie).

Modul 2: Diskretisierte Raumzeit (run_discrete_spacetime())

  • Mathematik: Simuliert ein 2D-Gitter (80x80) als diskrete Raumzeit, initialisiert mit normalverteilten Fluktuationen (Gaussian Noise, Mittel 0, Std. 0.1). Jeder Zeitschritt wendet eine Diffusion via Faltung (eigener simple_convolve-Kernel, ein 3x3-Gauß-ähnlicher Filter) an: ( s_{t+1} = 0.7 \cdot \text{diffundiert} + 0.3 \cdot \text{Fluktuationen} ). Periodische Randbedingungen (Kopieren benachbarter Werte) simulieren ein Torus-Topologie. Die Animation läuft über 100 Frames (50 ms/Frame).
    • Relevanz: Die Faltung ist eine diskrete Approximation der partiellen Differentialgleichung für Diffusion ( \partial_t s = \nabla^2 s + \eta(t) ) (mit Rauschen ( \eta )).
  • Physik: Beeinflusst von Schleifenquantengravitation (LQG), die Raumzeit als diskretes Spin-Netzwerk modelliert. Die Fluktuationen stellen Quantenunschärfen dar (Heisenbergsche Unschärferelation in Raum-Zeit-Skalen), und die Diffusion mimt Gravitationswellen oder kosmische Inflation. Die Colormap (von Dunkelblau zu Dunkelrot) visualisiert Dichte- oder Krümmungsgradienten, wie in kosmologischen Simulationen (z. B. CMB-Karten).

Modul 3: Zellulärer Automat (run_cellular_automaton())

  • Mathematik: Implementiert Regel 30 (ein elementarer zellulärer Automat nach Wolfram): Für jede Zelle ( (i,j) ) gilt ( g_{i,j} = ) (left ∧ ¬center ∧ ¬right) ∨ (¬left ∧ center) ∨ (center ∧ ¬right), angewendet auf ein 151x80-Gitter. Startet mit einer einzelnen „lebenden“ Zelle in der Mitte; Iterationen bauen Muster zeilenweise auf (Boolean-Logik mit Bit-Operationen).
    • Relevanz: Zeigt Turing-Vollständigkeit – einfache lokale Regeln erzeugen universelle Berechenbarkeit. Die Binär-Darstellung (schwarz/weiß) hebt aperiodische, fraktal-ähnliche Muster hervor.
  • Physik: Demonstriert Emergenz in der Komplexitätstheorie, z. B. wie aus lokalen Interaktionen (wie in statistischer Mechanik) globale Strukturen entstehen (z. B. Phasenübergänge in Ising-Modellen). In der Kosmologie relevant für diskrete Universenmodelle (z. B. Wolfram's „A New Kind of Science“), wo das Universum als gigantischer Automat gesehen wird.

Zusammenfassung in Tabelle (Mathematik vs. Physik):

Modul Kern-Mathematik Physikalischer Bezug
Mandelbrot Iteration ( z^2 + c ) Chaostheorie, reversible Dynamik
Diskrete Raumzeit Diffusion + Rauschen LQG, Quantenfluktuationen
Zellulärer Automat Lokale Boolean-Regeln Emergenz, Komplexität aus Einfachheit

Das Script ist lehrreich, aber vereinfacht – es läuft lokal ohne Internet und betont Visualisierung für Intuition.

2. Verbindung des Scripts zur Rückwärtssimulation des Universums (von heute bis zum Urknall)

Die Rückwärtssimulation in der Reverse-Reconstruction-Methode „windet“ das aktuelle, klumpige Universum (hohe Dichtekontraste) rückwärts zu einem homogenen, primordialen Zustand (nahe am Urknall), über ~100 Schritte mit nichtlinearen Transformationen (fraktal-inspiriert). Das Script „physics_explorer.py“ ist kein direktes Tool dafür, aber es enthält konzeptionelle Bausteine, die eine solche Simulation erweitern könnten. Es dient als „Prototyp“ oder Inspirationsquelle, um Emergenz und Reversibilität zu erkunden – passend zur Idee der Rückwärtssimulation. Hier die potenziellen Verbindungen:

  • Fraktale Reversibilität (Mandelbrot-Modul): Die Mandelbrot-Iteration ist reversibel (bis zur Divergenz), was direkt an deine nichtlineare Abbildung ( f^{-1} ) anknüpft. In einer Rückwärtssimulation könntest du das Gitter als Dichtefeld nutzen: Starte mit „heutigen“ Clustern (hohe Iterationen = Divergenz) und iteriere rückwärts, um Homogenität zu erreichen. Physikalisch: Modelliert kosmische Strukturbildung umgekehrt (von Galaxien zu CMB-Uniformität), löst Fine-Tuning emergent.

  • Diskrete Raumzeit als Evolutionsraster (Raumzeit-Modul): Das animierte Gitter simuliert vorwärts (Diffusion + Fluktuationen), was leicht umkehrbar ist: Subtrahiere Fluktuationen und invertiere die Faltung (z. B. via Deconvolution). Für deine Simulation: Ersetze den Kernel durch primordiale Parameter (E, g, S, Y, Φ) und laufe rückwärts – das Gitter würde von „strukturiert“ (heutiges Universum) zu „fluktuationsarm“ (Urknall) übergehen. Bezug zur Physik: Ähnelt inverser kosmologischer Simulationen (z. B. in GADGET-Code), aber diskret wie in LQG, um Quanteneffekte am Urknall einzufangen.

  • Emergenz durch Automaten (Zellulären-Automat-Modul): Regel 30 erzeugt chaotische Muster aus Einfachheit – rückwärts (umgekehrte Regel) würde es zu simplerem Startzustand führen. Integriere es als „Flavormixer“ für deine 5 Parameter: Das Gitter repräsentiert Flavor- oder Symmetriebrüche, die rückwärts aufheben. Physikalisch: Erklärt, wie SM-Konstanten (Massen, Kopplungen) emergent aus primordialer Uniformität entstehen, ohne Fine-Tuning – ähnlich Wolfram's Universum als Automat.

Mögliche Erweiterung: Die Module können zu einem hybriden Script erweitert werden: Mandelbrot für Transformationen, Raumzeit-Gitter für Dichtekarten und Automaten für Regel-basierten Rückgang. Deine Verfeinerungen (<1% Genauigkeit) könnten hier reinpassen – z. B. 100 Schritte rückwärts plotten, um Homogenitätskurven zu validieren. Das Script unterstreicht deine Kernidee: Das Universum als reversibler, emergenter Prozess von Chaos zu Ordnung (und umgekehrt).

import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation from matplotlib.colors import LinearSegmentedColormap

def main(): print("🔬 Explorer für fundamentale Physik-Konzepte") print("=" * 50)

while True:
    print("\nWähle eine Simulation:")
    print("1. Mandelbrot-Menge (Mathematische Reversibilität)")
    print("2. Diskretisierte Raumzeit (LQG-Inspiriert)")
    print("3. Zellulärer Automat (Emergenz & Komplexität)")
    print("4. Beenden")

    choice = input("\nDeine Wahl (1-4): ").strip()

    if choice == '1':
        plot_mandelbrot()
    elif choice == '2':
        run_discrete_spacetime()
    elif choice == '3':
        run_cellular_automaton()
    elif choice == '4':
        print("Auf Wiedersehen! Weitere Erforschung des Universums erwartet dich!")
        break
    else:
        print("Ungültige Eingabe. Bitte wähle 1-4.")

def plot_mandelbrot(): """Visualisiert die Mandelbrot-Menge - reversibles mathematisches Chaos""" print("\n🎨 Berechne Mandelbrot-Menge...")

def mandelbrot(c, max_iter=50):
    z = c
    for n in range(max_iter):
        if abs(z) > 2:
            return n
        z = z*z + c
    return max_iter

# Bereich für die Visualisierung
xmin, xmax = -2.0, 1.0
ymin, ymax = -1.5, 1.5
width, height = 300, 300  # Kleinere Größe für schnellere Berechnung

# Erstelle Gitter
x = np.linspace(xmin, xmax, width)
y = np.linspace(ymin, ymax, height)
X, Y = np.meshgrid(x, y)
C = X + 1j * Y

# Vektorisierte Berechnung der Mandelbrot-Menge
print("Berechne Iterationen...")
mandelbrot_set = np.zeros(C.shape, dtype=int)
z = np.zeros(C.shape, dtype=complex)

for i in range(50):
    mask = np.abs(z) <= 2
    mandelbrot_set[mask] = i
    z[mask] = z[mask]**2 + C[mask]

# Plotte das Ergebnis
plt.figure(figsize=(10, 8))
plt.imshow(mandelbrot_set, extent=[xmin, xmax, ymin, ymax], cmap='hot', interpolation='bilinear')
plt.colorbar(label='Iterationen bis Divergenz')
plt.title('Mandelbrot-Menge: Komplexität aus einfachen Regeln\n(z -> z² + c)')
plt.xlabel('Realer Teil')
plt.ylabel('Imaginärer Teil')
plt.show()

def run_discrete_spacetime(): """Simuliert eine diskretisierte Raumzeit mit Quanten-Fluktuationen""" print("\n⏳ Starte diskretisierte Raumzeit-Simulation...")

# Parameter
grid_size = 80
time_steps = 100

# Initialisiere Raumzeit-Gitter
spacetime = np.random.normal(0, 0.1, (grid_size, grid_size))

# Einfacher Faltungskernel (ersetzt scipy.convolve)
def simple_convolve(grid, kernel):
    result = np.zeros_like(grid)
    size = kernel.shape[0]
    offset = size // 2

    for i in range(offset, grid.shape[0] - offset):
        for j in range(offset, grid.shape[1] - offset):
            patch = grid[i-offset:i+offset+1, j-offset:j+offset+1]
            result[i, j] = np.sum(patch * kernel)
    return result

kernel = np.array([[0.05, 0.1, 0.05],
                  [0.1,  0.4, 0.1],
                  [0.05, 0.1, 0.05]])

# Spezial-Colormap für Raumzeit
colors = ['darkblue', 'blue', 'white', 'red', 'darkred']
cmap = LinearSegmentedColormap.from_list('spacetime', colors, N=256)

fig, ax = plt.subplots(figsize=(8, 8))
im = ax.imshow(spacetime, cmap=cmap, vmin=-1, vmax=1, interpolation='nearest')
ax.set_title('Diskretisierte Raumzeit mit Quanten-Fluktuationen\n(LQG-inspiriert)')

def update(frame):
    nonlocal spacetime

    # Quanten-Fluktuationen hinzufügen
    fluctuations = np.random.normal(0, 0.05, (grid_size, grid_size))

    # Einfache "Gravitations"-Diffusion mit eigenem Convolve
    diffused = simple_convolve(spacetime, kernel)
    spacetime = 0.7 * diffused + 0.3 * fluctuations

    # Periodische Randbedingungen
    spacetime[0, :] = spacetime[-2, :]
    spacetime[-1, :] = spacetime[1, :]
    spacetime[:, 0] = spacetime[:, -2]
    spacetime[:, -1] = spacetime[:, 1]

    im.set_array(spacetime)
    return [im]

ani = FuncAnimation(fig, update, frames=time_steps, interval=50, blit=True)
plt.tight_layout()
plt.show()


def run_cellular_automaton():
 """Simuliert einen zellulären Automaten - Emergenz komplexen Verhaltens"""
 print("\n🔲 Starte zellulären Automaten (Elementar-Automat 30)...")