• ベストアンサー

数値微分法についてです。

数値的に微分を評価する時に、中心差分を使っているのですが、 どう考えても数値誤差としか思えない結果しかでません。 区切り幅は誤差が最も小さくなるように選んでいます。 中心差分よりも精度の良い数値微分法があれば教えていただけないでしょうか。 評価する関数は解析的に与えられておらず、補間して得られるようなものです。 (補間の精度にもよるのだと思いますが・・・)

質問者が選んだベストアンサー

  • ベストアンサー
  • tomtom_
  • ベストアンサー率39% (43/110)
回答No.2

中心差分の誤差は,刻み幅(区切り幅?)をhとしてO(h^2)です.前進差分や後退差分はO(h)です.これらの公式をテイラー展開で導くのと同じ方法で高次の微分公式は得られますが,普通はリチャードソン補外やエイトキン加速というものが使われます. これは,hで微分を計算し,次にh/2で微分を計算し,その二つの値を使ってより高精度な値を計算するというものです.数値微分の誤差と精度については,ぜひ「数値計算の常識」という本を探してみて下さい.

0123456789A
質問者

お礼

ご回答ありがとうございました。 数値計算についてはライブラリを使う程度の知識しかなかったので、 これを機に勉強してみます。

その他の回答 (1)

回答No.1

数値計算ではライブラリーを使うことが多いのであまり深いところは分りません。間違いがあればどなたか訂正してください。 数値的に微分を取ってるという事ですが、 (f(x+Δ)-f(x))/Δ と (f(x)-f(x-Δ))/Δ の二つをとって二つが欲しい精度で一致するまで自動的にΔを小さくするようにプログラムを組むとよいのではないでしょうか。値が与えられてない点での微分は、その前後の点での微分の値にはさみうちされているはずですから、やはり適当間隔を小さくすれば良いのだと思います。 連続点の情報を与えていない限り補完したからといって真の関数が分るはずはないと思います。そもそも与えられた点でのf(x)のデーターを使って補完をしたからといって元のデーター以上の情報が得られるのはおかしい気がしますし。補完事態事態、微係数の情報を必要としている可能性もあります、またはある程度の条件を仮定して補完しているはずです。 つまり、あまり精度の良い結果が得られないというのは何か他に原因があるのではないですか? プログラムを組んだら答えが分っている滑らかな関数から点をとってテストランしましたか? ある程度のチェックがおわって、問題の関数に使ってうまくいかないなら、その関数事態あまり滑らかじゃないかもしれないと疑ってみるべきかもしれません。  参考文献としてはnumerical recipe に大抵のプログラムはあると思います。

参考URL:
http://www.library.cornell.edu/nr/bookfpdf/f5-7.pdf
0123456789A
質問者

お礼

ご回答ありがとうございました。 >補完をしたからといって元のデーター以上の情報が得られるのはおかしい気がしますし なるほど!確かに仰る通りですね。 微分の問題ではないような気がしてきました。 NRのほうも参考にさせていただきます。m(_ _)m