役立つ背景理論
数値導関数が正しく計算されているかどうかを理解するために使用できる1つの小さな事実は、テイラー展開のコーシー剰余です。あれは、
ξ∈[X、X+H]f(x + h )= f(x )+ h f』(x )+ h22f」(ξ)ξ∈ [ x 、x + h ]
これは便利です。おそらく、1次導関数を次のように近似しているからです。
f』(X )≈ F(x + h )− f(x − h )2 時間
少し(通常は使用しますが、いつかそれが適切でない場合に出くわすと確信しています)。10 − 4h10− 4
少し代数の後、コーシーの剰余を使用して、数値近似が理論的にのます。F '(X )h f」(ξ)、ξ∈ [ x − h 、x + h ]f』(x )
実際、実際にはでバインドできます。ここで、および ...これは、と同等です。ξ 1 ∈ [ X - H 、X ] ξ 2 ∈ [ X 、X + H ] H 2 F ‴(ξ )ξ ∈ [ X - H 、x + h ]h (f」(ξ1)− f」(ξ2))ξ1∈ [ x − h 、x ]ξ2∈ [ x 、x + h ]h2f「」(ξ)ξ∈ [ x − h 、x + h ]
実際の問題
さて、数値微分の誤差を制限する素晴らしい理論があります。しかし、これらの結果を直接使用しようとすると、2つの穴があります。
1.)私たちは知りません(そして、それを概算するのに時間をかけたくないでしょう)f「」(x )
2.)として、は数値の不安定性の影響を受けますf (x + h )− f (x − h )h → 0f(x + h )− f(x − h )2 時間
したがって、分析導関数をチェックする方法(これが最善の方法ではない可能性があります)を以前から知っていることを使用して、数値導関数を関数として記述します。数値導関数と分析導関数の違いがコーディングの間違いによるものなのか、数値近似によるものなのかわからない場合は、を減らして、数値不安定性が発生する前に数値導関数が分析導関数に近づくかどうかを確認できます(これが発生した場合、あなたの数値近似はなります以下のように一貫性のある小さくなります)。ことを注意項は二次的に消えてしなければならないので、私の誤差はおよそであればとh h f ‴(ξ )0.01 h = 10 − 4 0.0001 h = 10 − 5hhhf′′′(ξ)0.01h=10−4、それが周りにあるべきであると数値不安定性を仮定がまだで蹴られていません。0.0001h=10−5
残念ながら、これらのことを常に判断するための厳格で迅速なガイドラインはありません。それは、関数がどれほど安定しているかに非常に依存します(そして、数値の安定性と高次導関数の両方の観点から意味します)。しかし、私の経験では、からのエラーが確実に0にならない(つまり、を使用すると、実質的に)からの数値の不安定性が始まるまでに。h = 10 − 4 h = 10 − 5 h → 0h2f′′′(ξ)h=10−4h=10−5h→0