SimBiology® использует AbsoluteTolerance
и RelativeTolerance
управлять точностью интегрирования в процессе моделирования. А именно, AbsoluteTolerance
используется, чтобы управлять самой большой допустимой абсолютной погрешностью в любом шаге в процессе моделирования. Это управляет ошибкой, когда решение мало. Интуитивно, когда решение приближается 0, AbsoluteTolerance
порог, ниже которого вы не волнуетесь о точности решения, поскольку это эффективно 0. RelativeTolerance
управляет относительной погрешностью одного шага интегратора. Интуитивно, это управляет количеством значительных цифр в решении, кроме тех случаев, когда это меньше, чем абсолютная погрешность, и количество правильных цифр.
В каждом шаге симуляции i
, решатель оценивает локальную ошибку e
в j
состояния из симуляции. Решатель уменьшает размер временного шага
i
пока ошибка состояния не удовлетворяет:
Таким образом в значениях состояния большей величины, точность определяется RelativeTolerance
. Как нуль подхода значений состояния, точностью управляет AbsoluteTolerance
.
Верный выбор значений для RelativeTolerance
и AbsoluteTolerance
варьируется в зависимости от проблемы. Значения по умолчанию могут работать на первые испытания симуляции. Когда вы настраиваете допуски, полагаете, что существуют компромиссы между скоростью и точностью:
Если симуляция занимает слишком много времени, можно увеличиться (или ослабиться), значения RelativeTolerance
и AbsoluteTolerance
за счет некоторой точности.
Если результаты кажутся неточными, можно уменьшиться (или напрячься), значения относительной погрешности путем деления с 10 Н, где N является действительным положительным числом. Но это имеет тенденцию замедлять решатель.
Если величина значений состояния высока, можно уменьшить относительную погрешность, чтобы получить более точные результаты.
Как SimBiology использует AbsoluteTolerance
определить ошибку зависит от ли AbsoluteToleranceScaling
свойство включено. По умолчанию, AbsoluteToleranceScaling
включен, что означает, что каждое состояние имеет свою собственную абсолютную погрешность, которая может увеличиться в течение симуляции:
CSAbsTol
AbsoluteTolerance
свойство задано в SolverOptions
из активного объекта конфигурации модели.
Для состояния, которое имеет ненулевое начальное значение, шкала является максимальной величиной по состоянию, как замечено по симуляции к настоящему времени:
Для состояния, которое имеет начальное значение нуля, шкала оценивается как значение состояния после делания испытательного шага размера AbsoluteToleranceStepSize
использование Метода Эйлера. Давайте вызовем это значение ye(j)
то:
Если начальное состояние является нулем и имеет не динамический во время = 0, то:
Дозы, события и первоначальные правила присвоения во времени симуляции = 0 не рассматриваются при вычислении масштабирования абсолютной погрешности.