Computational Methods for Kuramoto BenchmarkðŠķ
ðïļ Numerical Discretization: Taylor Series ExpansionðŠķ
We can numerically solve \(\dot{\theta}_i(t)=f(\theta, t)\) using a Taylor series expansion to approximate the solution at \(t + \Delta t\):
-
ðĒ {.lg .middle } Euler's Method
Only retains the first-order term \(\mathcal{O}(\Delta t)\).
-
ðī {.lg .middle } Runge-Kutta Methods
Approximates higher-order terms (HOTs) via evaluation of \(f\) at multiple grid points within the interval $[t, t+\Delta t] without requiring explicit HOTs.
Numerical Methods Implemented in the Kuramoto BenchmarkðŠķ
Adaptive Integration via RK45
Implementation
- Implemented as an embedded method in
src/kuramoto/model.py. -
For each time step, it computes two estimates of the next state:
- A fourth-order estimate \(\theta[t_{k+1}]\).
- A fifth-order estimate \(\hat{\theta}[t_{k+1}]\).
-
Estimated error is $$ \epsilon = | \hat{\theta}[t_{k+1}] - \theta[t_{k+1}] | $$
Double-check the accuracy of this description.
Adaptive Step-Size Logic
The step size \(\Delta t\) is dynamically adjusted so that the error \(\epsilon\) stays below a tolerance \(\tau = \text{atol} + \text{rtol} \cdot \|\theta[t_k]\|\):
- If \(\epsilon > \tau\), then reject the step and decrease \(\Delta t\).
- If \(\epsilon \ll \tau\), then accept the step and increase \(\Delta t\) for the next iteration.
ðĻ Significance for Kuramoto Benchmark
The adaptive step size logic is important because it prevents the dynamics from becoming "stiff" when the order parameter \(r(t)\) reaches the synchronization threshold.
Overview
- Logic: Calculates the system's maximum characteristic frequency (\(\lambda_{\text{max}}\)).
-
Justification: For a chaotic synchronization regime, implementing Nyquist-based adaptivity in the integration scheme can help prevent aliasing.
This extension was an idea suggested by the author and engineered with LLM assistance.
- Further details on this Nyquist-based extension need to be explored by the author.
- The implementation details in the code itself still need to be reviewed by the author.
Implementation Details
- Implemented in
src/kuramoto/model.py. - Called in the
simulatemethod using the_max_stephelper.