主要内容

选择绝对宽容和相对容忍模拟

SimBiology®使用AbsoluteToleranceRelativeTolerance控制集成在模拟的准确性。具体地说,AbsoluteTolerance用于控制允许的最大绝对误差在任何一步模拟。它控制解决方案时小的错误。凭直觉,当解决方案趋于0时,AbsoluteTolerance下面阈值的准确性,你不要担心这个解决方案,因为它实际上是0。RelativeTolerance控制单个步骤的相对误差的积分器。直观地说,它控制的有效数字解决方案,除非它是小于绝对宽容,和 日志 10 ( R e l 一个 t v e T o l e r 一个 n c e ) 的数量是正确的数字。

算法

在每个仿真步骤,解算器估计本地错误e在国家j的模拟。解算器减少时间步的大小直到误差状态满足:

| e ( , j ) | 马克斯 ( R e l 一个 t v e T o l e r 一个 n c e | y ( , j ) | , 一个 b 年代 o l u t e T o l e r 一个 n c e ( , j ) )

因此在状态值更大的大小,取决于准确性RelativeTolerance。状态值接近零,精度控制AbsoluteTolerance

值的正确的选择RelativeToleranceAbsoluteTolerance根据不同的问题。默认值可能为第一次试验的仿真工作。当你调整公差,考虑到有权衡速度和准确性:

  • 如果仿真花费的时间太长,你可以增加(或放松)的值RelativeToleranceAbsoluteTolerance在一些成本的准确性。

  • 如果结果不准确,你可以减少(或收紧)的相对公差值除以10N,其中N是一个真正的正数。但这往往会减缓解算器。

  • 如果国家的大小值高,可以降低相对宽容,得到更准确的结果。

绝对宽容扩展

SimBiology如何使用AbsoluteTolerance确定误差取决于AbsoluteToleranceScaling属性启用。默认情况下,AbsoluteToleranceScaling启用这意味着每个国家都有自己的绝对宽容可能增加的模拟:

一个 b 年代 o l u t e T o l e r 一个 n c e ( , j ) = C 年代 一个 b 年代 T o l * 年代 c 一个 l e ( , j )

CSAbsTolAbsoluteTolerance属性中定义SolverOptions激活配置集的对象。

对于具有非零初始值的状态,规模是相对于传统的最大状态,如模拟到目前为止:

年代 c 一个 l e ( , j ) = 马克斯 ( | y ( 1 : , j ) | )

对于一个国家的初始值为零,规模估计的状态值在试验步骤大小AbsoluteToleranceStepSize使用欧拉方法。让我们调用这个值你们(j)。然后:

年代 c 一个 l e ( , j ) = 马克斯 ( | ( y e ( j ) ; y ( 2 : , j ) ] | )

如果一个初始状态是零,没有动态时间= 0,然后:

一个 b 年代 o l u t e T o l e r 一个 n c e ( , j ) = C 年代 一个 b 年代 T o l

剂量、事件和初始分配规则在仿真时间= 0时不考虑计算绝对宽容缩放。

相关的话题