主要内容GydF4y2Ba

代数循环概念GydF4y2Ba

在Simu万博1manbetxlink中GydF4y2Ba®GydF4y2Ba模型GydF4y2Ba代数环GydF4y2Ba当信号回路存在且回路中只有直接馈通块时发生。GydF4y2Ba直接馈通GydF4y2Ba意味着Simulink万博1manbetx需要块输入信号的值来计算当前时间步的输出。这样的信号循环会在同一时间步中创建块输出和输入的循环依赖关系。这会导致在每个时间步都需要求解代数方程,从而增加模拟的计算成本。GydF4y2Ba

具有直接馈通输入的模块示例如下:GydF4y2Ba

非直接馈通GydF4y2Ba块维护一个状态变量GydF4y2Ba积分器GydF4y2Ba和GydF4y2Ba单位延迟GydF4y2Ba.GydF4y2Ba

提示GydF4y2Ba

要确定块是否具有直接馈通,请读取GydF4y2Ba特点GydF4y2Ba块参考页的一节。GydF4y2Ba

该图显示了一个代数循环的示例GydF4y2Ba总和GydF4y2Ba块是一个代数变量GydF4y2BaxGydF4y2BaA.GydF4y2Ba约束为等于第一个输入的GydF4y2BaUGydF4y2Ba减GydF4y2BaxGydF4y2BaA.GydF4y2Ba(例如,GydF4y2BaxGydF4y2BaA.GydF4y2Ba=GydF4y2BaUGydF4y2Ba–GydF4y2BaxGydF4y2BaA.GydF4y2Ba).GydF4y2Ba

这个简单循环的解决方案是GydF4y2BaxGydF4y2BaA.GydF4y2Ba=GydF4y2BaUGydF4y2Ba/2GydF4y2Ba.GydF4y2Ba

数学解释GydF4y2Ba

万博1manbetxSimulink包含一套用于模拟的数值解算器GydF4y2Ba常微分方程(ODE)GydF4y2Ba,这是可以写成的方程组GydF4y2Ba

xGydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba FGydF4y2Ba (GydF4y2Ba xGydF4y2Ba ,GydF4y2Ba TGydF4y2Ba )GydF4y2Ba ,GydF4y2Ba

哪里GydF4y2BaxGydF4y2Ba是状态向量,并且GydF4y2BaTGydF4y2Ba是独立的时间变量。GydF4y2Ba

有些方程组包含附加约束,这些约束涉及自变量和状态向量,但不涉及状态向量的导数。这种系统称为GydF4y2Ba微分代数方程(DAE)GydF4y2Ba,GydF4y2Ba

术语GydF4y2Ba代数的GydF4y2Ba指不涉及任何导数的方程式。您可以用半显式形式表示工程中出现的DAEGydF4y2Ba

xGydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba FGydF4y2Ba (GydF4y2Ba xGydF4y2Ba ,GydF4y2Ba xGydF4y2Ba A.GydF4y2Ba ,GydF4y2Ba TGydF4y2Ba )GydF4y2Ba 0GydF4y2Ba =GydF4y2Ba GGydF4y2Ba (GydF4y2Ba xGydF4y2Ba ,GydF4y2Ba xGydF4y2Ba A.GydF4y2Ba ,GydF4y2Ba TGydF4y2Ba )GydF4y2Ba ,GydF4y2Ba

哪里:GydF4y2Ba

  • FGydF4y2Ba和GydF4y2BaGGydF4y2Ba可以是向量函数。GydF4y2Ba

  • 第一个方程是微分方程。GydF4y2Ba

  • 第二个方程是代数方程。GydF4y2Ba

  • 微分变量的向量是GydF4y2BaxGydF4y2Ba.GydF4y2Ba

  • 代数变量的向量是GydF4y2BaxGydF4y2BaA.GydF4y2Ba.GydF4y2Ba

在Si万博1manbetxmulink模型中,代数循环是代数约束。具有代数循环的模型定义了微分代数方程组。Simulink以数值方式求解代数方程(代数循环)GydF4y2BaxGydF4y2BaA.GydF4y2Ba在ODE解算器的每个步骤中。GydF4y2Ba

这个GydF4y2Ba模型GydF4y2Ba图中所示为半显式形式的方程组:GydF4y2Ba

xGydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba FGydF4y2Ba (GydF4y2Ba xGydF4y2Ba ,GydF4y2Ba xGydF4y2Ba A.GydF4y2Ba ,GydF4y2Ba TGydF4y2Ba )GydF4y2Ba =GydF4y2Ba xGydF4y2Ba A.GydF4y2Ba 0GydF4y2Ba =GydF4y2Ba GGydF4y2Ba (GydF4y2Ba xGydF4y2Ba ,GydF4y2Ba xGydF4y2Ba A.GydF4y2Ba ,GydF4y2Ba TGydF4y2Ba )GydF4y2Ba =GydF4y2Ba −GydF4y2Ba xGydF4y2Ba +GydF4y2Ba UGydF4y2Ba −GydF4y2Ba 2.GydF4y2Ba xGydF4y2Ba A.GydF4y2Ba .GydF4y2Ba

在ODE解算器的每个步骤中,代数循环解算器必须解算GydF4y2BaxGydF4y2BaA.GydF4y2Ba在计算导数之前GydF4y2Ba xGydF4y2Ba ˙GydF4y2Ba .GydF4y2Ba

物理解释GydF4y2Ba

代数约束:GydF4y2Ba

  • 在物理系统建模时发生,通常是由于守恒定律,如质量守恒和能量守恒GydF4y2Ba

  • 为模型选择特定坐标系时发生GydF4y2Ba

  • 帮助在动态系统中对系统响应施加设计约束GydF4y2Ba

使用模拟风景™ 将跨越机械、电气、液压和其他物理领域的系统建模为物理网络。Simscape构造表征模型行为的DAE。软件将这些方程与模型的其余部分集成,然后直接求解DAE。Simulink同时解决不同物理域中组件的变量,避免了代数循环问题。万博1manbetxGydF4y2Ba

人工代数环GydF4y2Ba

一GydF4y2Ba人工代数环GydF4y2Ba当原子子系统或模型块导致Simulink检测代数循环时发生,即使子系统的内容不包含从输入到输出的直接馈通。创万博1manbetx建原子子系统时,所有输入块都是直接馈通,从而产生代数循环。GydF4y2Ba

从包含的模型开始,该模型表示以下所述设备的简单比例控制:GydF4y2Ba

$$G(s)=\frac{1}{s^2+2s+1}$$GydF4y2Ba

可以在状态空间形式中重写为GydF4y2Ba

在本周五的赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛赛#xA$$GydF4y2Ba

$$
;y=\left[\begin{array}{cc}0&;1\end{array}\right]
$$GydF4y2Ba

该系统既没有代数变量,也没有直接馈通,也不包含代数回路。GydF4y2Ba

按照以下步骤中所述修改模型:GydF4y2Ba

  1. 将控制器和设备模块封装在子系统中。GydF4y2Ba

  2. 在“子系统”对话框中,选择GydF4y2Ba视为原子单位GydF4y2Ba使子系统原子化。GydF4y2Ba

  3. 在GydF4y2Ba诊断学GydF4y2Ba在“模型配置参数”窗格中,设置GydF4y2Ba代数环GydF4y2Ba参数到GydF4y2Ba错误GydF4y2Ba.GydF4y2Ba

当模拟此模型时,由于子系统是直接馈通的,所以会发生代数循环,即使原子子系统内的路径不是直接馈通的。模拟会因代数循环错误而停止。GydF4y2Ba

代数循环解算器的工作原理GydF4y2Ba

当模型包含代数循环时,Simulink在每个时间步使用非线性解算器来求解代数循环。万博1manbetx解算器执行迭代以确定代数约束的解(如果存在)。因此,具有代数循环的模型比没有代数循环的模型运行得慢。GydF4y2Ba

万博1manbetxSimulink使用狗腿信赖域算法来求解代数循环。使用的公差小于ODE解算器GydF4y2Ba雷托GydF4y2Ba和GydF4y2BaAbsolGydF4y2Ba这是因为Simulink使用“显式O万博1manbetxDE方法”求解索引1微分代数方程(DAE)。GydF4y2Ba

要使代数循环解算器工作,GydF4y2Ba

  • 必须有一个块,循环解算器可以在其中打断循环并尝试解算循环。GydF4y2Ba

  • 该模型应具有真实的双信号。GydF4y2Ba

  • 基础代数约束必须是平滑函数GydF4y2Ba

例如,假设您的模型有一个包含两个输入的求和块,一个是加法输入,另一个是减法输入。如果将求和块的输出馈送到其中一个输入,则创建一个代数循环,其中所有块都包括直接馈通。GydF4y2Ba

Sum块在不知道输入的情况下无法计算输出。Simulink检测代数循环,代数循环解算器使用迭代循环求解循环。在Sum块示例中,软件通过万博1manbetx以下方式计算正确的结果:GydF4y2Ba

xGydF4y2BaA.GydF4y2Ba(GydF4y2BaTGydF4y2Ba) =GydF4y2BaUGydF4y2Ba(GydF4y2BaTGydF4y2Ba) / 2.GydF4y2Ba (1)GydF4y2Ba

代数循环解算器使用基于梯度的搜索方法,该方法需要对应于代数循环的代数约束的连续一阶导数。因此,如果代数循环包含不连续性,则代数循环解算器可能会失败。GydF4y2Ba

有关详细信息,请参阅GydF4y2Ba在MATLAB和Simulink中求解索引-1 DAE万博1manbetxGydF4y2Ba[GydF4y2Ba1.GydF4y2Ba]GydF4y2Ba

代数循环求解器中的信赖域和线搜索算法GydF4y2Ba

Simu万博1manbetxlink代数循环解算器使用两种算法之一来解算代数循环:GydF4y2Ba

  • 信任区GydF4y2Ba

  • 线路搜索GydF4y2Ba

默认情况下,Simuli万博1manbetxnk选择最佳代数循环解算器,并在模拟期间在这两种方法之间切换。要为模型显式启用自动代数循环解算器选择,请在MATLABGydF4y2Ba®GydF4y2Ba在命令行中,输入:GydF4y2Ba

设置参数(GydF4y2Ba型号名称GydF4y2Ba“,”代数循环求解器“,”自动“);GydF4y2Ba

要切换到信赖域算法,请在MATLAB命令行中输入:GydF4y2Ba

设置参数(GydF4y2Ba型号名称GydF4y2Ba,'AlgebraicLoopSolver','TrustRegion');GydF4y2Ba

如果代数循环求解器无法使用信赖域算法求解代数循环,请尝试使用线搜索算法模拟模型。GydF4y2Ba

要切换到行搜索算法,请在MATLAB命令行中输入:GydF4y2Ba

设置参数(GydF4y2Ba型号名称GydF4y2Ba,'AlgebraicLoopSolver','LineSearch');GydF4y2Ba

有关详细信息,请参阅:GydF4y2Ba

代数循环求解器的局限性GydF4y2Ba

代数循环求解是一个迭代过程。Simulink代数循环解算器只有在代数循环收敛到确定答案时才成功。当循环无万博1manbetx法收敛或收敛速度太慢时,模拟将出错退出。GydF4y2Ba

代数循环解算器无法解算包含以下任一项的代数循环:GydF4y2Ba

  • 具有离散值输出的块GydF4y2Ba

  • 具有非双输出或复杂输出的块GydF4y2Ba

  • 间断GydF4y2Ba

  • 状态流GydF4y2Ba®GydF4y2Ba图表GydF4y2Ba

模型中代数循环的含义GydF4y2Ba

如果模型包含代数循环:GydF4y2Ba

  • 不能为模型生成代码。GydF4y2Ba

  • Simu万博1manbetxlink代数循环解算器可能无法解算代数循环。GydF4y2Ba

  • 当Simul万博1manbetxink试图解决代数循环时,模拟可能执行得很慢。GydF4y2Ba

    对于大多数模型,代数循环解算器在第一步的计算成本很高。Simulink可以快速解决后续时间步,因为它是万博1manbetxGydF4y2BaxGydF4y2BaA.GydF4y2Ba可从上一个时间步获得。GydF4y2Ba

另见GydF4y2Ba

|GydF4y2Ba|GydF4y2Ba|GydF4y2Ba

相关话题GydF4y2Ba


[GydF4y2Ba1.GydF4y2Ba]GydF4y2Ba在MATLAB和Simulink中求解索引-1 DAE万博1manbetxGydF4y2Ba暹罗评论。GydF4y2Ba第18卷,第31999号,第538-552页。GydF4y2Ba

[GydF4y2Ba2.GydF4y2Ba]GydF4y2BaMore,J.J.,B.S.Garbow和K.E.Hillstrom。GydF4y2BaMINPACK-1用户指南GydF4y2Ba. 伊利诺伊州阿贡:阿贡国家实验室,1980年。GydF4y2Ba

[GydF4y2Ba3.GydF4y2Ba]GydF4y2Ba拉比诺维茨,菲利普,ed。GydF4y2Ba非线性代数方程的数值解法GydF4y2Ba,纽约:戈登和科学出版社,1970年。GydF4y2Ba