表記のために、(つまり、ベクトルを入力として受け取り、同じサイズのベクトルを出力するベクトル値関数)を想定します。懸念事項は2つあります。計算コストと数値精度です。f:Rn→ Rn
誘導体算出(ヤコビ行列をJ (X )、又は(∇ F (X ))T、または任意のお好み)有限差分を用いては必要としようとしているn個の機能評価を。定義から直接浮動小数点演算を使用して導関数を計算できる場合、差分商を計算する必要がありますD f(x )J(x )(∇ fは(x ))Tn
D f(x )e私= リムε → 0f(X + ε E私)− f(x )ε
それぞれについて、のスパースパターンあなたが知っている(または検出することができます)ので、あなたが(カーティス・パウエルレイドのような)「差分スマート有限」の任意の並べ替えをしないと仮定すると、Dの F。nが大きい場合、多くの関数の評価になる可能性があります。D fの分析式がある場合、それを計算する方が安くなる可能性があります。また、自動(アルゴリズムとしても知られている)微分法を使用して、関数評価のコストの約3〜5倍でD fを計算することもできます。i = 1 、… 、nD fnD fD f
数値的な懸念もあります。明らかに、コンピューターでは、ゼロになるスカラーの制限をとることができないため、を近似すると、εを実際に「小さい」ものとして計算します。D fε
D f(x )e私≈ F(X + ε E私)− f(x )ε、
ここで、は近似値であることを意味し、本当に良い近似値であることを願っています。あなたが選ぶ場合ので、浮動小数点演算では、この近似を計算することは難しいですε大きすぎる、あなたの近似が悪いかもしれないが、あなたが選ぶ場合はεが小さすぎ、大きな丸め誤差がある可能性があります。これらの効果は、表面的な詳細における数値微分に関するウィキペディアの記事で説明されています。より詳細なリファレンスは記事内で見つけることができます。≈εε
ヤコビ行列の誤差が大きすぎない場合、ニュートンラプソンの反復は収束します。詳細な理論解析については、Nick Highamによる精度と安定性の数値アルゴリズムの第25章、またはそれが基づいているFrançoiseTisseurの論文を参照してください。D f
通常、ライブラリはこれらのアルゴリズムの詳細を処理し、通常、Newton-Raphsonアルゴリズム(またはその変形)のライブラリ実装は非常にうまく収束しますが、多くの場合、欠点のために問題を引き起こす問題があります上記。スカラーの場合、その堅牢性と実際の良好な収束率のために、ブレントの方法を使用します。(n = 1 )