求具有代数约束的一阶隐式ODE系统的一致初始条件
[
得到具有代数约束的一阶隐式常微分方程组的一致初值条件y0
,yp0
) = decic (方程式
,var
,constraintEqs
,t0
,y0_est
,fixedVars
,yp0_est
,选项
)reduceDAEToODE
函数。
调用[方程式,constraintEqs] = reduceDAEToODE (DA_eqs var)
简化微分代数方程组DA_eqs
隐式颂歌系统方程式
.它还返回系统约简过程中遇到的约束方程。对于这个ODE系统的变量和它们的导数,decic
找到一致的初始条件y0
,yp0
当时t0
.
代入数值y0
,yp0
转化为微分方程潜艇(方程式,[t;var (t);diff (var (t))]、[t0;y0;yp0])
约束方程潜艇(若干,[t;var (t);diff (var (t))]、[t0;y0;yp0])
生产零向量。在这里,var
必须是列向量。
y0_est
指定变量值的数值估计var
当时t0
,fixedVars
中的值。y0_est
在数值搜索过程中,这一点不能改变。可选参数yp0_est
让您指定变量的导数值的数值估计值var
当时t0
.
将DAE系统简化为隐式ode系统。然后,求得到的ODE系统的变量及其一阶导数的一致初始条件。
创建下面的微分代数系统。
信谊x (t) y (t) DA_eqs = [diff (x (t) t) = = cos (t) + y (t)……X (t)²+ y(t)²== 1];var = [x (t);y (t)];
使用reduceDAEToODE
将这个系统转换为隐式ode系统。
[eqs, constraintEqs] = reduceDAEToODE(DA_eqs, vars)
方程式= 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
创建一个选项集,为数值搜索指定数值公差。
选择= 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];
你可以把约束看成是变量的代数方程x
固定参数y
.为此,设置fixedVars = [0 1]
.或者,你也可以把它看作变量的代数方程y
固定参数x
.为此,设置fixedVars = [10 0]
.
首先,设置初始值X (t0) = y0_est(1) = 0.1
.
fixedVars = [10 0];[y0, yp0] = decic(方程式一样,var, constraintEqs t0、y0_est fixedVars, yp0_est,选项)
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(方程式一样,var, constraintEqs t0、y0_est fixedVars, yp0_est,选项)
Y0 = -0.4359 0.9000 yp0 = 1.9000 0.9202
验证这些初值是满足方程和约束条件的一致初值。
潜艇(方程式,[t;var;diff (var, t)]、[t0;y0;yp0])
Ans = 0 0
潜艇(constraintEqs [t;var;diff (var, t)]、[t0;y0;yp0])
ans = 0
daeFunction
|findDecoupledBlocks
|incidenceMatrix
|isLowIndexDAE
|massMatrixForm
|odeFunction
|reduceDAEIndex
|reduceDAEToODE
|reduceDifferentialOrder
|reduceRedundancies