next up previous
Next: Hybrid Up: シミュレーションの基礎 Previous: rngkut4

Ode()

この関数がMATXのシミュレーションの基本です。最初の例で解説しま したので,ここでは書式について説明します。
  Ode(Real t0, Real t1, Matrix x, 
      Matrix diff_eqs(), Matrix link_eqs(),
      Real h, real dtsav);

  t0 :        初期時間
  t1 :        終了時間
  x  :        状態
  diff_eqs :  dx を返す関数
  link_eqs :  u を返す関数
  h :         積分のきざみ幅
  dtsav :     状態保存間隔
dtsavというのはOde()が返してくる結果は先に述べたように {TC, XC, UC}となっています。dtsavはこれらの積分の結果 をセーブする時間を示します。きざみが小さくても,saveはそれほど小さ い必要はありません。link_eqs()を省略した場合には入力が0となり, hが省略された時には,h = 4.0E-2となり,dtsavが省 略された時には,dtsav = 1.0E-3となります。

使われているアルゴリズムは4次のルンゲクッタ法です。forなどを 使わなくても,diff_eqs()link_eqs()さえ作ればあとは全て やってくれるのでこの関数が全ての基本といってもいいでしょう。

ただし,きざみ幅には十分気を付けましょう。プラントによってはきざみ 幅が大きいと安定な応答を示すが,きざみ幅を小さくすると不安定な応答 を示すような場合があります。

数値積分においてきざみ幅というのは非常に重要なファクタとなります。 プラントがゆっくり変化しているときにはきざみ幅は大きくても良いわけ ですし,急激に変化している時にはきざみ幅は小さくする必要が有ります。 これらの話しは,8.6節に譲ります。

Ode()には数々のバリエーションがあります。以下にひとつづつ説明し ます。実際に用いる時にはこの巻末の表に従って下さい。


Masanobu KOGA 平成11年9月20日