Main Content

isLowIndexDAE

方程式系の微分指数が 2 未満かのチェック

説明

isLowIndexDAE(eqs,vars) は、1 階半線形微分代数方程式 (DAE) 系 eqs が低い微分指数をもっているかを調べます。系の微分指数が 0 または 1 である場合、isLowIndexDAE は logical 1 を返します。eqs の微分指数が 1 よりも高い場合、isLowIndexDAE は logical 0 (false) を返します。

方程式の数 eqs は変数の数 vars と一致しなければなりません。

DAE 系の微分指数のチェック

半線形 1 階 DAE 系の微分指数が低い (0 または 1) かどうかチェックします。

次の 2 つの微分代数方程式から成る系を作成します。ここで、x(t) および y(t) は系の状態変数です。方程式と変数を 2 つのシンボリック ベクトル (方程式をシンボリック方程式のベクトル、変数をシンボリック関数呼び出しのベクトル) として指定します。

syms x(t) y(t)
eqs = [diff(x(t),t) == x(t) + y(t), x(t)^2 + y(t)^2 == 1];
vars = [x(t), y(t)];

isLowIndexDAE を使用して系の微分の階数をチェックします。この系の微分の階数は 1 です。指数が 0 および 1 の系に対し、isLowIndexDAE1 (true) を返します。

isLowIndexDAE(eqs, vars)
ans =
  logical
   1

DAE 系の微分指数を減らす

次の DAE 系の微分指数が高いか低いかチェックします。指数が 1 よりも高い場合は、reduceDAEIndex を使用して減らします。

次の 2 つの微分代数方程式から成る系を作成します。ここで、x(t)y(t) および z(t) は系の状態変数です。方程式と変数を 2 つのシンボリック ベクトル (方程式をシンボリック方程式のベクトル、変数をシンボリック関数呼び出しのベクトル) として指定します。

syms  x(t) y(t) z(t) f(t)
eqs = [diff(x(t),t) == x(t) + z(t),...
       diff(y(t),t) == f(t), x(t) == y(t)];
vars = [x(t), y(t), z(t)];

isLowIndexDAE を使用して系の微分指数をチェックします。この系に対して isLowIndexDAE0 (false) を返します。これは系の微分指数が 2 以上であることを意味します。

isLowIndexDAE(eqs, vars)
ans =
  logical
   0

reduceDAEIndex を使用して微分指数が 1 になるように系を書き換えます。この関数を 4 つの出力引数と共に呼び出すと、元の系の微分指数も表示されます。新しい系には状態変数 Dyt(t) が追加されています。

[newEqs, newVars, ~, oldIndex] = reduceDAEIndex(eqs, vars)
newEqs =
 diff(x(t), t) - z(t) - x(t)
               Dyt(t) - f(t)
                 x(t) - y(t)
      diff(x(t), t) - Dyt(t)

newVars =
   x(t)
   y(t)
   z(t)
 Dyt(t)

oldIndex =
     2

新しい系の微分の階数が 2 よりも低いことを確かめます。

isLowIndexDAE(newEqs, newVars)
ans =
  logical
   1

入力引数

すべて折りたたむ

1 階半線形微分代数方程式系。シンボリックな方程式または式のベクトルとして指定します。

状態変数。x(t) など、シンボリックな関数または関数呼び出しのベクトルとして指定します。

例: [x(t),y(t)]

バージョン履歴

R2014b で導入