isLowIndexDAE
方程式系の微分指数が 2 未満かのチェック
説明
例
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
の系に対し、isLowIndexDAE
は 1
(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
を使用して系の微分指数をチェックします。この系に対して isLowIndexDAE
は 0
(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
入力引数
バージョン履歴
R2014b で導入