Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

选择求解器

要仿真动态系统,可以计算其在指定时间跨度内连续时间步的状态。此计算使用系统模型提供的信息。时间步是发生计算的时间间隔。此时间间隔的大小称为步长大小。以这种方式计算模型状态的过程称为解算模型。没有任何一种模型解算方法能适用于所有系统。Simulink® 提供了一组程序,称为求解器。每个求解器代表一种特定的模型解算方法。

求解器运用一种数值方法来解算代表模型的一组常微分方程。通过这种计算,它确定下一个仿真步的时间。在解算此初始值问题的过程中,求解器还满足您指定的准确性要求。

数学家们开发出了多种数值积分方法来解算表示动态系统连续状态的常微分方程 (ODE)。提供了一套全面的固定步长和可变步长连续求解器,其中每个求解器实现一种特定的 ODE 解法(请参阅比较求解器)。在模型配置参数的 Solver 窗格中选择求解器。

MATLAB® 和 Simulink 提供的所有求解器都遵循类似的命名约定:ode 后跟两三个数字(表示求解器的阶)。有些求解器可以求解刚性微分方程,它们使用的方法由 sttb 后缀表示。

求解器选择标准

仿真模型的合适求解器取决于以下特性:

  • 系统动态特性

  • 解稳定性

  • 计算速度

  • 求解器稳健性

因此,Simulink 提供的数值求解器可大致按两个属性分类。

计算步长大小类型

  • 顾名思义,固定步长求解器使用相同的步长大小从仿真开始到仿真结束来解算模型。您可以指定步长大小,也可以让求解器选择步长大小。一般情况下,减小步长大小将提高结果的准确性,并增加系统仿真所需的时间。

  • 可变步长求解器会在仿真过程中改变步长大小。这些求解器减小步长大小,以提高模型仿真过程中某些事件(如快速状态变化、过零事件等)的精度。另外,当模型状态变化缓慢时,求解器将增加步长大小以避免执行不必要的步长。计算步长大小将增加每个步长的计算开销。但是,它可以减少步长总数,因此,对于具有过零、快速变化的状态以及其他需要额外计算的事件的模型,可减少保证指定级别的准确度所需的仿真时间。

模型状态

  • 连续求解器用数值积分方法,根据模型在上一个时间步的状态和状态导数来计算模型在当前时间步的连续状态。连续求解器依赖单个模块来计算模型在每个时间步的离散状态值。

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

使用迭代方法为您的需求选择求解器。将多个求解器的仿真结果进行比较,然后从中选择一个性能最佳、开销最少的求解器。

通过以下方式为模型选择求解器:

  • 使用 auto 求解器。新模型默认情况下将其求解器选择设置为 auto 求解器。auto 求解器会为模型推荐固定步长或可变步长求解器以及最大步长大小。有关详细信息,请参阅 使用自动求解器选择求解器

  • 如果您对使用 auto 求解器的仿真结果不满意,可在模型配置参数的 Solver 窗格中选择求解器。

在编译和仿真模型时,您可以基于模型的动态特性选择求解器。可变步长求解器更适合纯连续模型,如质点弹性阻尼系统的动态特性。对于包含多个开关的模型(如逆变电力系统),建议使用固定步长求解器,因为求解器重置次数会导致可变步长求解器像固定步长求解器那样工作。

注意

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

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

要根据您的模型调整选择的求解器,请参阅检查并提高仿真准确性

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

  • 成功解算模型。

  • 对于可变步长求解器,提供的解在您指定的容差范围内。

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

一个求解器可能无法满足所有这些目标。在进行选择之前,尝试使用不同求解器进行仿真。

Simulink 库中提供了多个求解器,这些求解器都可以与代数环求解器一起使用。有关详细信息,请参阅代数环求解器的工作原理

在模型配置参数的 Solver 窗格中,Simulink 库中的求解器主要分为两种。请参阅固定步长和可变步长求解器

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

相关示例

详细信息