reduceDAEIndex

一阶微分代数方程的转换系统,以差分索引1的等效系统

描述

[newEqsnewVars] = reduceDAEIndex(公式瓦尔转换第一阶微分代数方程的高指数系统公式为等效系统newEqs的差分索引1。

reduceDAEIndex保持原有公式和变量,并引入新的变量和方程。转换后,reduceDAEIndex通过调用检查新系统的差分索引isLowIndexDAE。如果指数newEqs是2或更高,则reduceDAEIndex发出警告。

[newEqsnewVars[R] = reduceDAEIndex(公式瓦尔收益矩阵[R表达的新变量newVars作为原始变量的衍生物瓦尔

[newEqsnewVars[RoldIndex] = reduceDAEIndex(公式瓦尔返回差分索引,oldIndex,泽斯原有系统,公式

例子

减少DAE系统的差异指数

检查以下DAE系统具有低(0要么1)或高(> 1)差分索引。如果该指数高于1,然后使用reduceDAEIndex减少它。

创建两个差分代数方程组的下列系统。在这里,象征性的功能X(t)的Y(t)的Z(t)的表示该系统的状态变量。指定方程和变量作为两个符号载体:方程式符号方程的矢量和变量为符号函数调用的向量。

SYMS X(t)Y(t)的Z(t)的F(T)等式= [DIFF(X)== X + Z,DIFF(Y)== F(T)中,x == Y];瓦尔= [X(t),Y(t)的,Z(T)];

isLowIndexDAE检查系统的差分索引。对于这个系统,isLowIndexDAE回报0)。这意味着,系统的差分索引是2或更高。

isLowIndexDAE(均衡器,VARS)
ANS = 0逻辑

reduceDAEIndex重写系统,使得所述差分索引是1。新系统有一个额外的状态变量,DYT(t)的

[newEqs,newVars] = reduceDAEIndex(方程,乏)
newEqs = DIFF(X(t),T) -  Z(吨) -  X(t)的DYT(T) -  F(T)X(t) -  Y(t)的差异(X(t),T) -  DYT(吨)newVars = X(t)Y(t)的Z(t)的DYT(t)的

检查新系统的微分阶低于2

isLowIndexDAE(newEqs,newVars)
ANS =逻辑1

减少索引和返回更多详细信息

减少包含两个二阶微分代数方程的系统的差分索引。因为方程是二阶方程,使用第一reduceDifferentialOrder到系统重写到一阶的DAE的系统。

创建两个二阶DAE的下列系统。这里,X(t)的Y(t)的F(t)的是系统的状态变量。指定方程和变量作为两个符号载体:方程式符号方程的矢量和变量为符号函数调用的向量。

syms t x(t) y(t) F(t) r g eqs = [diff(x(t), t, t) == -F(t)*x(t),... diff(y(t), t, t) == -F(t)*y(t) - g,... x(t)^2 + y(t)^2 == r^2 ]; vars = [x(t), y(t), F(t)];

重写这个系统,使所有方程成为一阶微分方程。该reduceDifferentialOrder函数由两个一阶表达式通过引入新的变量取代二阶DAEDXT(t)的DYT(t)的。它也取代由符号表达式一级方程式。

[等式,乏] = reduceDifferentialOrder(方程,乏)
方程= DIFF(DXT(T),T)+ F(t)的* X(t)的差异(DYT(T),T)+ G + F(t)的* Y(T) -  R ^ 2 + X(t)^2 + y(t)^2 Dxt(t) - diff(x(t), t) Dyt(t) - diff(y(t), t) vars = x(t) y(t) F(t) Dxt(t) Dyt(t)

reduceDAEIndex重写系统,使得所述差分索引是1

[等式,乏,R,originalIndex] = reduceDAEIndex(方程,乏)
方程= Dxtt(T)+ F(t)的* X(t)的G + Dytt(T)+ F(t)的* Y(T) -  R ^ 2 + X(t)^ 2 + Y(t)的^ 2DXT(T) -  DXT1(t)的DYT(T) -  DYT1(t)的2 * DXT1(T)* X(t)+ 2 * DYT1(T)* Y(t)的2 * Dxt1t(T)* X(吨)+ 2 * DXT1(T)^ 2 + 2 * DYT1(T)^ 2 + 2 * Y(t)的* DIFF(DYT1(T),T)Dxtt(T) -  Dxt1t(t)的Dytt(t)的-  DIFF(DYT1(T),T)DYT1(T) -  DIFF(Y(T),T)瓦尔= X(t)Y(t)的F(t)的DXT(t)的DYT(t)的Dytt(t)的Dxtt(t)的DXT1(t)的DYT1(t)的Dxt1t(t)的R = [Dytt(t)的差异(DYT(T),T)] [Dxtt(t)的差异(DXT(T),T)][DXT1(t)的差异(X(t)中,t)] [DYT1(t)的差异(Y(T),T)] [Dxt1t(t)的差异(X(t)的,T,T)]originalIndex = 3

reduceRedundancies缩短系统。

[等式,乏] = reduceRedundancies(方程,乏)
方程= Dxtt(T)+ F(t)的* X(t)的G + Dytt(T)+ F(t)的* Y(T) -  R ^ 2 + X(t)^ 2 + Y(t)的^ 22 * DXT(T)* X(t)+ 2 * DYT(T)* Y(t)的2 * Dxtt(T)* X(t)+ 2 * Dytt(T)* Y(T)+ 2 * DXT(t)^2 + 2*Dyt(t)^2 Dytt(t) - diff(Dyt(t), t) Dyt(t) - diff(y(t), t) vars = x(t) y(t) F(t) Dxt(t) Dyt(t) Dytt(t) Dxtt(t)

输入参数

全部收缩

一阶的DAE,指定为符号方程或表达式向量的系统。

状态变量,指定为象征性的函数或函数调用,如向量X(t)的

例:[X(t),Y(t)的]

输出参数

全部收缩

差分索引1的一阶微分代数的系统,返回符号表达式的列向量。

扩展组变量,返回符号函数调用的列向量。该载体包括原始状态变量瓦尔随后是替换二阶和更高阶的导数中生成的变量公式

新的和原有变量之间的关系,返回包含两列的矩阵符号。第一列包含了新的变数。第二列包含其定义为原始变量的衍生物瓦尔

原始DAE系统的差分索引,返回一个整数或为NaN

算法

实施reduceDAEIndex使用Pantelides算法。该算法通过选择性地添加原始等式的分化形式降低了较高索引系统来降低折射率的系统。所述Pantelides算法可以低估一个新系统的差分索引,并且因此,可能无法降低差分索引1。在这种情况下,reduceDAEIndex发出警告,并与四个输出参数的语法,返回的值oldIndex为NaN。该reduceDAEToODE功能使用更可靠,但高斯消元法速度较慢。注意reduceDAEToODE需要DAE系统是半线性。

介绍了在R2014b