24 lines
774 B
Python
24 lines
774 B
Python
import numpy as np
|
|||
|
|
import math
|
||
|
|
|
||
|
|
stochastic_noise_std = 0.05
|
||
|
|
rng = np.random.default_rng(42)
|
||
|
|
|
||
|
|
# Euler-Maruyama test
|
||
|
|
similarity = complex(1.0, 0.0)
|
||
|
|
dt_true = 0.05 # 20 Hz
|
||
|
|
dt_hardcoded = 1.0 # What the codebase uses
|
||
|
|
|
||
|
|
for i in range(100):
|
||
|
|
dW = (rng.normal(0, 1.0) + 1j * rng.normal(0, 1.0)) * math.sqrt(dt_hardcoded)
|
||
|
|
similarity += similarity * (0.0 * dt_hardcoded + stochastic_noise_std * dW)
|
||
|
|
|
||
|
|
print(f"Similarity after 100 steps (dt=1.0): {abs(similarity)}")
|
||
|
|
|
||
|
|
similarity2 = complex(1.0, 0.0)
|
||
|
|
rng2 = np.random.default_rng(42)
|
||
|
|
for i in range(100):
|
||
|
|
dW = (rng2.normal(0, 1.0) + 1j * rng2.normal(0, 1.0)) * math.sqrt(dt_true)
|
||
|
|
similarity2 += similarity2 * (0.0 * dt_true + stochastic_noise_std * dW)
|
||
|
|
|
||
|
|
print(f"Similarity after 100 steps (dt=0.05): {abs(similarity2)}")
|