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

  
Ode45Auto

【目的】
Ode45Auto - RKF45法(自動刻み調節)で常微分方程式を解く
【形式】
{T,X} = Ode45Auto(t0,t1,x0,diff_eqs)
   Array T,X,U;
   Real t0,t1;
   Matrix x0;
   Matrix diff_eqs(t,x,u); (Real t; Matrix x,u;)
  
{T,X,U} = Ode45Auto(t0,t1,x0,diff_eqs,link_eqs)
   Array T,X,U;
   Real t0,t1;
   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} = Ode45Auto(t0,t1,x0,diff_eqs,link_eqs,eps)
   Array T,X,U;
   Real t0,t1;
   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} = Ode45Auto(t0,t1,x0,diff_eqs,link_eqs,eps,dtsav)
   Array T,X,U;
   Real t0,t1;
   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} = Ode45Auto(t0,t1,x0,diff_eqs,link_eqs,eps,dtsav,
                                                   dtmin)
   Array T,X,U;
   Real t0,t1;
   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} = Ode45Auto(t0,t1,x0,diff_eqs,link_eqs,eps,dtsav,
                                             dtmin,dtmax)
   Array T,X,U;
   Real t0,t1;
   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} = Ode45Auto(t0,t1,x0,diff_eqs)は,関数diff_eqs()で定義される 常微分方程式を RKF45法を使い,各時刻における誤差が eps = 1.0E-6 以下になるよう刻み幅を自動調節しながら解き,状態の時系列 X と時間の 系列 T を返す。 刻み幅の最小値は,dtmin = EPS,最大値は dtmax = abs(t1-t0)/5, データ保存の最小間隔は,dtsav = 1.0E-3 である。刻み幅を dtmin に しても,誤差が eps 以下にならない場合,警告メッセージを表示し, 次の時刻へ進む。 {T ,X, U} = Ode45Auto(t0,t1,x0,diff_eqs,link_eqs)は,関数 link_eqs() の計算結果を外部信号 u として,関数 diff_eqs() に渡しながら,常微分 方程式を解き,状態の時系列 X,外部信号の時系列 U,時間の系列 T を 返す。 Ode45Auto(t0,t1,x0,diff_eqs,link_eqs,eps)は,各時刻における 誤差が eps になるよう刻み幅を調節しながら常微分方程式を解く。 Ode45Auto(t0,t1,x0,diff_eqs,link_eqs,eps,dtsav)は,保存するデータ の間隔を dtsav 以上にし,データを間引く。 Ode45Auto(t0,t1,x0,diff_eqs,link_eqs,eps,dtsav,dtmin)は,刻み幅の 最小値を dtmin にする。 Ode45Auto(t0,t1,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), Ode45Hybrid(2.146), Ode45HybridAuto(2.147)

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