メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

isLowIndexDAE

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

説明

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

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

すべて折りたたむ

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

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

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

(t x(t)=x(t)+y(t)x(t)2+y(t)2=1)

vars = [x(t), y(t)]
vars = (x(t)y(t))

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

tf = isLowIndexDAE(eqs,vars)
tf = logical
   1

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

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

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 以上であることを意味します。

tf = isLowIndexDAE(eqs,vars)
tf = logical
   0

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

[newEqs,newVars,~,oldIndex] = reduceDAEIndex(eqs,vars)
newEqs = 

(t x(t)-x(t)-z(t)Dyt(t)-f(t)x(t)-y(t)t x(t)-Dyt(t))

newVars = 

(x(t)y(t)z(t)Dyt(t))

oldIndex = 
2

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

tf = isLowIndexDAE(newEqs,newVars)
tf = logical
   1

入力引数

すべて折りたたむ

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

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

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

バージョン履歴

R2014b で導入