学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#学生的成功金宝app

Simulink和Simscape的金宝app求解器选择

介绍

这篇博文旨在为在Simulink和Simscape中选择求解器提供最佳实践。金宝app感激之情去汤姆Egel艾琳McGarrity他们的材料是下面内容的基础。这篇文章的目的当然不是要取代关于的坚如磐石的文档求解器的选择,它是补充和写的人谁:

  • 想要加速模拟并提高准确性,
  • 需要更好地理解所涉及的数字。

本文首先讨论求解器的分类和命名,然后提到为应用程序寻找最佳求解器以及处理常见错误的实际方面。Simscape不会(目前)被特别介绍。如果您对Simscape模型的故障诊断特别感兴趣,请在底部的评论部分留下注释。

这种介绍可能会引发两种反应:

  1. 我想知道更多!
    >在这里求a文件交换的求解工作坊这是一个实践深入到求解器知识,包括示例模型,幻灯片和练习。
  2. 我不想在解决方案的选择上投入时间!
    -我建议你去看看自动解算器,一个功能这是在2015a版本中添加的。它会自动为你的模型选择一个合适的求解器。

动机

这个例子傅科摆链接->foucaultPendulum.slx)说明为什么求解器的选择是关键!根据求解器选择ode45(默认值)或ode23t,摆位移的结果将完全不同。从图中可以看出,由于位移应该是对称的,ode23t的结果更有意义。有时,错误不会那么明显。我的博士导师在讨论建模策略时通常会说:“Christoph,所有的模型都是错误的,但其中一些是有用的。”接下来,让我们尝试确保模拟结果是有用的。

打开并运行模型“foucaultPendulum.slx”解决方案工作坊在FileExchange以体验说明求解器的行为。在讨论导致上述示例中显著结果偏差的模型刚度之前,让我们先做一些基础工作,看看有哪些Simulink / Simscape求解器,以及如何对它们进行分类。金宝app

求解器的分类和命名

名称及其含义

最重要的信息由求解器名称本身携带。一个单一的数字代表一个固定的步骤求解器,数字本身提供关于顺序的信息。关于集成方案的信息也可以从名称中获得。使用隐式方案的求解器总是带有一个修正的字母,而显式求解器只有数字。修正字母是缩写:“t”梯形,“tb”梯形向后,“s”刚性和“x”外推。如果没有修正,那就是一个显式求解器。

分类

数学求解器可分为4类:
步长-订单-状态更新-集成方案。

步长

固定步长求解器通常用于满足精度要求,并用于模型将部署到硬件上,如微控制器(关键字:代码生成)。可变步长求解器自动改变时间步长以满足要求。它们通常用于植物模型开发。变步长求解器可以显著缩短模型的模拟时间。

模型介绍了变步长求解器如何缩短多速率离散模型的仿真时间。该模型以两种不同的速率产生输出:每0.5秒和每0.75秒。为了捕获这两个输出,固定步长求解器必须每0.25秒执行一个时间步长基本样品时间模型)。

订单

如前所述,求解器名称中使用的数字指定了求解器的顺序。订单的选择对准确性有影响。通常,高阶求解器比低阶求解器更有效。变阶解算器使用多阶解算方程组。例如,隐式的变步长ode15s求解器使用一阶到五阶方程,而显式的变步长ode113求解器使用一阶到十三阶方程。解算器的步长集成顺序对准确性有很大影响。在我看来,最简单的解释方式如下:

  • 较小的步长和较高的求解阶数都能提高求解精度
  • 精度越高,速度越慢(至少对于固定步长求解器来说)

状态更新:离散的还是连续的

离散和连续求解器依赖于模型块来计算任何离散状态的值。定义离散状态的块负责计算这些状态在每个时间步的值。然而,与离散求解器不同,连续求解器使用数值积分来计算块定义的连续状态。

如果您的模型没有连续状态,那么Simulink将切换到固定步长离散求解器或变步长离散求解器金宝app。如果您的模型只有连续状态或连续和离散状态的混合,则根据您的模型的动力学从剩余的求解器选择中选择一个连续求解器。否则会出现错误。

集成方案:显式与隐式

显式求解器使用方程中的过去信息来计算下一步。这在计算上是简单的,但不稳定,因为系统方程不会在任何时候被完全解决。不稳定性并不是一个必要的问题,因为如果近似解仍然在你想要的误差范围内,一切都会很好。隐式求解器自一致地计算下一步,这是更多的计算工作每一步。

虽然可以应用隐式或显式连续求解器来解决所有这些系统,但隐式求解器是专门为解决刚性问题而设计的。显式求解器解决非刚性问题。如果一个常微分方程问题的期望解变化缓慢,那么它就被称为刚性问题,但也有一些接近的解变化迅速。金宝搏官方网站简而言之,我们可以说:一个刚性系统同时具有缓慢和快速变化的连续动态。数值方法必须采取较小的时间步长来求解系统。刚度是一个效率问题。系统越硬,显式求解器执行计算所需的时间就越长。例如,使用Simscape产品系列构建的大多数物理模型最终都是僵硬的系统,在这种情况下,您需要确保在僵硬的求解器之间进行选择。

实用方面

求解器的选择

当您构建和模拟一个模型时,您可以根据模型的动态特性选择任一类型的求解器。一个包含多个开关的模型,如逆变电源系统,需要一个固定步长求解器。变步长求解器更适合于纯连续模型,如质量弹簧阻尼系统的动力学。

当您将模型部署为生成的代码时,您只能使用固定步骤求解器。如果您在模拟期间选择了一个可变步长求解器,那么可以使用它来计算在部署时需要的固定步长求解器所需的步长。

零交叉

注意:这是相关的,如果你选择了一个变量步长求解器。

变量步长求解器动态调整时间步长,使其在变量缓慢变化时增大,在变量快速变化时减小。因此,求解器在不连续点附近采取许多小步骤,例如过零。零交叉事件可能是标志改变或硬停止。总的来说,这种行为提高了准确性,但可能导致过多的模拟时间。

知道零交叉可能会减慢您的模型已经是解决方案的主要部分。在这里找到一个可能的补救措施列表:

  • 调整过零选项
    (配置参数->其他选项)

    • 增加连续过零的次数
    • 切换到自适应算法
    • 放松信号阈值
    • 禁用特定块的检测,请参见文档

  • 修改模型并减少约束
    这不仅仅是一个设置,让我给你介绍一下解决车间(FEX)作为一个亲身实践的例子。

代数循环

代数循环通常发生在具有直接馈通的输入端口由相同块的输出驱动时,或者直接驱动,或者通过具有直接馈通的其他块的反馈路径驱动。因此,求解器被迫使用缓慢的迭代方法(!)。

最好的补救办法是避免代数循环,如果可能的话,找一个章节来帮助你文档或者看看解决车间(FEX)之前介绍过的。

这篇文章绝不是完整的,也不是关于这个主题的唯一出版物。同样的模型,应该是有用的,我希望这篇文章帮助你在你的日常工作与Simulink。金宝app鼓励你发表意见,提出改进或澄清的建议。

Christoph欢呼

|

评论

请点击留言在这里登录到您的MathWorks帐户或创建一个新帐户。