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 не рассматриваются при вычислении абсолютного масштабирования допуска.