• ベストアンサー

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

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

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

  • ベストアンサー
  • 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

関連するQ&A

  • 数値解析の手法(差分法)について

    現在、とある2元の1階偏微分方程式(解はu,vでそれぞれ右と左に進行する波)を数値解析によって解こうと考えています。 数値解析の手段として、差分法がよく用いられると思いますが、 現在、私は、場所に関してはuは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って解いています。 ネットでは場所に関しては中心差分、時間に関してはルンゲ=クッタやリープフロッグなどが 使われていることが多く、私もこの2つを用いて解いてみました。 偏微分方程式には線形項が含まれていたため、 線形問題に対する制約であるΔt/Δx << 1は最低満たすように刻み幅をいろいろ取り、 計算時間も辞さず計算機を動かしてみましたが、 ノイズが消えず、解析解に限りなく近づくには至りませんでした。。 Δt/Δx=0.0001なども試したのですが・・・ そこで、諦めて違う差分法を試し、 場所に関して、uは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って見たところ、 Δt/Δx=0.01程度で解析解に近い、なかなか精度の良い数値解を得ることが出来ました。 2次の差分では上手くいかず、1次の差分だとわりかし上手くいく・・・ 精度的には中心差分やルンゲ=クッタなどの方がいいと思うのですが・・ 正直不思議でなりませんでした。。。 最初に試した差分法のコードミスかと思い、何回もコードを確認し直しましたが、 やはり解析解に近づくには至りませんでした。 こんなことってあるのでしょうか?? 差分法でも場合によって使い分ける必要があるということでしょうか・・? その場合分けするときの指標など、知っておられる方、教えて頂けると助かります。 問題によって

  • 数値解析 微分方程式

    数値解析における常微分方程式を解くために用いる手法についてです。 オイラー公式、ホルン公式、ルンゲクッタ、ルンゲクッタ4次、有限差分法の関係 違いがよくわからなのでどなたか教えてください また常微分方程式を有限差分で解くとなったとき、結局オイラー公式などを使うと言う認識で間違いないでしょうか?それとも有限差分だけで解けるのでしょうか

  • 偏微分方程式の数値解法

    ラプラス方程式の境界値問題を、javaで作ったプログラムを用いて有限差分法で解きました。 真値との誤差も少なく、おそらくプログラムに間違いはないと思います。 しかし、分割幅を小さくした時に、同じ格子点同士だったら真値との誤差は小さくなるはずなのに、分割幅を5→10→20→40と変えていった時に、何故か20と40では40の方が誤差が広がってしまいます。 分割幅が小さいほうが誤差が大きくなる時があるのでしょうか?

  • 差分法とオイラー法の違いについて

    最近微分方程式の数値解析について学びだした者です。 微分方程式の数値解法として差分法とオイラー法があると思うのですが、この2つの違いや互いの位置づけはどうなっているのでしょうか? また、差分法には風上法などがありますが、これらとオイラー法の位置づけについても教えていただきたいです。 できればこれら近辺の全体的な体系について教えていただけるとうれしいです。よろしくお願いします。

  • 数値積分の誤差の問題

    数値解析は初心者です。 惑星の運動を調べるために(3つの星です)、 微分方程式を数値的に解こうとしています。 エネルギーが保存する系では、 シンプレクティック法というもの方が良いと 教えてもらいいろいろな人のものを参考にして 使っています。 問題点は、シンプレクティック法の結果は、 ルンゲクッタよりエネルギーの保存の 精度はいいのですが 1~10万ステップくらいの挙動が 計算するコンピューターで違うことが 分かりました。誤差が出ているのだと思います。 ルンゲクッタは保存は悪い代わりに 10万ステップくらいまでマシンに依存した 結果はでません。 エネルギーは高い精度で保存しているので バグではないと思います。 シンプレクティック法は6次と8次を使っています。 どなたかシンプレクティック法を使って 不安定な系を扱っている方で シンプレクティック法の精度を上げる方法を ご存知の方がいらっしゃったらお教えください。

  • 差分積分、数値積分の誤差について

    学校でプログラミングの授業を受けています。 プログラミングといっても情報処理系の学科ではないため、基本的なことばかりなのですが その授業中に聞いたことでよくわからなかったことがあります。 走り書きでメモしたので正しいかはわかりませんが 差分積分と数値積分の誤差についての内容だったと思います。 差分積分って言葉自体あまり馴染みが無いのですが、差分近似と考えていいのでしょうか? 差分近似ですと前進差分、後退差分、中心差分によって生じる誤差の違い、 数値積分に関しては区分求積法、台形公式法などの誤差の違いのことを言っているのでしょうか? 差分近似によって生じる誤差の違い、数値積分によって生じる誤差の違いについて どなたか説明して頂けないでしょうか?簡単なもので全然構いません。 よろしくお願いいたします。

  • 常微分方程式の数値解法

    二重指数関数型数値積分の誤差は,区間分割数の指数関数で減少することが知られています. では,誤差が区間分割数の(準)指数関数的に減少するような,常微分方程式の数値解法は知られているでしょうか?

  • 微分の問題です、助けてください。

    参考書に、答えが[略]になっていて困っています。 問題は、 「x=at^4 に対して、3つの差分の違いを調べて見なさい。 (1)前進差分を求めなさい。 (2)中心差分を求めなさい。 (3)後進差分を求めなさい。 (4)Δt→0 では、3つの差分はどれも等しく、微分dx(t)/dt に収束することを見なさい。 (5)0<Δ≪1のとき、微分からの誤差がもっとも小さいのはどの差分であるか。」 という問題でした。答えを教えてください! 私は、数学が苦手で、答えだけを見てもわからないことが多々あるので、できれば、式の過程や、説明を教えてくれるととても助かります。 よろしくお願いします。

  • 数値計算法

    数値計算法の問題です 次の関数を差分せよ 2*(3)^x + 4 * (5)^x 回答の過程を知りたいです お願いします

  • 偏微分方程式の数値解法

    偏微分方程式の込み入った質問です。 2次元(x,y)の空間で2つの関数f(x,y),g(x,y)を考えます。 そこで、それぞれにラプラス方程式を立てました。 fxx+fyy = 0  (1) gxx+gyy = 0 (2) です。これは境界値問題で、差分式からSOR法を使って収束計算によって数値解を求めることができます。f, gはそれぞれ独立という形にはなります。 そこにもう1つ式が出てきました。 fxfy + gxgy = 0 (3) というものです。f,gをx,yで1回微分してできる式です。 都合3つの式が出てきました。 この数値解を求めるにはどのような方法があるでしょうか。 数値解ですから近似解です。 3つ目の拘束条件の下でのラプラス方程式とみると、ペナルティ関数とかラグランジュの未定係数法とかいろいろあるかもなと思いますが。 3つ目の式は完全に満たすというより、できるだけ満足するようにしたいというものです。 よろしくお願いします。