2012-01-22 21 views
8

我想了解以下Matlab的定義,RELTOL和AbsTol參數:相對和絕對容差定義求解

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)的那些。什麼是確定每個容差的實際表達式?我想得到更簡單易懂的定義。

回答

7

當您執行優化時,您需要決定何時停止。檢查解決方案是否足夠好的一種方法是檢查解決方案是否仍然顯着改變。有兩種方法可以衡量解決方案的變化:相對變化(即變化百分比)或絕對變化。

檢查相對變化是很有意義的,因爲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附近

由於滿足或者兩個條件時求解器停止,怎麼關閉你達到(本地)最佳解決方案由absTolrelTol確定。例如,如果relTol爲10%,則除非您的解決方案在零附近,否則在relTol標準之前滿足標準(即,0.0001),否則絕不會比最優解更接近10%。

+0

謝謝你的回答。我仍然有一些疑問:爲什麼RelTol控制解決方案中的正確數字的數量?如果任何解決方案組件小於AbsTol,我如何控制該數字的正確數字? – julian