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

  
OdeAuto

【目的】
OdeAuto - 4次ルンゲクッタ法(自動刻み調節)で常微分方程式を解く
【形式】
{T,X} = OdeAuto(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} = OdeAuto(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} = OdeAuto(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} = OdeAuto(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} = OdeAuto(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} = OdeAuto(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} = OdeAuto(t0,t1,x0,diff_eqs)は,関数diff_eqs()で定義される 常微分方程式を 4 次のルンゲクッタの算法を使い,各時刻に おける誤差が eps = 1.0E-6 以下になるよう刻み幅を自動調節しながら 解き,状態の時系列 X と時間の系列 T を返す。 刻み幅の最小値は,dtmin = EPS,最大値は dtmax = abs(t1-t0)/5, データ保存の最小間隔は,dtsav = 1.0E-3 である。刻み幅を dtmin に しても,誤差が eps 以下にならない場合,警告メッセージを表示し, 次の時刻へ進む。 {T, X, U} = OdeAuto(t0,t1,x0,diff_eqs,link_eqs)は,関数
link_eqs() の計算結果を外部信号 u として, 関数 diff_eqs() に渡しながら,常微分 方程式を解き,状態の時系列 X,外部信号の時系列 U,時間の系列 T を返す。 OdeAuto(t0,t1,x0,diff_eqs,link_eqs,eps)は,各時刻における打ち切り 誤差が eps になるよう刻み幅を調節しながら常微分方程式を解く。 OdeAuto(t0,t1,x0,diff_eqs,link_eqs,eps,dtsav)は,保存するデータの 間隔を dtsav 以上にし,データを間引く。 OdeAuto(t0,t1,x0,diff_eqs,link_eqs,eps,dtsav,dtmin) は,
刻み幅の最小値を dtmin にする。 OdeAuto(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:刻み幅の最大値
【例題】
ユーザーズマニュアル参照。
【参照】
rngkut4(2.182), Ode(2.143), OdeHybrid(2.149), OdeHybridAuto(2.150)

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