2012-01-22 6 views
8

Я пытаюсь понять следующие определения Matlab для параметров RelTol и ABSTOL:Относительные и абсолютные определения толерантности в Matlab решатель

RelTol — This tolerance is a measure of the error relative to the size of each 
solution component. Roughly, it controls the number of correct digits in all 
solution components, except those smaller than thresholds AbsTol(i).The default, 
1e-3, corresponds to 0.1% accuracy. 

AbsTol — AbsTol(i) is a threshold below which the value of the ith solution 
component is unimportant. The absolute error tolerances determine the accuracy 
when the solution approaches zero.

Я не понимаю, почему ABSTOL определяет точность, когда решение стремится к нулю (на самом деле, если решение моей проблемы является круговой орбитой с радиусом 7000 км, это не соответствует ей) и почему RelTol контролирует количество правильных цифр во всех компонентах решения, за исключением тех, которые меньше пороговых значений AbsTol (i). Каковы фактические выражения для определения каждого допущения? Я хотел бы получить более простые и понятные определения.

ответ

7

Когда вы выполняете оптимизацию, вам нужно решить, когда остановиться. Один из способов проверить, достаточно ли ваше решение, - проверить, продолжает ли решение существенно меняться. Существует два способа измерения изменения решения: относительное изменение (т. Е. Изменение%) или абсолютное изменение.

Это имеет смысл проверить относительное изменение, так как изменение 5 означает что-то совсем другое, когда решение около 1, чем когда оно составляет около 100000. Таким образом, процедура оптимизации проверяет на каждой итерации i, независимо от того, abs(1-x(i)/x(i-1))<relTol, то есть с какой фракцией новое решение изменилось со времени последней итерации. Обратите внимание: x может быть массивом решений, если вы одновременно оптимизируете несколько параметров (таким образом, решение имеет «несколько компонентов»). Конечно, вы хотите, чтобы условие выполнялось для всех «компонентов решения», прежде чем прекратить оптимизацию.

Относительная погрешность, однако, становится проблематичной, когда решение вокруг нуля, так как x/0 не определено. Таким образом, имеет смысл также взглянуть на абсолютное изменение стоимости и прекратить оптимизацию, когда abs(x(i)-x(i-1))<absTol. Если вы выбираете absTol небольшой достаточно, это будет только relTol, что рассчитывает на большие решения, в то время как absTol только становится актуальным, если решение приходит лежать около 0.

Поскольку решатель останавливается, когда любой из двух критериев выполняется, как близко вы попадаете в (локально) оптимальное решение, определяется absTol или relTol. Например, если relTol составляет 10%, вы не сможете приблизиться ближе к 10% к оптимальному решению, если ваше решение не будет около нуля, и в этом случае критерий absTol (скажем, 0,0001) выполняется до критерия relTol.

+0

Благодарим вас за ответ. У меня все еще есть некоторые сомнения: почему RelTol контролирует количество правильных цифр в решении? Если какая-либо из компонентов решения меньше AbsTol, как я могу контролировать это количество правильных цифр? – julian

 Смежные вопросы

  • Нет связанных вопросов^_^