/* -*- MaTX -*- * * 【名前】 * rkf45() - RKF45 法で常微分方程式を解く * * 【形式】 * X = rkf45(t,x,diff_eqs,h) * Matrix X; * Real t; * Matrix x; * Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;) * Real h; * * X = rkf45(t,x,diff_eqs,u,h) * Matrix X; * Real t; * Matrix x; * Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;) * Matrix u; * Real h; * * X = rkf45(t,x,diff_eqs,link_eqs,h) * Matrix X; * Real t; * Matrix x; * Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;) * Matrix link_eqs(t,x); (Real t; Matrix x;) * Real h; * * 【機能説明】 * rkf45(t,x,diff_eqs,h)は,関数diff_eqs()で定義される常微分方程式 * を RKF45 法を使い,微少時間 h 後の解を求める。打ち切り誤差の * オーダーは h^6 である。 * * rkf45(t,x,diff_eqs,u,h)は,外部信号 u を,diff_eqs() に渡しながら, * 常微分方程式を解き,微少時間 h 後の解を返す。 * * rkf45(t,x,diff_eqs,link_eqs,h)は,関数 link_eqs() の計算結果を * 外部信号 u として,関数 diff_eqs() に渡しながら,常微分方程式を * 解き,微少時間 h 後の解を返す。 * * 引数の意味を次に示す。 * * t : 現在時刻 * x : 現在状態 * diff_eqs(t,x,u) : 時刻 t,状態 x,外部信号 u から * : 状態の微分を計算 * h : 刻み幅 * u : diff_eqs() に渡される外部信号 * link_eqs(t,x) : 時刻 t,状態 x から外部信号を計算する * * 【例題】 * リファレンスマニュアル参照。 * * 【関連項目】 * rngkut4(), Ode() */