Main Content

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

绝对容差

说明

指定当测得的状态值接近零时,可接受的最大求解器误差。如果绝对误差超过此容限,求解器会减少时间步大小。

类别:Solver

设置

默认值:auto

  • 默认值 (auto) 最初只根据相对容差设置每个状态的绝对容差。如果相对容差大于 1e-3,则初始绝对容差设置为 1e-6。但是,如果相对容差小于 1e-3,则状态的绝对容差初始化为 reltol * 1e-3。随着仿真的进行,每个状态的绝对容差将重置为状态在该点之前达到的最大值乘以该状态的相对容差。

    例如,如果状态从 0 变为 1,并且 Relative tolerance 为 1e-4,则 Absolute tolerance 初始化为 1e-7,在仿真结束时 Absolute tolerance 达到 1e-4。

    另一方面,如果 Relative tolerance 设置为 1e-3,则 Absolute tolerance 设置为 1e-6,并在仿真结束时达到 1e-3。

  • 如果计算的设置不合适,您可以自己确定一个合适的设置。

  • 如果您为 Absolute tolerance 设置自己的值,您还可以通过切换 AutoScaleAbsTol 参数来选择它是否根据状态值进行调整。有关详细信息,请参阅Auto scale absolute tolerance

提示

  • 每个时间步的可接受误差是 Relative toleranceAbsolute tolerance 的函数。有关这些设置如何协作工作的详细信息,请参阅Error Tolerances for Variable-Step Solvers

  • IntegratorSecond-Order IntegratorVariable Transport DelayTransfer FcnState-SpaceZero-Pole 模块允许您指定绝对容差值,以求解它们计算的或决定其输出的模型状态。您在这些模块中指定的绝对容差值将覆盖 Configuration Parameters 对话框中的全局设置。

  • 如果全局设置不能为您的所有模型状态提供足够的误差控制(例如其量级差异很大时),则可能需要使用模块覆盖 Absolute tolerance 设置。

  • 如果将 Absolute tolerance 设置得太低,则求解器可能会在接近零的状态值附近执行太多时间步,从而减慢仿真速度。

  • 要在运行后检查仿真的准确性,可以降低绝对容差并再次运行。如果两次仿真的结果没有显著差异,则可以确信解已收敛。

  • 如果仿真结果看起来不准确,并且您的模型的状态值接近零,则 Absolute tolerance 可能太大。请减小 Absolute tolerance 以强制仿真在接近零状态值的区域附近执行更多时间步。

Dependencies

仅当您进行如下设置时此参数才会启用:

  • 将求解器 Type 设置为 “Variable-step”。

  • Solver 设置为连续可变步长求解器。

将此参数与 Relative tolerance 结合使用,可确定每个时间步的可接受误差。有关这些设置如何协作工作的详细信息,请参阅Error Tolerances for Variable-Step Solvers

用于配置参数的命令行信息

参数:AbsTol
类型:字符向量 | 数值
值:'auto' | 正实数标量
默认值:'auto'

推荐的设置

应用场景设置
调试无影响
可追溯性无影响
效率无影响
安全预警无影响

相关主题