主要内容

可变步骤求解器金宝app

可变步骤求解器在仿真过程中改变步长,当模型状态变化迅速时减小步长以提高精度,当模型状态变化缓慢时增大步长以避免采取不必要的步骤。计算步长会增加每一步的计算开销,但可以减少总步数,从而减少模拟时间,以维持具有快速变化或分段连续状态的模型的指定精度水平。

当你设置类型的控制解算器配置面板变步,解算器控件允许您选择一个可变步长求解器。与固定步长求解器一样,变步长求解器集合包括一个离散求解器和一个连续求解器集合。然而,与固定步长求解器不同的是,步长是根据局部误差动态变化的。

两种类型的可变步长求解器之间的选择取决于模型中的块是否定义状态,如果是,则为定义的状态类型。如果您的模型没有定义任何状态或仅定义离散状态,请选择离散求解器。如果模型具有连续状态,则连续求解器使用数字积分来计算下次步骤的连续状态的值。

请注意

如果一个模型没有状态或只有离散状态,Simulink金宝app®使用离散解算器来模拟模型,即使您指定的是连续解算器。

变步离散解算器

当您的型号不包含连续状态时,使用变量步骤离散求解器。对于这种模型,可变步骤离散求解器降低了其步长,以捕获诸如零点的模型事件,并且在可以提高模拟性能时增加阶梯大小。

图中模型包含两个离散的正弦波信号,采样次数分别为0.5和0.75。下图分别显示了模型中的信号以及变量步长离散解算器和固定步长离散解算器的求解步骤。可以看到,可变步长求解器只执行记录每个块输出信号所需的步骤。另一方面,固定步长求解器需要用固定步长(或基本采样时间为0.25)进行模拟,以记录所有信号,从而在总体上采取更多步骤。

变步连续动力学

可变步长求解器在仿真期间动态地改变阶梯尺寸。这些求解器中的每一个都使用其本地错误控制增加或减少步长,以实现您指定的公差。计算每个时间步骤的步长增加了计算开销。但是,它可以减少总步数,以及维持指定精度水平所需的模拟时间。

您可以进一步将变步连续求解器分类为一步或多步、单阶或变阶、显式或隐式。看到单步与多步连续求解想要查询更多的信息。

变步长连续显式求解器

针对非刚性问题设计了变步长显式求解器。金宝appSimulink提供了四个这样的求解器:

  • 数值

  • ode23.

  • ode113

  • 奥登

ODE求解器 一步法 多步方法 准确度的顺序 方法
数值 X 媒介 Runge-Kutta,Dormand-Prince(4,5)对
ode23. X 低的 Runge-Kutta(2,3)对Bogacki&Shampine
ode113 X 变量,低到高 亚当斯-巴什福斯-莫尔顿的PECE实施
奥登 X 看到准确度的顺序固定步长连续显式求解 看到集成技术固定步长连续显式求解

ODE求解器 什么时候使用
数值

一般来说,数值对于大多数问题来说,Solver是最好的第一次尝试。龙格-库塔(4,5)解算器是一种五阶方法,对误差进行四阶估计。这个求解器还使用了一个四阶插值,它允许事件定位和更平滑的绘图。

如果是数值是计算缓慢,问题可能是僵硬的,因此需要一个隐式求解器。

ode113

对于有严格误差公差的问题或计算密集的问题,Adams-Bashforth-Moulton PECE求解器可以比数值

ode23.

ode23.可以比数值求解粗公差和存在温和刚度。该求解器提供精确的解决方案,通过应用三次埃尔米特插值的值和斜金宝搏官方网站率计算在一个步骤的结束。

奥登 奥登求解器使用其订单所确定的不适用的runge-kutta集成解决订单参数。奥登使用由。确定的固定步长马克斯步长参数,但是可以减少步长以捕获某些求解器事件,例如零交叉和分立样本命中。

请注意

选择奥登仿真速度很重要的求解器,例如,何时

  • 该模型包含大量零点和/或求解器重置

  • 解算器分析器在分析模型时不会检测到任何失败的步骤

可变步骤连续隐式求解器

如果您的问题很僵硬,请尝试使用一个可变步骤隐式求解器之一:

  • ode15s

  • ode23s

  • ode23t

  • ode23tb

ODE求解器 一步法 多步方法 准确度的顺序 解算器复位方法 最大限度。命令 方法
ode15s X 变量,低至中等 X X 数值微分公式(ndf)
ode23s X 低的 二阶修正的Rosenbrock公式
ode23t X 低的 X 使用插值的梯形法则
ode23tb X 低的 X TR-BDF2

解算器复位方法

ode15sode23t,ode23tb的下拉菜单解算器复位方法出现在解算器的细节部分。该参数控制求解器如何处理由过零检测等引起的重置。允许的选项有健壮的指定求解器不重新计算求解器重置的雅可比矩阵,然而健壮的指定求解器执行的操作。因此,设置在计算上更快,但在某些情况下可能使用较小的步长。要测试这些情况,请使用每个设置运行模拟并比较结果。如果在效果上没有差别,就可以放心使用了设置和节省时间。如果结果差异很大,请尝试减少步长以实现快速模拟。

最大的订单

为了ode15s,您可以选择求解器所应用的数值微分公式(ndf)的最大阶数。自ode15s使用一到五阶公式最大的订单参数允许您选择订单1到5。对于一个棘手的问题,你可能想从(2)开始。

选择可变步长的隐式求解器的提示

下表提供了应用可变步长隐式求解器的技巧。有关比较这些求解器行为的示例,请参见使用僵硬模型探索变步长求解器

ODE求解器 何时使用的提示
ode15s

ode15s变阶解算器是基于数值分化公式(NDFS)。NDFS与后向区分式(BDF)有关,但更有效,这些公式(BDF)也称为齿轮方法。的ode15s求解器数值生成雅可比矩阵。如果你怀疑一个问题是僵硬的,或者数值失败或非常低效,请尝试ode15s.作为一个规则,首先将ndf的最大顺序限制为2。

ode23s

ode23s是基于修正的2阶Rosenbrock公式。因为它是一步求解,它比ode15s在原油公差。喜欢ode15sode23s数值上为您生成雅可比矩阵。但是,它可以解决某些类型的僵硬问题ode15s不是有效的。

ode23t

ode23t求解器是使用“免费”立体化的梯形规则的实现。如果您的型号仅适度静置,则使用此求解器,并且您需要一个没有数值阻尼的解决方案。(当您模拟振荡运动时,能量不会消失。)

ode23tb

ode23tb是TR-BDF2的实现,TR-BDF2是一个有两个阶段的隐式龙格-库塔公式。第一阶段是梯形规则步骤,而第二阶段使用二阶后向微分公式。通过构造,该方法在计算两个阶段时使用相同的迭代矩阵。喜欢ode23s,这个求解器可以比ode15s在原油公差。

请注意

对于一个僵硬的问题,解决方案可以在与集成间金宝搏官方网站隔相比的时间标度上更改,而感兴趣的解决方案更加较长的时间尺度。不设计用于僵硬问题的方法是在解决方案缓慢变化的间隔内无效的,因为这些方法使用时间步长足够小以解决最快的变化。有关更多信息,请参见Shampine, l . F。常微分方程的数值解,Chapman&Hall,1994年。

可变步长求解器的误差公差

本地错误

可变步长求解器使用标准控制技术来监控每个时间步长的局部误差。在每个时间步骤中,求解器在步骤结束时计算状态值并确定本地错误- 这些状态值的估计误差。然后他们将本地错误进行比较可接受的错误,这是相对容限(rtol)和绝对容忍(atol).如果本地错误大于可接受的错误任何一个状态时,求解器减小步长并再次尝试。

  • 相对宽容测量相对于每个状态大小的误差。相对公差表示状态值的百分比。默认值1e-3表示计算的状态精确到0.1%以内。

  • 绝对的宽容是阈值误差值。随着测量状态的值零的值表示可接受的误差表示可接受的误差。

    求解器需要误差国家,e为了满足:

    e 马克斯 r t o l × | x | 一个 t o l

下图显示了一个状态和区域的示意图,其中相对公差和绝对公差决定了可接受的误差。

绝对的公差

您的模型具有全局绝对公差,您可以在“配置参数”对话框的“Solver”窗格中设置。这种宽容适用于模型中的所有状态。您可以指定汽车或者实标量。如果您指定汽车(默认值),Simulink最金宝app初基于相对容忍度为每个状态设置绝对容忍度。如果相对公差大于1e-3,ab初始化为1e-6。然而,对于reltol小于1 e - 3,ab状态初始化为reltol * 1 e - 3.随着模拟的进展,每个状态的绝对容差重置为迄今为止所假设的最大值,乘以该状态的相对容差。因此,如果状态从0变为1并且reltol是1 e - 3,ab初始化到1e-6,在模拟结束时也达到1e-3。如果一个状态从0到1000,那么ab更改为1。

现在,如果状态从0变为1reltol在1E-4设置,然后设置ab在1E-7处初始化,并且通过模拟结束达到1E-4的值。

如果计算的绝对公差初始值不合适,您可以自己确定一个合适的值。您可能必须运行多次模拟,以确定绝对公差的适当值。您还可以指定绝对公差是否应该类似地适应它汽车通过启用或禁用的设置AutoScaleAbsTol参数。有关更多信息,请参见自动标度绝对公差

有几个块允许您指定用于解决它们计算或确定其输出的模型状态的绝对容差值:

为这些块指定的绝对公差值覆盖“配置参数”对话框中的全局设置。例如,如果全局设置不能为所有模型状态提供足够的错误控制,则可能需要覆盖全局设置,因为它们的大小差异很大。你可以设置块的绝对公差为:

  • 汽车

  • - - - - - -1(一样汽车

  • 积极的标量

  • 真正的向量(有一个与块中相应的连续状态数量相等的维度)

提示

如果您选择设置绝对容差,请记住,值过低会导致求解器在接近零的状态值附近采取太多步骤。结果,模拟速度变慢了。

另一方面,如果您将绝对容忍度设置得过高,那么由于模型中的一个或多个连续状态趋近于零,您的结果可能会不准确。

一旦模拟完成,您可以通过减少绝对容差并再次运行模拟来验证结果的准确性。如果这两种模拟的结果令人满意地关闭,那么您可以对自己的准确性感到充满信心。