我试图理解 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) 的组件。确定每个公差的实际表达式是什么?我想要更简单易懂的定义。
最佳答案
执行优化时,您需要决定何时停止。检查您的解决方案是否足够好的一种方法是检查解决方案是否仍在发生重大变化。有两种方法可以衡量解决方案的变化程度:相对变化(即变化百分比)或绝对变化。
检查相对变化很有意义,因为当解在 1 左右时和在 100000 左右时,5 的变化意味着非常不同的东西。因此,优化例程在每次迭代时检查 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
在 relTol
之前满足标准(例如 0.0001)标准。
关于matlab - Matlab 求解器中的相对和绝对公差定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8961844/