1.10 Limits and edge cases
- Two-channel aliasing. With 2 near-commensurate cycles and a single snapshot, wrong valleys can persist; use stack
S >= 3. - High noise (>= 12 deg). Increase
S, diversify periods (e.g., include a 5-day), or add more channels. - Non-integer periods only. The formal LCM is huge; use
max(periods)and rely on stacking. - Dropouts. If some channels are missing at a snapshot, keep stacking;
alpha_iandSwill carry the solution. - Confidence near flat bowls. Very small curvature implies
conf ~ 0; report it, do not mask it.
1.11 Reference pseudocode (helpers, ASCII)
LCM of integer-day periods.
lcm(a,b): return a*b // gcd(a,b)
lcm_days(P): L = P[0]
for x in P[1:]:
L = lcm(L, x)
return L
Curvature-based confidence.
curvature_to_confidence(E, t, h=1e-4, c_conf=1.0, eps_E=1e-12):
c = (E(t+h) - 2*E(t) + E(t-h)) / (h*h)
curv_norm = c / max(E(t), eps_E)
return tanh( c_conf * curv_norm ) # bounded to [0,1)
Cusp proximity (example).
cusp_proximity_deg(phi, half_width=15.0):
k = round(phi / 30.0)
target = 30.0 * k
d = abs( angdiff(phi, target) ) # in [0,180]
return max( 0.0 , 1.0 - d / half_width )
Section 1 takeaway
- Kernel stays one line:
tau_hat = argmin_t SUM_i alpha_i * angdiff( phi_i_obs , b0_i + w_i*t )^2 - Identifiability is won numerically: stacking snapshots (no ephemeris) + multistart + Brent refine collapse wrong valleys.
- Confidence is principled: local curvature normalized and squashed via tanh, yielding
[0,1). - Safety is explicit: optional harmonics obey a speed–amplitude cap.
- Everything is ASCII: deterministic, portable, and easy to audit.
Navigation
Back: SSM-Clock—Extensions & Defaults (1.8–1.9)
Next: SSM-Clock—Reference Implementation & CLI (2.1–2.2)