答えは,すべてdiff_eqsです。前の例ではdiff_eqsにはプ ラントの式しかありませんが,あくまでMATXの積分関数はdiff_eqsの返す微分値とlink_eqsの返す入力から積分しているに 過ぎないので,微分方程式で表されるものはすべて積分してしまえば良い ことになります。
例えば,先のシステムにおいて,制御の為に必要なパラメータが次の微分
方程式で表されているとします。
Func Matrix diff_eqs(t, x, u) Real t; Matrix x, u; { Matrix A, b; Matrix dx, dx1, dx2, Y; A = [[ 0, 1, 0] [ 0, 0, 1] [-2, -3, -4]]; b = [0 0 1]'; G = I(3); a = [[ -1, 0, 1] [ 0, 1, 0] [ 0, 0, 1]]; dx1 = A * x + b * u; dx2 = -G * (x - a); dx = [[dx1][dx2]]; return dx; }となります。18行目に注目して下さい。更新則を含めたすべての状態を dxとして使うわけで,これにともなって当然link_eqsの ほうも書き換える必要があります。
今まではOdeですべての話しをしてきましたが,MATXはその目
的に応じて多くの積分関数を持っています。以下にそれぞれの簡単なアル
ゴリズムと一緒に説明します。