“Homogeneous” Linear Second-order ODE:
$$ \ddot{x}+p(t)\dot{x}+q(t)x=0 $$
其中 homogeneous 表示 RHS 為 $0$
[YouTube]
首先先看 numeral method 怎麼對 general 的 second-order ODE 做, 想法就是變成兩個 first-order ODEs.
通常寫 $\dot{x}$ 表示對時間 $t$ 的微分, $\ddot{x}$ 表示二次微分
練習一: $\ddot{\theta}+\dot{\theta}/q+\sin\theta=f\cos\omega t$ 寫成兩個 first-order ODEs
Ans:
$$ \dot{\theta}=u \\ \dot{u}=-u/q-\sin\theta+f\cos\omega t = g(t,\theta,u) $$
練習二:
Write down the second-order Runge-Kutta modified Euler method (predictor-corrector method) for the following system of two first-order odes:
$$ \dot{x}=f(t,x,y) \\ \dot{y}=g(t,x,y) $$
Ans:
我們令 $Z=[x,y]^T$: (符號有點濫用,不過看得懂就可以)
$$ \nabla_tZ=[\dot{x}, \dot{y}]^T \\ \nabla_tZ(t_n,Z_n)=[f(t_n,x_n,y_n),g(t_n,x_n,y_n)]^T $$
對 $Z$ 做 modified Euler method:
$$ Z_{n+1}^p=Z_n+\Delta t\nabla_tZ(t_n,Z_n) \\ Z_{n+1}=Z_n+\frac{\Delta t}{2}\left(\nabla_tZ(t_n,Z_n)+\nabla_tZ(t_n+\Delta t,Z_{n+1}^p)\right) $$
整理成 Runge-Kutta steps:
$$ A_1=\Delta t\nabla_tZ(t_n,Z_n) \\ A_2=\Delta t\nabla_tZ(t_n+\Delta t,Z_n+A_1) \\ Z_{n+1}=Z_n+\frac{1}{2}(A_1+A_2) $$
拆開每個維度來看:
$$ A_1=\Delta t[f(t_n,x_n,y_n),g(t_n,x_n,y_n)]^T = [K_1,L_1]^T\\ A_2=\Delta t \left[\begin{array}{cc} f(t_n+\Delta t,x_n+K_1,y_n+L_1) \\ g(t_n+\Delta t,x_n+K_1,y_n+L_1) \end{array}\right] =\left[\begin{array}{c} K_2\\L_2 \end{array}\right] \\ Z_{n+1}=\left[\begin{array}{cc} x_{n+1}\\y_{n+1} \end{array}\right] =\left[\begin{array}{cc} x_n+\frac{1}{2}(K_1+K_2) \\ y_n+\frac{1}{2}(L_1+L_2) \end{array}\right] $$
結論就是可以拆成兩個 parallel 的 update sequences:
<aside> 💡 直接想的話不確定可不可以變成並行的結果. 但如果當成一個 random vector $Z$, 就如上面推導, 拆開看個維度就對了.
</aside>