固定步长和可变步长求解器
您可以根据 Simulink 提供的求解器计算步长大小的方式来选择求解器:固定步长和可变步长。
固定步长求解器按固定时间间隔在从仿真开始到仿真结束的时间段内解算模型。间隔的大小称为步长大小。您可以指定步长大小,也可以让求解器选择步长大小。一般情况下,减小步长大小将提高结果的准确性,但会增加系统仿真所需的时间。
可变步长求解器会在仿真过程中改变步长大小。它们在模型状态快速变化时,会减小步长大小以提高准确性;当模型状态缓慢变化时,增加步长大小以避免执行不必要的时间步。计算步长大小会增加每个步长的计算开销,但可以减少对具有快速变化的状态或分段连续状态的模型维护指定级别的准确性所需的总时间步数,从而缩短仿真时间。
固定步长和可变步长求解器将下一个仿真时间计算为当前仿真时间与步长大小之和。Solver 配置窗格上的 Type 控件用于选择求解器类型。对于固定步长求解器,步长大小在仿真过程中保持不变。对于可变步长求解器,每一个时间步的步长大小可能各不相同,具体情况取决于模型的动态特性。具体来讲,就是可变步长求解器会增加或减少步长大小,以满足您指定的误差容限。
选择哪一种求解器取决于您计划如何部署模型以及模型的动态特性。如果您计划从模型中生成代码,然后在实时计算机系统上运行代码,请选择固定步长求解器来进行模型仿真。您不能将可变步长大小映射到实时时钟。
如果您不打算以生成代码的形式来部署模型,则选择可变步长求解器还是固定步长求解器取决于模型的动态特性。可变步长求解器也许能显著缩短模型的仿真时间。可变步长求解器之所以能够节省仿真时间,是因为求解器可以根据需要动态调整步长大小来达到给定级别的准确性。这种方法可以减少所需的步长数。固定步长求解器必须根据准确性要求在整个仿真过程中使用一种步长大小。为了在整个仿真过程中满足这些要求,固定步长求解器通常需要较小的步长。
ex_multirate 示例模型显示了可变步长求解器如何缩短多速率离散模型的仿真时间。
模型以两种不同的速率生成输出:每隔 0.5 秒生成一次,每隔 0.75 秒生成一次。要捕获这两种输出,固定步长求解器必须每 0.25 秒(模型的基础采样时间)执行一个时间步。
[0.0 0.25 0.5 0.75 1.0 1.25 1.5 ...]
相比之下,可变步长求解器只需在模型生成输出时执行一步。
[0.0 0.5 0.75 1.0 1.5 ...]
这种方案大大减少了模型仿真所需的时间步数。