变量步长求解器金宝app
变步解决者在模拟过程中改变步长,当模型状态变化迅速时减小步长以提高精度,当模型状态变化缓慢时增大步长以避免采取不必要的步骤。计算步长增加了每一步的计算开销,但可以减少总步数,从而减少模拟时间,对于快速变化或分段连续状态的模型,需要保持特定水平的精度。
当你设置类型控制解算器的配置窗格变步
,解算器控件允许您选择一个变步长求解器。与固定步长求解器一样,变步长求解器集包括一个离散求解器和一组连续求解器。然而,与固定步长求解器不同,步长根据局部误差动态变化。
这两种类型的变步长求解器之间的选择取决于模型中的块是否定义状态,如果是,则取决于它们定义的状态类型。如果您的模型没有定义状态或只定义离散状态,请选择离散求解器。如果模型具有连续状态,则连续求解器使用数值积分来计算下一个时间步的连续状态值。
请注意
如果一个模型没有状态或只有离散状态,则Simulink金宝app®即使指定了连续求解器,也使用离散求解器来模拟模型。
变步长离散求解器
当你的模型不包含连续状态时,使用变步长离散求解器。对于这样的模型,变步长离散求解器减小步长以捕获模型事件,如过零,并在可能提高仿真性能时增加步长。
图中所示的模型在0.5和0.75采样次数下包含两个离散的正弦波信号。下图分别显示了模型中的信号以及变步长离散和固定步长离散求解器的求解步骤。您可以看到,可变步长求解器只执行记录每个块的输出信号所需的步骤。另一方面,固定步长求解器将需要用固定步长(或基本采样时间为0.25)进行模拟,以记录所有信号,因此总体上需要更多的步骤。
变步长连续求解器
变步长求解器在模拟过程中动态地改变步长。这些求解器中的每一个都使用其局部误差控制来增加或减少步长,以达到您指定的公差。计算每个时间步的步长会增加计算开销。然而,它可以减少总步骤数,以及维持特定精度水平所需的模拟时间。
您可以进一步将变步长连续求解器分类为一步或多步、单阶或变阶、显式或隐式。看到一步vs多步连续求解更多信息。
变步长连续显式求解器
变步长显式求解器是针对非刚性问题设计的。金宝appSimulink提供了四个这样的求解器:
数值
ode23
ode113
奥登
ODE求解器 | 一步法 | 多步方法 | 精度等级 | 方法 |
---|---|---|---|---|
数值 |
X | 媒介 | 龙格-库塔,休眠-王子(4,5)对 | |
ode23 |
X | 低 | 龙格-库塔(2,3)双Bogacki & Shampine | |
ode113 |
X | 变量,低到高 | Adams-Bashforth-Moulton的PECE实现 | |
奥登 |
X | 看到精度等级在固定步长连续显式求解器 | 看到集成技术在固定步长连续显式求解器 |
ODE求解器 | 何时使用 |
---|---|
数值 | 一般来说, 如果 |
ode113 | |
ode23 | 的 |
奥登 | 的奥登 求解器采用非自适应龙格-库塔积分,其顺序由解决订单参数。奥登 参数确定的固定步长最大步长参数,但可以减小步长以捕获某些求解器事件,如过零和离散样本命中。 |
请注意
选择奥登
求解器时,模拟速度是重要的,例如,当
该模型包含大量的过零和/或求解器重置
的解算器分析器在分析模型时没有检测到任何失败的步骤吗
变步长连续隐式求解器
如果你的问题很复杂,试着使用一个可变步长隐式求解器:
ode15s
ode23s
ode23t
ode23tb
ODE求解器 | 一步法 | 多步方法 | 精度等级 | 求解器重置法 | Max。订单 | 方法 |
---|---|---|---|---|---|---|
ode15s |
X | 可变,低至中 | X | X | 数值微分公式(NDFs) | |
ode23s |
X | 低 | 二阶,修正的Rosenbrock公式 | |||
ode23t |
X | 低 | X | 梯形插值法 | ||
ode23tb |
X | 低 | X | TR-BDF2 |
求解器重置法
为ode15s
,ode23t
,ode23tb
的下拉菜单求解器复位法出现在解算器的细节“配置”窗格的“配置”部分。该参数控制求解器如何处理重置,例如,由过零检测引起的重置。允许的选项有快
而且健壮的
.快
指定求解器不为求解器重置重新计算雅可比矩阵,而健壮的
指定解算器所做的。因此,快
设置在计算上更快,但在某些情况下可能需要较小的步长。要对这些情况进行测试,请使用每个设置运行模拟并比较结果。如果结果没有差异,则可以安全地使用快
设置和保存时间。如果结果有显著差异,则尝试减少快速模拟的步长。
最大的订单
为ode15s
在求解器中,可以选择求解器应用的数值微分公式(NDFs)的最大阶数。自ode15s
使用一阶到五阶公式最大的订单
参数允许您选择从1到5的顺序。对于复杂的问题,你可能想从(2)开始。
选择可变步长隐式求解器的提示
下表提供了应用变步长隐式求解器的技巧。有关比较这些求解器行为的示例,请参见用刚性模型探讨变步长求解问题.
变步长求解器的容错
本地错误
变步长求解器使用标准的控制技术来监测每个时间步上的局部误差。在每一个时间步中,求解器计算该步结束时的状态值并确定本地错误-这些状态值的估计误差。然后将局部误差与可接受的误差,它是相对公差(rtol)和绝对公差(atol).如果本地错误大于可接受的错误任何一个状态时,求解器减小步长并再次尝试。
下图显示了一个状态和相对公差和绝对公差决定可接受误差的区域的图。
绝对的公差
您的模型具有全局绝对公差,您可以在“配置参数”对话框的“求解器”窗格上设置该公差。此公差适用于模型中的所有状态。你可以指定汽车
或者一个实标量。如果你指定汽车
(默认值),Simulink最金宝app初根据相对公差设置每个状态的绝对公差。如果相对公差较大1e-3,abstol
在1e-6处初始化。然而,对于reltol
小于1e-3,abstol
因为状态初始化在Reltol * 1e-3
.随着模拟的进行,每个状态的绝对公差重置为状态到目前为止假定的最大值,乘以该状态的相对公差。因此,如果状态从0变为1和reltol
是1 e - 3,abstol
在1e-6处初始化,到模拟结束时也达到1e-3。如果状态从0到1000,那么abstol
更改为1。
现在,如果状态从0变为1reltol
是在1e-4吗abstol
在1e-7处初始化,在模拟结束时达到1e-4的值。
如果计算出的绝对公差的初始值不合适,您可以自己确定一个合适的值。您可能需要多次运行模拟,以确定绝对公差的合适值。您还可以指定绝对公差是否应该与它相适应汽车
通过启用或禁用AutoScaleAbsTol
参数。有关更多信息,请参见自动刻度绝对公差.
有几个块允许你指定绝对公差值来求解它们计算的模型状态或决定其输出的模型状态:
您为这些块指定的绝对公差值将覆盖“配置参数”对话框中的全局设置。例如,如果全局设置没有为所有模型状态提供足够的错误控制,因为它们的大小相差很大,那么您可能希望重写全局设置。您可以将块绝对公差设置为:
汽车
- - - - - -
1
(一样汽车
)积极的标量
真正的向量
(维数等于块中相应连续状态的个数)
提示
如果您确实选择设置绝对公差,请记住,过低的值将导致求解器在接近零状态值的附近执行过多步骤。因此,模拟速度较慢。
另一方面,如果您将绝对公差设置得太高,当模型中的一个或多个连续状态接近零时,您的结果可能是不准确的。
模拟完成后,您可以通过降低绝对公差并再次运行模拟来验证结果的准确性。如果这两个模拟的结果令人满意地接近,那么您可以对它们的准确性感到有信心。