Определения относительной и абсолютной толерантности в решателе Matlab - PullRequest
9 голосов
/ 22 января 2012

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

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).Каковы фактические выражения для определения каждого допуска?Я хотел бы получить более простые и понятные определения.

1 Ответ

8 голосов
/ 23 января 2012

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

Целесообразно проверять относительные изменения, поскольку изменение 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.

...