主要内容gydF4y2Ba

代数循环概念gydF4y2Ba

一个gydF4y2Ba代数循环gydF4y2Ba发生在一个信号循环模型中只包含块直接引线。gydF4y2Ba直接引线gydF4y2Ba指块使用的输入值为当前时间步计算输出值为当前时间步。信号回路,只包含块直接引线创建一个循环依赖块输出和输入值在同一时间步。由此产生的方程是一个代数方程,需要一个解决方案在每个时间步和增加计算成本。gydF4y2Ba

总是有一些块直接引线,而其他人则直接引线只对某些块配置。块直接引线的例子包括:gydF4y2Ba

块没有直接引线保持一个或多个状态变量存储输入值从之前的时间步骤。块没有直接引线的例子包括gydF4y2Ba积分器gydF4y2Ba块和gydF4y2Ba单位延迟gydF4y2Ba块。gydF4y2Ba

提示gydF4y2Ba

确定一块直接引线,参考块特征表引用页面。查看所有块的块特征,使用gydF4y2Ba块支持表金宝appgydF4y2Ba块或gydF4y2BashowblockdatatypetablegydF4y2Ba函数。gydF4y2Ba

考虑一个模型,该模型包含了一个gydF4y2Ba总和gydF4y2Ba块减去块输出值gydF4y2BaxgydF4y2Ba一个gydF4y2Ba从输入值gydF4y2BaugydF4y2Ba。gydF4y2Ba

和块输出值减去配置xa的输入值。gydF4y2Ba

该模型实现了这个方程gydF4y2Ba

xgydF4y2Ba一个gydF4y2Ba=gydF4y2BaugydF4y2Ba- - - - - -gydF4y2BaxgydF4y2Ba一个gydF4y2Ba。gydF4y2Ba

对于这个简单的循环,解决方案gydF4y2BaxgydF4y2Ba一个gydF4y2Ba=gydF4y2BaugydF4y2Ba/ 2gydF4y2Ba。gydF4y2Ba

数学解释gydF4y2Ba

软件有几个数值动力学模拟gydF4y2Ba常微分方程gydF4y2Ba(常微分方程)。常微分方程系统的方程可以写成gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

在哪里gydF4y2BaxgydF4y2Ba状态向量和吗gydF4y2BatgydF4y2Ba是独立的变量。gydF4y2Ba

一些系统的方程包括额外的约束,包括独立变量和状态向量,但不是状态向量的导数。这样的系统被称为gydF4y2Ba微分代数方程gydF4y2Ba(拓扑)。gydF4y2Ba

这个词gydF4y2Ba代数gydF4y2Ba指的是方程,不涉及衍生品。你可以表达在半显式的形式出现的标志性工程gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 0gydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 一个gydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

地点:gydF4y2Ba

  • fgydF4y2Ba和gydF4y2BaggydF4y2Ba可以是向量函数。gydF4y2Ba

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

  • 第二个方程代数方程。gydF4y2Ba

  • 微分变量的向量gydF4y2BaxgydF4y2Ba。gydF4y2Ba

  • 代数变量的向量gydF4y2BaxgydF4y2Ba一个gydF4y2Ba。gydF4y2Ba

在一个模型中,一个代数环代表一个代数约束。模型与代数循环定义一个微分代数方程组。软件解决代数循环数值gydF4y2BaxgydF4y2Ba一个gydF4y2Ba在每一步的模拟使用ODE求解器进行求解。gydF4y2Ba

考虑这个拓扑模型,实现了一个简单的系统。内循环是一个代数约束,而外层循环代表一个微分方程。gydF4y2Ba

块提供了一笔输入块一步。和块的输出是输入另一块减去它的输出和输入。第二个和块的输出是一个积分器的输入块。积分器的输出块减去从阶跃输入第一块求和。gydF4y2Ba

标志性的模型实现了这个系统。gydF4y2Ba

xgydF4y2Ba' =gydF4y2BaxgydF4y2Ba

0 =gydF4y2BaugydF4y2Ba- - - - - -gydF4y2BaxgydF4y2Ba- 2gydF4y2BaxgydF4y2Ba一个gydF4y2Ba

ODE求解器的每一步,代数循环求解程序必须解决代数约束gydF4y2BaxgydF4y2Ba一个gydF4y2Ba在计算导数gydF4y2BaxgydF4y2Ba”。gydF4y2Ba

物理解释gydF4y2Ba

代数约束:gydF4y2Ba

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

  • 发生当你选择一个特定的坐标系统的一个模型gydF4y2Ba

  • 帮助实施设计约束系统响应在一个动态系统gydF4y2Ba

使用Simscape™模型系统跨机械、电气、液压等物理域的物理网络。Simscape结构的拓扑描述模型的行为。软件集成了这些方程的模型,然后直接解决拓扑。金宝app动态仿真模块gydF4y2Ba®gydF4y2Ba解决了组件的变量在不同的物理域同时,避免与代数环问题。gydF4y2Ba

人工代数循环gydF4y2Ba

一个gydF4y2Ba人工代数循环gydF4y2Ba发生在一个原子子系统或模型块导致模型检测一个代数循环,即使子系统不包含的内容直接从输入到输出引线。金宝app当您创建一个原子子系统,所有尺寸块直接引线,导致一个代数循环。gydF4y2Ba

开始与包括模型代表一个简单的比例控制的描述gydF4y2Ba

$ $ G (s) = \压裂{1}{s ^ 2 + 2 + 1} $ $gydF4y2Ba

可以重写以整数形式gydF4y2Ba

$ $ & # xA;左\点{x} = \ [& # xA;开始\{数组}{cc} & # xA;2 38 & #;1 \ \ & # xA; 1 & # 38;0 xA & #;结束\{数组}& # xA;正确\]& # xA; + \离开(& # xA; \开始{数组}{c} & # xA; 0 \ \ 1 & # xA;结束\{数组}& # xA; \右)& # xA; $ $gydF4y2Ba

左$ $ & # xA; y = \[开始\{数组}{cc} 0 & # 38; 1 \结束数组{}\]& # xA; $ $gydF4y2Ba

系统既没有代数变量也没有直接引线和不包含一个代数循环。gydF4y2Ba

修改以下步骤描述的模型:gydF4y2Ba

  1. 附上一个子系统的控制器和植物块。gydF4y2Ba

  2. 在子系统对话框中,选择gydF4y2Ba治疗作为原子单元gydF4y2Ba子系统的原子。gydF4y2Ba

  3. 在gydF4y2Ba诊断gydF4y2Ba面板模型的配置参数,设置gydF4y2Ba代数循环gydF4y2Ba参数gydF4y2Ba错误gydF4y2Ba。gydF4y2Ba

当模拟这个模型中,一个代数循环是因为子系统直接引线,尽管原子子系统内的路径不是直接引线。模拟与一个代数循环停止错误。gydF4y2Ba

代数循环解算器是如何工作的gydF4y2Ba

当一个模型包含一个代数循环,在每个时间步长仿真软件使用非线性规划求解来解决代数循环金宝app。解算器执行迭代代数约束来确定解决方案,如果有的话。因此,模型与代数循环可以运行更慢比没有代数循环模型。gydF4y2Ba

金宝app模型使用一个狗腿信赖域算法来解决代数循环。使用的公差小于ODE求解器进行求解gydF4y2BaReltolgydF4y2Ba和gydF4y2BaAbstolgydF4y2Ba。这是因为模型使用“显式赋法”来解金宝app决索引1微分代数方程(拓扑)。gydF4y2Ba

为解决代数循环工作,gydF4y2Ba

  • 必须有一个块循环求解可以打破循环并尝试解决循环。gydF4y2Ba

  • 模型应该真正的双信号。gydF4y2Ba

  • 底层代数约束必须是一个光滑函数gydF4y2Ba

例如,假设你的模型和块有两个inputs-one添加剂,减去。如果你喂的输出和块的输入,您创建一个代数循环的所有块包括直接引线。gydF4y2Ba

块不能总和计算输出不知道输入。金宝app仿真软件检测到循环代数,代数循环解算器解决了循环使用一个迭代循环。在和块的例子中,软件计算出正确的结果:gydF4y2Ba

xgydF4y2Ba一个gydF4y2Ba(gydF4y2BatgydF4y2Ba)=gydF4y2BaugydF4y2Ba(gydF4y2BatgydF4y2Ba)/ 2。gydF4y2Ba (1)gydF4y2Ba

基于代数循环求解器使用一个梯度搜索方法,它需要连续一阶导数对应的代数约束代数循环。因此,如果代数循环包含不连续,代数循环解决者可能会失败。gydF4y2Ba

有关更多信息,请参见gydF4y2Ba解决索引1在MATLAB和Simulink拓扑金宝appgydF4y2Ba1gydF4y2Ba

信赖域和线搜索算法在解决代数循环gydF4y2Ba

模型代数金宝app循环求解器使用两种算法来解决代数循环:gydF4y2Ba

  • 信赖域gydF4y2Ba

  • 线搜索gydF4y2Ba

默认情况下,模型选择最佳金宝app代数循环解决者和可能之间切换这两种方法在模拟。显式地启用自动循环代数解算器选择为您的模型,在MATLABgydF4y2Ba®gydF4y2Ba命令行输入:gydF4y2Ba

set_param (gydF4y2Bamodel_namegydF4y2Ba、“AlgebraicLoopSolver”、“汽车”);gydF4y2Ba

切换到信赖域算法,在MATLAB命令行,输入:gydF4y2Ba

set_param (gydF4y2Bamodel_namegydF4y2Ba、“AlgebraicLoopSolver”、“TrustRegion”);gydF4y2Ba

如果代数循环求解信赖域算法不能解决代数循环,尝试使用线搜索算法模拟模型。gydF4y2Ba

切换到线搜索算法,在MATLAB命令行,输入:gydF4y2Ba

set_param (gydF4y2Bamodel_namegydF4y2Ba、“AlgebraicLoopSolver”、“LineSearch”);gydF4y2Ba

有关更多信息,请参见:gydF4y2Ba

代数循环解算器的局限性gydF4y2Ba

解决代数循环是一个迭代的过程。模型代数金宝app循环求解成功只有在代数循环收敛于一个明确的答复。当循环无法收敛,或收敛太慢,仿真退出一个错误。gydF4y2Ba

代数循环解决不能解决代数循环包含下列:gydF4y2Ba

  • 块与discrete-valued输出gydF4y2Ba

  • 块与nondouble或复杂的输出gydF4y2Ba

  • 不连续gydF4y2Ba

  • StateflowgydF4y2Ba®gydF4y2Ba图表gydF4y2Ba

代数循环的影响模型gydF4y2Ba

如果你的模型包含一个代数循环:gydF4y2Ba

  • 你不能为模型生成代码。gydF4y2Ba

  • 模型代数金宝app循环解算器可能无法解决代数循环。gydF4y2Ba

  • 虽然仿真软件金宝app是试图解决代数循环,仿真可以执行缓慢。gydF4y2Ba

    对于大多数模型,首次代数循环求解是计算昂贵的步骤。金宝app仿真软件解决了后续步骤迅速,因为一个好的起点gydF4y2BaxgydF4y2Ba一个gydF4y2Ba可以从以前的时间步。gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba

相关的话题gydF4y2Ba


1gydF4y2BaShampine,劳伦斯F。,其摘要,J.A.Kierzenka。“解决索引1拓扑在MATLAB和Simulink。”金宝appgydF4y2Ba暹罗。gydF4y2Ba研究概述,第三,1999年,pp.538 - 552。gydF4y2Ba

2gydF4y2Ba更多,j,狗屁Garbow, K.E.Hillstrom。gydF4y2Ba用户指南MINPACK-1gydF4y2Ba。阿贡,IL):阿贡国家实验室,1980年。gydF4y2Ba

3gydF4y2BaRabinowitz,菲利普。gydF4y2Ba非线性代数方程的数值方法gydF4y2Ba纽约:戈登和违反科学出版社,1970年。gydF4y2Ba