Определения относительной и абсолютной толерантности в решателе Matlab

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

RelTol - этот допуск является мерой погрешности относительно размера каждого
компонент решения. Грубо говоря, он контролирует количество правильных цифр во всех 
компоненты решения, кроме тех, которые меньше порогов AbsTol(i). По умолчанию,
1e-3, соответствует точности 0,1%.

AbsTol - AbsTol (i) - это порог, ниже которого значение i-го решения 
компонент не важен. Абсолютные погрешности определяют точность 
когда решение приближается к нулю.

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

1 ответ

Решение

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

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

Другие вопросы по тегам