一阶的转换系统半线性代数方程至差分索引为0的等效系统
转换微分代数方程模块(DAE)的一个系统,以隐式常微分方程(常微分方程)的系统。
创建两个差分代数方程组的下列系统。在这里,象征性的功能X(t)的
,Y(t)的
和Z(t)的
表示该系统的状态变量。指定方程和变量作为两个符号载体:方程式符号方程的矢量和变量为符号函数调用的向量。
SYMS X(t)Y(t)的Z(t)的等式= [DIFF(X,T)+ X *的diff(Y,T)== Y,... X *的diff(X,T)+ X ^ 2* DIFF(Y)==的sin(x),... X ^ 2 + Y ^ 2 == T * Z];瓦尔= [X(t),Y(t)的,Z(T)];
用reduceDAEToODE
重写系统,使得所述差分索引是0
。
newEqs = reduceDAEToODE(均衡器,VARS)
newEqs = X(t)·DIFF(Y(T),T) - Y(t)的+ DIFF(X(t),T)的diff(X(t),T)*(cos(X(t)) -Y(t))的 - X(t)·DIFF(Y(T),T)z的(T) - 2 * X(t)*差异(X(t),T) - 2 * Y(t)的* DIFF(Y(T),T)+ T *的diff(Z(T),T)
检查以下DAE系统具有低(0
要么1
)或高(> 1
)差分索引。如果该指数高于1
,首先尝试使用,以减少索引reduceDAEIndex
然后使用reduceDAEToODE
。
创建微分代数方程的系统。在这里,功能X1(t)的
,X2(t)的
和X3(t)的
表示该系统的状态变量。该系统还包含了功能Q1(t)的
,Q2(t)的
和Q3(t)的
。这些功能并不代表状态变量。指定方程和变量作为两个符号载体:方程式符号方程的矢量和变量为符号函数调用的向量。
SYMS X1(t)的X2(t)的X3(t)的Q1(t)的Q2(t)的Q3(t)的等式= [DIFF(×2)== Q1 - X1,DIFF(×3)== Q2 - 2 * X2 -T *(Q1-X1),Q3 - T * X2 - X3的];瓦尔= [X1(吨),X2(t)的X3(吨)];
用isLowIndexDAE
检查系统的差分索引。对于这个系统,isLowIndexDAE
回报0
(假
)。这意味着,系统的差分索引是2
或更高。
isLowIndexDAE(均衡器,VARS)
ANS = 0逻辑
用reduceDAEIndex
作为你的第一次尝试重写系统,使差分指数1
。对于这个系统,reduceDAEIndex
发出警告,因为它不能在系统的差分指数降低0
要么1
。
[newEqs,newVars] = reduceDAEIndex(方程,乏)
警告:索引减少的DAE的是大于1。newEqs = X1(T) - Q1(t)的+ DIFF(X2(t)的,T)Dx3t(T) - Q2(吨)+ 2 * X2(t)的+吨*(Q1(T) - X1(t))的Q 3(t)的 - X3(T) - T * X2(t)的差异(Q3(T),T) - X2(t)的 - T *的diff(X2(吨),T) - Dx3t(t)的newVars = X1(t)的X2(t)的X3(t)的Dx3t(t)的
如果reduceDAEIndex
因此,该指数是不能减少半线性系统0
要么1
,请尝试使用reduceDAEToODE
。此函数可以是慢得多,因此不建议作为首选。使用语法有两个输出参数也返回约束方程。
[newEqs,constraintEqs] = reduceDAEToODE(方程,乏)
newEqs = X1(T) - Q1(t)的+ DIFF(X2(t)的,T)2 * X2(吨) - Q2(t)的+ T * Q1(T) - T * X1(t)的+ DIFF(X3(T),T)的diff(X1(t)的,T) - DIFF(Q1(T),T)+ DIFF(Q2(t)的,T,T) - DIFF(Q3(T),T,T,T)constraintEqs= x1(t) - q1(t) + diff(q2(t), t) - diff(q3(t), t, t) x3(t) - q3(t) + t*x2(t) x2(t) - q2(t) + diff(q3(t), t)
使用语法有三个输出参数,返回新方程,约束方程,与原系统的差分指数,公式
。
[newEqs,constraintEqs,oldIndex] = reduceDAEToODE(方程,乏)
newEqs = X1(T) - Q1(t)的+ DIFF(X2(t)的,T)2 * X2(吨) - Q2(t)的+ T * Q1(T) - T * X1(t)的+ DIFF(X3(T),T)的diff(X1(t)的,T) - DIFF(Q1(T),T)+ DIFF(Q2(t)的,T,T) - DIFF(Q3(T),T,T,T)constraintEqs= x1(t) - q1(t) + diff(q2(t), t) - diff(q3(t), t, t) x3(t) - q3(t) + t*x2(t) x2(t) - q2(t) + diff(q3(t), t) oldIndex = 3
实施reduceDAEToODE
基于高斯消元法。该算法比Pantelides算法使用更可靠reduceDAEIndex
,但它可以慢得多。
daeFunction
|decic
|findDecoupledBlocks
|incidenceMatrix
|isLowIndexDAE
|massMatrixForm
|odeFunction
|reduceDAEIndex
|reduceDifferentialOrder
|reduceRedundancies