MATLAB ヘルプ センター
余分な方程式および変数の排除による連立 1 階微分代数方程式の単純化
[newEqs,newVars] = reduceRedundancies(eqs,vars)
[newEqs,newVars,R] = reduceRedundancies(eqs,vars)
[newEqs,newVars] = reduceRedundancies(eqs,vars) は、連立 1 階微分代数方程式 (DAE) eqs から冗長な方程式と変数を排除します。入力引数 vars は方程式の状態変数を指定します。
newEqs
newVars
eqs
vars
reduceRedundancies は、新しい DAE 系を列ベクトル newEqs として、簡約化された状態変数を列ベクトル newVars として返します。newEqs の各要素は右辺がゼロに等しい方程式を表します。
reduceRedundancies
例
[newEqs,newVars,R] = reduceRedundancies(eqs,vars) は排除された方程式と変数に関する情報を含む構造体配列 R を返します。
R
すべて折りたたむ
4 状態変数の 5 つの連立微分代数方程式 (DAE) を 2 状態変数の 2 つの連立方程式に単純化します。
4 つの状態変数 x1(t)、x2(t)、x3(t) および x4(t) について次の 5 つの DAE から成る方程式を作成します。また、この方程式にはシンボリック パラメーター a1、a2、a3、a4、b、c、ならびに状態変数ではない関数 f(t) が含まれます。
x1(t)
x2(t)
x3(t)
x4(t)
a1
a2
a3
a4
b
c
f(t)
syms x1(t) x2(t) x3(t) x4(t) a1 a2 a3 a4 b c f(t) eqs = [a1*diff(x1(t),t)+a2*diff(x2(t),t) == b*x4(t), a3*diff(x2(t),t)+a4*diff(x3(t),t) == c*x4(t), x1(t) == 2*x2(t), x4(t) == f(t), f(t) == sin(t)]; vars = [x1(t),x2(t),x3(t),x4(t)];
reduceRedundancies を使用して余分な方程式と対応する状態変数を排除します。
newEqs = (a1 ∂∂t x1(t)+a2 ∂∂t x1(t)2-b f(t)a3 ∂∂t x1(t)2+a4 ∂∂t x3(t)-c f(t))
(a1 ∂∂t x1(t)+a2 ∂∂t x1(t)2-b f(t)a3 ∂∂t x1(t)2+a4 ∂∂t x3(t)-c f(t))
newVars = (x1(t)x3(t))
(x1(t)x3(t))
状態変数の入力順序を指定して、DAE の排除時に返される変数を選択します。
4 つの状態変数 V_ac(t)、V1(t)、V2(t)、および I(t) について 4 つの DAE 系を作成します。また、方程式にはシンボリック パラメーター L、R および V0 が含まれます。
V_ac(t)
V1(t)
V2(t)
I(t)
L
V0
syms V_ac(t) V1(t) V2(t) I(t) L R V0 eqs = [V_ac(t) == V1(t) + V2(t), V1(t) == I(t)*R, V2(t) == L*diff(I(t),t), V_ac(t) == V0*cos(t)]
eqs = (Vac(t)=V1(t)+V2(t)V1(t)=R I(t)V2(t)=L ∂∂t I(t)Vac(t)=V0 cos(t))
(Vac(t)=V1(t)+V2(t)V1(t)=R I(t)V2(t)=L ∂∂t I(t)Vac(t)=V0 cos(t))
vars = [V_ac(t),I(t),V1(t),V2(t)]
vars = (Vac(t)I(t)V1(t)V2(t))
reduceRedundancies を使用して、冗長な方程式と変数を排除します。reduceRedundancies は、ベクトル vars の状態変数を維持して最初の要素から開始するように優先順位付けします。
newEqs = -L ∂∂t I(t)-R I(t)+V0 cos(t)
-L ∂∂t I(t)-R I(t)+V0 cos(t)
newVars = I(t)
ここで、reduceRedundancies は変数 I(t) について簡約化された方程式を返します。
DAE を簡約化する複数の方法が存在する場合、状態変数の異なる入力順序を指定して、返される変数を選択します。状態変数の異なる順序が含まれる別のベクトルを指定します。DAE を再度排除します。
vars2 = [V_ac(t),V1(t),V2(t),I(t)]
vars2 = (Vac(t)V1(t)V2(t)I(t))
[newEqs,newVars] = reduceRedundancies(eqs,vars2)
newEqs = -L ∂∂t V1(t)+R V1(t)-R V0 cos(t)R
-L ∂∂t V1(t)+R V1(t)-R V0 cos(t)R
newVars = V1(t)
ここで、reduceRedundancies は状態変数 V1(t) について簡約化された方程式を返します。
reduceRedundancies を呼び出すときに 3 つの出力引数を宣言して、連立方程式を単純化し、排除された方程式に関する情報を返します。
4 つの状態変数 x1(t)、x2(t)、x3(t) および x4(t) について次の 5 つの連立微分代数方程式 (DAE) を作成します。また、この方程式にはシンボリック パラメーター a1、a2、a3、a4、b、c、ならびに状態変数ではない関数 f(t) が含まれます。
reduceRedundancies を 3 つの出力引数と共に呼び出します。
R = struct with fields: solvedEquations: [2×1 sym] constantVariables: [x4(t) f(t)] replacedVariables: [x2(t) x1(t)/2] otherEquations: f(t) - sin(t)
関数 reduceRedundancies は、排除された方程式に関する情報を R に返します。ここで、R は構造体配列で、4 つのフィールドをもちます。
solvedEquations フィールドには、reduceRedundancies によって排除される方程式が含まれます。排除された方程式には、newEqs に現れない vars の状態変数が含まれます。排除された各方程式の右辺はゼロに等しくなります。
solvedEquations
R1 = R.solvedEquations
R1 = (x4(t)-f(t)x1(t)-2 x2(t))
(x4(t)-f(t)x1(t)-2 x2(t))
constantVariables フィールドには 2 列の行列が含まれます。1 列目には reduceRedundancies が定数値で置き換えた、vars の状態変数が含まれます。2 列目には対応する定数値が含まれます。
constantVariables
R2 = R.constantVariables
R2 = (x4(t)f(t))
replacedVariables フィールドには 2 列の行列が含まれます。1 列目には reduceRedundancies が他の変数による式で置き換えた、vars の状態変数が含まれます。2 列目には排除された変数に対応する値が含まれます。
replacedVariables
R3 = R.replacedVariables
R3 = (x2(t)x1(t)2)
(x2(t)x1(t)2)
otherEquations フィールドには状態変数 vars を 1 つも含まない eqs の方程式が含まれます。
otherEquations
R4 = R.otherEquations
R4 = f(t)-sin(t)
1 階 DAE 系。シンボリック方程式または式のベクトルとして指定します。
関係演算子 == によって、シンボリック方程式を定義します。eqs の要素を右辺のないシンボリック式として指定した場合、右辺がゼロに等しいシンボリック方程式が仮定されます。
==
状態変数。x(t) など、シンボリックな関数または関数呼び出しのベクトルとして指定します。
x(t)
状態変数の入力順序によって、簡約化されたどの変数が返されるかが決まります。DAE を簡約化する複数の方法が存在する場合、reduceRedundancies は vars の状態変数を維持して最初の要素から開始するように優先順位付けします。
例: [x(t),z(t),y(t)]
[x(t),z(t),y(t)]
1 階 DAE の系。シンボリック式の列ベクトルとして返されます。newEqs の各要素は右辺がゼロに等しい方程式を表します。
簡約された一連の変数。シンボリック関数呼び出しの列ベクトルとして返されます。
排除された変数の情報。4 つのフィールドが含まれる構造体配列として返されます。この情報へのアクセスには以下を使用します。
R.solvedEquations。reduceRedundancies が newEqs に現れない状態変数の置き換えに使用したすべての方程式のシンボリック列ベクトルを返します。
R.solvedEquations
R.constantVariables。次の 2 つの列をもつ行列を返します。1 列目には、排除されて定数値に置き換えられた、ベクトル vars の元の状態変数が含まれます。2 列目には対応する定数値が含まれます。
R.constantVariables
R.replacedVariables。次の 2 つの列をもつ行列を返します。1 列目には、排除され他の変数に置き換えられた、ベクトル vars の元の状態関数が含まれます。2 列目には排除された変数に対応する値が含まれます。
R.replacedVariables
R.otherEquations。元の方程式 eqs で入力変数 vars のいずれも含まないものすべてを含む列ベクトルを返します。
R.otherEquations
R2014b で導入
daeFunction | decic | findDecoupledBlocks | incidenceMatrix | isLowIndexDAE | massMatrixForm | odeFunction | reduceDAEIndex | reduceDAEToODE | reduceDifferentialOrder
daeFunction
decic
findDecoupledBlocks
incidenceMatrix
isLowIndexDAE
massMatrixForm
odeFunction
reduceDAEIndex
reduceDAEToODE
reduceDifferentialOrder
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ