next up previous contents
Next: OdeAuto Up: リファレンスマニュアル Previous: Ode45Hybrid

  
Ode45HybridAuto

【目的】
Ode45HybridAuto - RKF45法(自動刻み調節)で常微分方程式を解く (外部信号をサンプリング毎に更新)
【形式】
{T,X,U} = Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs)
   Array T,X,U;
   Real t0,t1,dt;
   Matrix x0;
   Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;)
   Matrix link_eqs(t,x);   (Real t; Matrix x;)
  
{T,X,U} = Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,eps)
   Array T,X,U;
   Real t0,t1,dt;
   Matrix x0;
   Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;)
   Matrix link_eqs(t,x);   (Real t; Matrix x;)
   Real eps;
  
{T,X,U} = Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,eps,
                                                      dtsav)
   Array T,X,U;
   Real t0,t1,dt;
   Matrix x0;
   Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;)
   Matrix link_eqs(t,x);   (Real t; Matrix x;)
   Real eps,dtsav;
  
{T,X,U} = Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,
                                            eps,dtsav,dtmin)
   Array T,X,U;
   Real t0,t1,dt;
   Matrix x0;
   Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;)
   Matrix link_eqs(t,x);   (Real t; Matrix x;)
   Real eps,dtsav,dtmin;
  
{T,X,U} = Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,eps,
                                          dtsav,dtmin,dtmax)
   Array T,X,U;
   Real t0,t1,dt;
   Matrix x0;
   Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;)
   Matrix link_eqs(t,x);   (Real t; Matrix x;)
   Real eps,dtsav,dtmin,dtmax;
【詳細】
{T,X,U} = Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs)
は,diff_eqs()で定義される常微分方程式を
RKF45法を使い,各時刻における 誤差が eps = 1.0E-6 以下になるよう刻み幅を自動調節しながら解き, 状態の時系列 X,外部信号の時系列 U,時間の系列 T を返す。 サンプリング時間 dt 毎に link_eqs() を呼び出し,diff_eqs() に渡す 外部信号 u を更新する。 刻み幅の最小値は,dtmin = EPS,最大値は dtmax = abs(t1-t0)/5, データ保存の最小間隔は,dtsav = 1.0E-3 である。刻み幅を dtmin に しても,誤差が eps 以下にならない場合,警告メッセージを表示し, 次の時刻へ進む。 Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,eps)は,各時刻における 誤差が eps になるよう刻み幅を調節しながら常微分方程式を解く。 Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,eps,
dtsav)は,保存するデータの間隔を dtsav 以上にし,データを間引く。 Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,eps,
dtsav,dtmin)は,刻み幅の最小値を dtmin にする。 Ode45HybridAuto(t0,t1,dt,x0,diff_eqs,link_eqs,eps,
dtsav,dtmin,dtmax)は,刻み幅の最大値を dtmax にする。 引数の意味を次に示す。
t0:初期時刻
t1:終端時刻
x0:初期状態
diff_eqs(t,x,u):時刻 t,状態 x,外部信号 u から状態の
  微分を計算
link_eqs(t,x):時刻 t,状態 x から外部信号を計算する
eps:各時刻の打ち切り誤差の最大値
dtsave:データ保存の最小間隔
dtmin:刻み幅の最小値
dtmax:刻み幅の最大値
【例題】
ユーザーズマニュアル参照。
【参照】
rkf45(2.181), Ode45(2.144), Ode45Auto(2.145), Ode45Hybrid(2.146)

next up previous contents
Next: OdeAuto Up: リファレンスマニュアル Previous: Ode45Hybrid
Masanobu KOGA 平成11年10月2日