12

我试图了解 RelTol 和 AbsTol 参数的以下 Matlab 定义:

RelTol - 这个容差是相对于每个尺寸的误差的度量
解决方案组件。粗略地说,它控制了所有正确数字的数量
解决方案组件,除了那些小于阈值 AbsTol(i) 的组件。默认值,
1e-3,对应于 0.1% 的准确度。

AbsTol — AbsTol(i) 是一个阈值,低于该阈值的第 i 个解决方案的值
组件不重要。绝对误差容限决定精度
当解接近零时。

我不明白为什么 AbsTol 在解决方案接近零时确定精度(实际上,如果我的问题的解决方案是半径为 7000 公里的圆形轨道,这不符合它)以及为什么 RelTol 控制所有解决方案组件中正确数字的数量,但小于阈值 AbsTol(i) 的除外。确定每个公差的实际表达式是什么?我想得到更简单易懂的定义。

4

1 回答 1

14

当您执行优化时,您需要决定何时停止。检查您的解决方案是否足够好的一种方法是检查解决方案是否仍在显着变化。有两种方法可以衡量解决方案的变化程度:相对变化(即百分比变化)或绝对变化。

检查相对变化很有意义,因为当解在 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标准(例如,0.0001)在标准之前得到满足relTol

于 2012-01-23T04:58:47.650 回答