主要内容

选择一个解算器

要模拟一个动态系统,需要在指定的时间跨度内计算其在连续时间步长的状态。这种计算使用系统模型提供的信息。时间步长是计算发生的时间间隔。这个时间间隔的大小称为步长.以这种方式计算模型状态的过程称为解决该模型。没有一种求解模型的方法适用于所有系统。动态仿真模块®提供一组名为解决者.每个求解器都包含解决模型的特定方法。

求解器应用数值方法求解表示模型的常微分方程集。通过这个计算,它确定了下一个模拟步骤的时间。在求解这个初值问题的过程中,求解器也满足您指定的精度要求。

数学家们开发了各种各样的数值积分技术来求解表示动态系统连续状态的常微分方程(ode)。提供了大量的固定步长和可变步长连续求解器,每一个都实现了特定的ODE求解方法(参见解决比较).中的选择求解器解算器模型配置参数窗格。

所有求解器由MATLAB提供®和Simulink遵循类似的命名约定:颂歌,后面是两个或三个数字,表示求解器的顺序。一些求解器可以求解刚性微分方程,它们所使用的方法用表达式表示年代t,或结核病后缀。

解算器选择标准

模拟模型的合适求解器取决于以下特征:

  • 系统动力学

  • 溶液的稳定性

  • 计算速度

  • 解算器的鲁棒性

因此,Simulink提供的数值求解器可以根据两个性质进行广泛的分类。

计算步长类型

  • 固定步长求解器,顾名思义,从模拟开始到结束使用相同的步长来求解模型。您可以指定步长或让求解器选择它。一般来说,减小步长可以增加结果的准确性和模拟系统所需的时间。

  • 变步长求解器在模拟过程中改变步长。这些求解器减小了步长,以提高模型模拟过程中某些事件的准确性,如快速状态变化、过零事件等。此外,他们增加步长,以避免在模型状态变化缓慢时采取不必要的步骤。计算步长会增加每一步的计算开销。然而,它可以减少总步骤数,因此,对于零交叉、快速变化的状态和其他需要额外计算的事件的模型,维持指定的精度水平所需的模拟时间。

模型状态

  • 连续求解器利用数值积分来计算模型在当前时间步上的连续状态,该状态基于之前时间步上的状态和状态导数。连续求解器依赖于单个块来计算模型在每个时间步上的离散状态的值。

  • 离散求解器主要用于求解纯离散模型。他们只计算模型的下一个模拟时间步长。当它们执行这个计算时,它们依赖于模型中的每个块来更新其单独的离散状态。它们不计算连续状态。

使用迭代方法为您的需求选择求解器。比较几个求解器的模拟结果,选择一个能提供最佳性能和最小权衡的求解器。

用以下方法为你的模型选择一个求解器:

  • 使用自动解算器。新型号的求解器选择默认设置为自动求解器。自动求解器建议固定步长或变步长求解器为您的模型以及最大步长。有关更多信息,请参见选择使用自动求解器的求解器

  • 如果您对使用自动求解器的模拟结果不满意,请在解算器窗格中的模型配置参数。

当您构建和模拟一个模型时,您可以根据模型的动态选择求解器。变步长求解器更适合于纯连续模型,比如质量弹簧阻尼系统的动力学。对于包含多个开关的模型,如逆变电源系统,建议使用固定步长求解器,因为求解器重置的数量会导致变步长求解器的行为类似于固定步长求解器。

请注意

当您将模型作为生成的代码部署时,您只能使用固定步骤的求解器。如果在模拟过程中选择了变步长求解器,请使用它来计算部署时所需的固定步长求解器所需的步长。

这个图表提供了Simulink库中求解器的大致分类。

要根据您的模型调整选定的求解器,请参见检查并提高仿真精度

理想情况下,你选择的求解器应该:

  • 成功求解模型。

  • 对于变步长求解器,在指定的公差限制内提供一个解决方案。

  • 在合理的时间内求解模型。

单个求解器可能无法满足所有这些目标。在做出选择之前尝试模拟使用不同的求解器。

Simulink库提供了几种求解器,它们都可以与代数循环求解器一起工作。有关更多信息,请参见代数循环求解器是如何工作的

解算器类型 显式或隐式 离散 连续 Variable-Order
固定步 显式的 不适用 固定步长连续显式求解器 不适用
隐式的 不适用 固定步长连续隐式求解器 不适用
变步 显式的 Simulink中的可变步长求解器 变步长连续显式求解器 单阶与变阶连续求解器
隐式的 变步长连续隐式求解器 单阶与变阶连续求解器

解算器面板中的模型配置参数,将Simulink库中的求解器分为两大类。看到固定步长vs变步长求解器

有关比较求解器的其他方法,请参见:

相关的例子

更多关于

Baidu
map