matlab memory 代数环,代数环概念 - MATLAB & Simulink - MathWorks 中国

本文介绍了Simulink在模型包含代数环时如何使用非线性求解器进行迭代解算,以及代数环求解器的工作机制,包括信赖域和行搜索算法。此外,还讨论了代数环求解器的限制,如不连续性、离散值输出和非双精度信号等问题,并提供了调整算法的MATLAB命令。
摘要由CSDN通过智能技术生成

代数环求解器的工作原理

当模型中包含代数环时,Simulink 在每个时间步使用非线性求解器解算代数环。求解器执行迭代以确定代数约束的解(如果存在)。因此,有代数环的模型的运行速度可能比没有代数环的模型的运行速度慢。

Simulink 使用折线信赖域算法解算代数环。使用的容差小于 ODE 求解器 Reltol 和 Abstol。这是因为 Simulink 使用“显式 ODE 方法”来解算指数为 1 的微分代数方程 (DAE)。

要使代数环求解器发挥作用,

必须存在一个模块,在该模块中,代数环求解器可以中断循环并尝试解算该循环。

模型应该具有双精度实信号。

基础代数约束必须是一个平滑函数。

例如,假设您的模型中有一个带两个输入的 Sum 模块:一个相加,另一个相减。如果您将 Sum 模块的输出馈送给其中一个输入,则会创建一个代数环,其中的所有模块都包括直接馈通。

2550aba8aff1926f0a09852f04f4918e.gif

Sum 模块无法在不知道输入的情况下计算输出。Simulink 会检测代数环,代数环求解器将使用迭代循环解算代数环。在 Sum 模块示例中,该软件通过以下方式计算正确的结果:xa(t) = u(t) /2.(1)

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

有关详细信息,请参阅 Solving Index-1 DAEs i

matlabsimulink代数问题的讲解及解决方法1-解决代数方法.doc 本帖最后由 小小2008鸟 于 2012-11-30 11:26 编辑 什么是代数?发生在两个或多个模块在输入端口具有信号直接传递而形成反馈的情况时,直接传递的模块在不知输入端口的值的情况下无法计算出输出端的值,也就是现在时刻的输出是依赖现在时刻的输入值来计算的。当这种情况出现时simulink会在每一次迭代言算完成时,去决定它是否会有解。代数回路会减缓方真执行的速度并可能会没有解。     当方程两边都出现同一个变量时,即产生了代数。如:3y 4=y 当Simulink中存在非模型延迟时,通常会产生代数。比如,传感器将输出信号反馈到输入端。解决代数      连续模型,在构成代数的反馈节加入memory模块;      离散模型就加入单位延迟1/Z,不过加入memory后仿真会慢些,但用了加速后,这个牺牲还是值得的。另还有拆解法等,具体见下面第9行论文内容。Simulink提供了一些专门手段来拆解代数,例如代数约束模块,积分模块的状态输出端等。这些手段可以解决一些特定的代数问题。下面举一个利用积分模块的状态输出端的例子。    从积分模块的输人端口到输出端口是非直通的,但从积分模块的初始值输人端口到输出端口,以及从复位输人端口到输出端口却都是直通的。因此,如果从积分模块的输出端口引出的信号再经过一些直通模块后又反馈到积分模块的初始值输人端口或者复位输人端口,则构成一个代数。    为了解决这个问题,Simulink专门为积分模块设计了一个状态端口,其输出与输出端口完全相同,仅在内部计算的时序上有细微区别,而无论是从积分模块的初始值输人端口还是从复位输人端口到状态端口都是非直通的。因此,当出现上述的代数问题时,可 以从积分模块的状态端口引出信号。这样,代数就被拆解了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值