chc.splitting¶
Stability tier: evolving.
Operator splitting (Lie-Trotter, Strang-Marchuk): integrate the known linear part exactly.
For ẋ = A x + r(x) the known linear (often stiff) operator is advanced by its exact flow
exp(A dt) and the learned residual r by RK4. Strang-Marchuk composes them symmetrically for
2nd-order accuracy, so the network need not represent the stiff known dynamics.
This is where the "Marchuk" framing earns its keep.
exact_linear_flow(a_matrix)
¶
Exact flow of ẋ = A x: returns (x, dt) -> expm(A dt) @ x.
residual_flow(field, u)
¶
RK4 flow of ẋ = field(x, u) at a fixed control u.
lie_trotter_step(flow_a, flow_b, x, dt)
¶
First-order split: S_A(dt) ∘ S_B(dt).
strang_marchuk_step(flow_a, flow_b, x, dt)
¶
Second-order symmetric split: S_A(dt/2) ∘ S_B(dt) ∘ S_A(dt/2).