exponenta event banner

Выбор абсолютного допуска и относительного допуска к симуляции

SimBiology® использует AbsoluteTolerance и RelativeTolerance управлять точностью интегрирования в процессе моделирования. А именно, AbsoluteTolerance используется, чтобы управлять самой большой допустимой абсолютной погрешностью в любом шаге в процессе моделирования. Это управляет ошибкой, когда решение мало. Интуитивно, когда решение приближается 0, AbsoluteTolerance порог, ниже которого вы не волнуетесь о точности решения, поскольку это эффективно 0. RelativeTolerance управляет относительной погрешностью одного шага интегратора. Интуитивно, это управляет количеством значительных цифр в решении, кроме тех случаев, когда это меньше, чем абсолютный допуск, и журнал10(RelativeTolerance) количество правильных цифр.

Алгоритм

При каждой симуляции продвигаются i, решатель оценивает локальную ошибку e в j состояния из симуляции. Решатель уменьшает размер временного шага i пока ошибка состояния не удовлетворяет:

|e(i,j)|max (RelativeTolerance|y(i,j)|,AbsoluteTolerance(i,j))

Таким образом в значениях состояния большей величины, точность определяется RelativeTolerance. Как нуль подхода значений состояния, точностью управляет AbsoluteTolerance.

Верный выбор значений для RelativeTolerance и AbsoluteTolerance варьируется в зависимости от проблемы. Значения по умолчанию могут работать на первые испытания симуляции. Когда вы настраиваете допуски, полагаете, что существуют компромиссы между скоростью и точностью:

  • Если симуляция занимает слишком много времени, можно увеличиться (или ослабиться), значения RelativeTolerance и AbsoluteTolerance за счет некоторой точности.

  • Если результаты кажутся неточными, можно уменьшиться (или напрячься), относительные значения допуска путем деления с 10 Н, где N является действительным положительным числом. Но это имеет тенденцию замедлять решатель.

  • Если величина значений состояния высока, можно уменьшить относительный допуск, чтобы получить более точные результаты.

Абсолютное масштабирование допуска

Как SimBiology использует AbsoluteTolerance определить ошибку зависит от ли AbsoluteToleranceScaling свойство включено. По умолчанию, AbsoluteToleranceScaling включен, что означает, что каждое состояние имеет свой собственный абсолютный допуск, который может увеличиться в течение симуляции:

AbsoluteTolerance(i,j)=CSAbsTol*Scale(i,j)

CSAbsTol AbsoluteTolerance свойство задано в SolverOptions из активного объекта конфигурации модели.

Для состояния, которое имеет ненулевое начальное значение, шкала является максимальной величиной по состоянию, как замечено по симуляции к настоящему времени:

Scale(i,j)=max (|y(1:i,j)|)

Для состояния, которое имеет начальное значение нуля, шкала оценивается как значение состояния после делания испытательного шага размера AbsoluteToleranceStepSize использование Метода Эйлера. Давайте вызовем это значение ye(j)затем:

Scale(i,j)=max (|[ye(j);y(2:i,j)]|)

Если начальное состояние является нулем и имеет не динамический во время = 0, то:

AbsoluteTolerance(i,j)=CSAbsTol

Дозы, события и первоначальные правила присвоения во времени симуляции = 0 не рассматриваются при вычислении абсолютного масштабирования допуска.

Похожие темы