Ze względu na notację załóżmy, że (tj. Jest to funkcja o wartości wektorowej, która przyjmuje wektor jako dane wejściowe i wyprowadza wektor tego samego rozmiaru). Istnieją dwie obawy: koszt obliczeniowy i dokładność liczbowa.f:Rn→Rn
Obliczanie pochodnej (macierzy jakobijskiej, J ( x ) lub ( ∇ f ( x ) ) T lub cokolwiek wolisz) przy użyciu różnic skończonych będzie wymagało n oceny funkcji. Jeśli możesz obliczyć pochodną za pomocą arytmetyki zmiennoprzecinkowej bezpośrednio z definicji, musisz obliczyć iloraz różnicyDf(x)J(x)(∇f(x))Tn
Df(x)ei=limε→0f(x+εei)−f(x)ε
dla każdego , zakładając, że nie robią żadnego rodzaju „inteligentne skończony różnicowych” (jak Curtis-Powell-Reid) bo wiesz (lub może wykryć) wzór sparsity z D f . Jeśli n jest duże, może to być wiele ocen funkcji. Jeśli masz wyrażenie analityczne D f , a następnie obliczenie to może być tańsze. Automatyczne (znany również jako algorytmiczne) metodami różnicowania może być także stosowana w pewnych przypadkach, aby obliczyć D f o około 3 do 5 razy koszt oceny funkcji.i=1,…,nDfnDfDf
Istnieją również obawy liczbowe. Oczywiście na komputerze, nie możemy podjąć limit skalara, ponieważ dąży do zera, więc kiedy przybliżona , jesteśmy naprawdę zbieranie ε być „małe” i obliczaniaDfε
Df(x)ei≈f(x+εei)−f(x)ε,
gdzie oznacza przybliżenie i mamy nadzieję, że jest to naprawdę dobre przybliżenie. Obliczanie tego przybliżenia w obliczeniach zmiennoprzecinkowych jest trudne, ponieważ jeśli wybierzesz ε za duże, twoje przybliżenie może być złe, ale jeśli wybierzesz ε za małe, może wystąpić znaczny błąd zaokrąglenia. Efekty te są omówione w artykule Wikipedii na temat numerycznego różnicowania w powierzchownych szczegółach; bardziej szczegółowe odniesienia można znaleźć w artykule.≈εε
Jeśli błąd w macierzy Jakubowej nie jest zbyt duży, iteracje Newtona-Raphsona zbiegną się. Szczegółowa analiza teoretyczna znajduje się w rozdziale 25 Dokładności i stabilności algorytmów numerycznych autorstwa Nicka Highama lub w pracy Françoise Tisseur, na której się opiera.Df
Biblioteki na ogół zajmują się tymi szczegółami algorytmicznymi i zwykle implementacje bibliotek algorytmu Newtona-Raphsona (lub jego wariantów) będą ładnie zbiegać się, ale od czasu do czasu pojawia się problem, który powoduje pewne problemy z powodu wad powyżej. W przypadku skalarnym zastosowałbym metodę Brenta , ze względu na jej solidność i dobry wskaźnik konwergencji w praktyce.(n=1)