メインコンテンツ

reduceDifferentialOrder

同等な連立 1 階微分方程式への高階数の連立微分方程式の簡約

説明

[newEqs,newVars] = reduceDifferentialOrder(eqs,vars) は、高階数の連立微分方程式 eqs を、eqs の導関数を新しい変数で代替することにより、連立 1 階微分方程式 newEqs に書き換えます。ここで、newVars は、元の変数 vars をこれらの新しい変数で拡張した構成です。

[newEqs,newVars,R] = reduceDifferentialOrder(eqs,vars) は、元の変数 vars の導関数として新しい変数を newVars に示す行列 R を返します。

すべて折りたたむ

高階数 DAE を含む方程式を 1 階 DAE のみを含む方程式に簡約します。

2 階式を含む連立微分方程式を作成します。ここで、x(t) および y(t) は方程式の状態変数で、c1 および c2 はパラメーターです。方程式と変数を 2 つのシンボリック ベクトル (方程式をシンボリック方程式のベクトル、変数をシンボリック関数呼び出しのベクトル) として指定します。

syms x(t) y(t) c1 c2
eqs = [diff(x(t),t,t) + sin(x(t)) + y(t) == c1*cos(t),...
       diff(y(t),t) == c2*x(t)];
vars = [x(t),y(t)];

この方程式を書き換えてすべての方程式が 1 階微分方程式になるようにします。reduceDifferentialOrder 関数は新しい変数 Dxt(t) を導入することによって高階数 DAE を 1 次式に置き換えます。また、すべての方程式をシンボリック式として表します。

[newEqs,newVars] = reduceDifferentialOrder(eqs,vars)
newEqs = 

(t Dxt(t)+sin(x(t))+y(t)-c1cos(t)t y(t)-c2x(t)Dxt(t)-t x(t))

newVars = 

(x(t)y(t)Dxt(t))

2 次および 3 次式を含む方程式を 1 階 DAE のみを含む方程式に簡約します。さらに、この方程式の元の変数を通して reduceDifferentialOrder によって生成された変数を表す行列を返します。

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

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

reduceDifferentialOrder を 3 つの出力引数と共に呼び出します。この構文は 2 つの列をもつ行列 R を返します。1 列目には新しい変数が含まれ、2 列目では新しい変数が元の変数 x(t) および y(t) の導関数として表されます。

[newEqs,newVars,R] = reduceDifferentialOrder(eqs,vars)
newEqs = 

(t Dxt(t)-3t3 f(t)t Dytt(t)-2t2 f(t)Dxt(t)-t x(t)Dyt(t)-t y(t)Dytt(t)-t Dyt(t))

newVars = 

(x(t)y(t)Dxt(t)Dyt(t)Dytt(t))

R = 

(Dxt(t)t x(t)Dyt(t)t y(t)Dytt(t)2t2 y(t))

入力引数

すべて折りたたむ

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

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

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

出力引数

すべて折りたたむ

連立 1 階微分方程式。シンボリック式の列ベクトルとして返されます。

拡張された変数のセット。シンボリック関数呼び出しの列ベクトルとして返されます。このベクトルには元の状態変数 vars に続き、eqs の高階数導関数に置き換わる、生成された変数が含まれます。

新しい変数と元の変数の関係。2 列のシンボリック行列として返されます。1 列目には新しい変数 newVars が含まれます。2 列目にはそれらの定義が元の変数 vars の導関数として含まれます。

バージョン履歴

R2014b で導入