このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
decic
代数制約のある 1 階の陰的 ODE 系に整合する初期条件を求める
説明
[
は、関数 y0
,yp0
] = decic(eqs
,vars
,constraintEqs
,t0
,y0_est
,fixedVars
,yp0_est
,options
)reduceDAEToODE
によって返される代数制約を使用して陰的な 1 階常微分方程式系に整合する初期条件を求めます。
[eqs,constraintEqs] = reduceDAEToODE(DA_eqs,vars)
の呼び出しにより、微分代数方程式系 DA_eqs
は陰的 ODE 系 eqs
に簡約されます。また、系の簡約化時に発生した拘束方程式を返します。この ODE 系の変数およびその導関数について、decic
は時間 t0
における整合する初期条件 y0
と yp0
を求めます。
数値 y0
、yp0
を微分方程式 subs(eqs, [t; vars(t); diff(vars(t))], [t0; y0; yp0])
および拘束方程式 subs(constr, [t; vars(t); diff(vars(t))], [t0; y0; yp0])
に代入するとゼロ ベクトルが生成されます。ここで、vars
は列ベクトルでなければなりません。
y0_est
は時間 t0
における変数 vars
の数値推定を指定し、fixedVars
は数値検索中に変化してはならない y0_est
の値を示します。オプションの引数 yp0_est
を使用すると、時間 t0
における変数 vars
の導関数の値への数値近似を指定できます。
例
ODE 系に整合する初期条件を求める
DAE 系を陰的な ODE 系に簡約します。次に、得られた ODE 系の変数およびそれらの 1 次導関数に整合する初期条件を求めます。
次の微分代数方程式系を作成します。
syms x(t) y(t) DA_eqs = [diff(x(t),t) == cos(t) + y(t),... x(t)^2 + y(t)^2 == 1]; vars = [x(t); y(t)];
reduceDAEToODE
を使用してこの系を陰的 ODE 系に変換します。
[eqs, constraintEqs] = reduceDAEToODE(DA_eqs, vars)
eqs = diff(x(t), t) - y(t) - cos(t) - 2*x(t)*diff(x(t), t) - 2*y(t)*diff(y(t), t) constraintEqs = 1 - y(t)^2 - x(t)^2
数値検索における数値的許容誤差を指定するオプション セットを作成します。
options = odeset('RelTol', 10.0^(-7), 'AbsTol', 10.0^(-7));
時間の値 t0 = 0
と、変数およびその導関数の整合する値の数値推定を決定します。
t0 = 0; y0_est = [0.1, 0.9]; yp0_est = [0.0, 0.0];
制約を、固定パラメーター y
をもつ変数 x
の代数方程式として扱うことができます。ここでは、fixedVars = [0 1]
と設定します。または、固定パラメーター x
をもつ変数 y
の代数方程式として扱うこともできます。ここでは、fixedVars = [1 0]
と設定します。
まず、初期値 x(t0) = y0_est(1) = 0.1
を設定します。
fixedVars = [1 0]; [y0,yp0] = decic(eqs,vars,constraintEqs,t0,y0_est,fixedVars,yp0_est,options)
y0 = 0.1000 0.9950 yp0 = 1.9950 -0.2005
ここで、fixedVars
を [0 1]
に変更します。これにより y(t0) = y0_est(2) = 0.9
が決まります。
fixedVars = [0 1]; [y0,yp0] = decic(eqs,vars,constraintEqs,t0,y0_est,fixedVars,yp0_est,options)
y0 = -0.4359 0.9000 yp0 = 1.9000 0.9202
これらの初期値が方程式および制約を満たす整合性のある初期値であることを検証します。
subs(eqs, [t; vars; diff(vars,t)], [t0; y0; yp0])
ans = 0 0
subs(constraintEqs, [t; vars; diff(vars,t)], [t0; y0; yp0])
ans = 0
入力引数
出力引数
バージョン履歴
R2014b で導入