2012-01-22 26 views
8

Próbuję zrozumieć następujące definicje Matlab dla parametrów RelTol i AbsTol:względne i bezwzględne definicje tolerancji w Matlab solver

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.

Nie rozumiem dlaczego AbsTol określa dokładność, gdy rozwiązanie zbliża się do zera (w istocie, jeśli rozwiązaniem mojego problemu jest okrągła orbita o promieniu 7000 km, to go nie spełnia) i dlaczego RelTol kontroluje liczbę poprawnych cyfr we wszystkich komponentach rozwiązania, z wyjątkiem tych mniejszych od progów AbsTol (i). Jakie są rzeczywiste wyrażenia do określenia każdej tolerancji? Chciałbym uzyskać prostsze i zrozumiałe definicje.

Odpowiedz

7

Po przeprowadzeniu optymalizacji należy zdecydować, kiedy zatrzymać. Jednym ze sposobów sprawdzenia, czy twoje rozwiązanie jest wystarczająco dobre, jest sprawdzenie, czy rozwiązanie wciąż znacząco się zmienia. Istnieją dwa sposoby mierzenia stopnia zmiany rozwiązania: zmiana względna (tj. Zmiana%) lub zmiana bezwzględna.

Sensowne jest sprawdzenie względnej zmiany, ponieważ zmiana 5 oznacza coś bardzo odmiennego, gdy rozwiązanie jest równe 1, niż gdy wynosi około 100000. W ten sposób procedura optymalizacji sprawdza przy każdej iteracji i czy abs(1-x(i)/x(i-1))<relTol, czyli od jakiego ułamka zmieniło się nowe rozwiązanie od ostatniej iteracji. Zauważ, że x może być szeroką gamą rozwiązań, jeśli optymalizujesz wiele parametrów w tym samym czasie (rozwiązanie ma więc "wiele komponentów"). Oczywiście, chcesz, aby warunek został spełniony dla wszystkich "komponentów rozwiązania", zanim przestaniesz dalej optymalizować.

Względna tolerancja staje się jednak problematyczna, gdy rozwiązanie jest bliskie zeru, ponieważ x/0 jest niezdefiniowane. Dlatego warto przyjrzeć się absolutnej zmianie wartości i wyjść z optymalizacji, gdy abs(x(i)-x(i-1))<absTol. Jeśli zdecydujesz absTol wystarczająco małe, to będzie tylko relTol że liczy się dla dużych rozwiązań, natomiast absTol tylko staje się istotne, jeśli chodzi o rozwiązanie leżą wokół 0.

Ponieważ solver zatrzymuje się, gdy jeden z dwóch kryterium jest spełnione, jak zakończenie dostępu do (lokalnego) optymalnego rozwiązania jest określane przez absTol lub relTol. Na przykład, jeśli relTol wynosi 10%, nigdy nie dojdziesz bliżej niż 10% do optymalnego rozwiązania, chyba że rozwiązanie jest bliskie zeru, w którym to przypadku kryterium absTol (z, powiedzmy, 0.0001) jest spełnione przed kryterium relTol.

+0

Dziękuję za odpowiedź. Nadal mam pewne wątpliwości: dlaczego RelTol kontroluje liczbę poprawnych cyfr w roztworze? Jeśli któryś ze składników rozwiązania jest mniejszy niż AbsTol, w jaki sposób mogę kontrolować tę liczbę poprawnych cyfr? – julian

Powiązane problemy