我试图理解以下 Matlab 对 RelTol 和 AbsTol 参数的定义:
RelTol — 此容差是相对于每个尺寸的误差的度量 解决方案组件。粗略地说,它控制了所有正确数字的数量。 解决方案分量,除了那些小于阈值 AbsTol(i) 的分量。默认值, 1e-3,对应0.1%的精度。 AbsTol — AbsTol(i) 是一个阈值,低于该阈值时第 i 个解的值 组件并不重要。绝对误差容限决定精度 当解接近零时。
我不明白为什么 AbsTol 在解接近零时确定精度(事实上,如果我的问题的解是半径 7000 公里的圆形轨道,这不满足它)以及为什么 RelTol 控制所有解中正确数字的数量组件,除了那些小于阈值 AbsTol(i) 的组件。确定每个容差的实际表达式是什么?我想要更简单易懂的定义。
当您执行优化时,您需要决定何时停止。检查您的解决方案是否足够好的一种方法是检查该解决方案是否仍在发生显着变化。有两种方法可以衡量解决方案的变化量:相对变化(即变化百分比)或绝对变化。
检查相对变化非常有意义,因为当解在 1 左右时,5 的变化意味着与解在 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
标准。