我正在尝试理解RelTol和AbsTol参数的以下Matlab定义:
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
才适用于大型解决方案,而只有当解决方案位于0附近时,absTol
才具有相关性。
由于解算器在满足这两个标准中的任何一个时都会停止,因此您离(局部)最优解的距离由absTol
或relTol
决定。例如,如果relTol
是10%,那么你永远不会接近最优解的10%,除非你的解大约为零,在这种情况下,在relTol
标准之前满足absTol
标准(比如0.0001)。