일반 동역학 (pyna.dynamics)#
pyna.dynamics 는 넓은 의미의 동역학계 계층입니다. 의도적으로 작게 유지되어
있으며 pyna.topo 와 함께 쓰기 쉽습니다.
표본 trajectory를 갖는 callable ODE flow
canonical Hamiltonian system 및 separable Hamiltonian
쌍대 gravitational/electrostatic N-body system
Jacobian, fixed-point residual, Lyapunov spectrum 추정을 포함한 유한 차원 map
Ito SDE, Brownian motion, geometric Brownian motion
클래스들은 상태 우선 관례를 사용합니다. flow에는 rhs(x, t), map에는
step(x) 를 씁니다.
기하 통합#
이 모듈은 토로이달 위상 계층에서 쓰는 것과 같은 geometry class를 반환합니다.
TimeSeriesSolution은pyna.topo.core.Trajectory입니다.CallableMap.orbit_geometry는pyna.topo.core.Orbit을 반환합니다.CallableMap.periodic_orbit는pyna.topo.core.PeriodicOrbit을 반환합니다.pyna.topo.CoreTube와pyna.topo.CoreIslandChain은 일반 유한 차원 root입니다.pyna.topo.Tube는 이전 호환성을 위한 토로이달 specialization으로 남아 있습니다.
이 덕분에 해밀토니안 계, N-body flow, map, SDE 표본 경로가 자기장 선 위상과
같은 Cycle/Tube/IslandChain 어휘를 공유할 수 있습니다.
교육용 notebook 또는 extension이 많은 workflow는 TopologyWorkflow 와
저수준 adapter, builder, bridge, factory helper를 설명하는
동역학 워크플로와 확장 헬퍼 를 보세요.
연속 흐름#
해밀토니안 계#
H(q, p, t) 또는 그 gradient를 제공할 수 있으면 HamiltonianSystem 을
사용하세요. H(q, p) = T(p) + V(q) 형태와 velocity-Verlet step에는
SeparableHamiltonianSystem 을 사용합니다.
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-body 계#
NBodySystem 은 flatten된 state vector를
[positions.ravel(), velocities.ravel()] 로 저장하고, structured array를
pack/unpack하는 helper를 제공합니다. Newtonian gravity와 electrostatic
Coulomb interaction을 지원합니다.
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)
맵과 국소 다양체#
CallableMap 은 임의의 유한 차원 map을 다룹니다. fixed_point_eigenspaces
는 고정점의 stable, unstable, center eigenspace를 분류하며 local manifold
구성으로 이어지는 유용한 bridge입니다.
확률 미분방정식#
SDE 계층은 Ito 형식 dX = a(X,t) dt + B(X,t) dW 를 사용하며, 재현 가능한
연구와 교육 예제를 위해 deterministic Euler-Maruyama 구현을 제공합니다.
분포 추정 workflow는 SDE 몬테카를로 분포 를 보세요.
from pyna.dynamics import GeometricBrownianMotion
stock = GeometricBrownianMotion(mu=[0.08], sigma=[0.20])
print(stock.expected_log_growth())
관련 위상 계층#
topology package는 추상 수학 계층과 푸앵카레 장치를 보관합니다.