Allgemeine Dynamik (pyna.dynamics)#
pyna.dynamics ist die breite Schicht für dynamische Systeme. Sie ist
absichtlich klein gehalten und mit pyna.topo interoperabel:
aufrufbare ODE-Flüsse mit abgetasteten Trajektorien
kanonische Hamiltonsche Systeme und separable Hamiltonians
paarweise gravitative/elektrostatische N-Körper-Systeme
endlichdimensionale Abbildungen mit Jacobi-Matrizen, Fixpunktresiduen und Schätzungen des Lyapunov-Spektrums
Ito-SDEs, Brownian motion und geometrische Brownian motion
Die Klassen verwenden eine zustandsorientierte Konvention:
rhs(x, t) für Flüsse und step(x) für Abbildungen.
Geometrieintegration#
Das Modul gibt dieselben Geometrieklassen zurück, die auch von der toroidalen Topologie verwendet werden:
TimeSeriesSolutionist einepyna.topo.core.Trajectory.CallableMap.orbit_geometrygibtpyna.topo.core.Orbitzurück.CallableMap.periodic_orbitgibtpyna.topo.core.PeriodicOrbitzurück.pyna.topo.CoreTubeundpyna.topo.CoreIslandChainsind die generischen endlichdimensionalen Wurzeln;pyna.topo.Tubebleibt aus Gründen der Rückwärtskompatibilität die toroidale Spezialisierung.
Dadurch können Hamiltonsche Systeme, N-Körper-Flüsse, Abbildungen und
SDE-Abtastpfade dasselbe Vokabular Cycle/Tube/IslandChain wie die
Topologie magnetischer Feldlinien teilen.
Für Lehrnotebooks oder erweiterungsreiche Workflows siehe
Dynamik-Workflows und Erweiterungshilfen zu TopologyWorkflow und den Low-Level-Hilfen für
Adapter, Builder, Bridges und Factories.
Kontinuierliche Flüsse#
Hamiltonsche Systeme#
Verwenden Sie HamiltonianSystem, wenn Sie H(q, p, t) oder dessen
Gradienten bereitstellen können. Verwenden Sie SeparableHamiltonianSystem
für H(q, p) = T(p) + V(q) und Velocity-Verlet-Schritte.
import numpy as np
from pyna.dynamics import SeparableHamiltonianSystem
oscillator = SeparableHamiltonianSystem(
kinetic=lambda p, t: 0.5 * np.dot(p, p),
potential=lambda q, t: 0.5 * np.dot(q, q),
grad_kinetic=lambda p, t: p,
grad_potential=lambda q, t: q,
dof=1,
)
x1 = oscillator.step_velocity_verlet(np.array([1.0, 0.0]), dt=0.01)
N-Körper-Systeme#
NBodySystem speichert abgeflachte Zustandsvektoren als
[positions.ravel(), velocities.ravel()] und stellt Hilfen zum Packen und
Entpacken strukturierter Arrays bereit. Es unterstützt Newtonsche Gravitation
und elektrostatische Coulomb-Wechselwirkungen.
import numpy as np
from pyna.dynamics import NBodySystem
system = NBodySystem([1.0, 1.0], spatial_dim=2, interaction="gravity")
y0 = system.pack_state(
positions=np.array([[-1.0, 0.0], [1.0, 0.0]]),
velocities=np.zeros((2, 2)),
)
dy = system.vector_field(y0)
Abbildungen und lokale Mannigfaltigkeiten#
CallableMap verarbeitet beliebige endlichdimensionale Abbildungen.
fixed_point_eigenspaces klassifiziert stabile, instabile und zentrale
Eigenräume eines Fixpunkts und ist eine nützliche Brücke zur Konstruktion
lokaler Mannigfaltigkeiten.
Stochastische Differentialgleichungen#
Die SDE-Schicht verwendet die Ito-Form dX = a(X,t) dt + B(X,t) dW und eine
deterministische Euler-Maruyama-Implementierung für reproduzierbare Forschung
und Lehrbeispiele. Für Workflows zur Verteilungsschätzung siehe
SDE-Monte-Carlo-Verteilungen.
from pyna.dynamics import GeometricBrownianMotion
stock = GeometricBrownianMotion(mu=[0.08], sigma=[0.20])
print(stock.expected_log_growth())
Verwandte Topologieschicht#
Das Topologiepaket hält die abstrakte mathematische Hierarchie und die Poincare-Maschinerie: