2011年4月8日金曜日

はさみうち法による平方根の解法

はさみうち法は、レギュラ・ファルシ (regula falsi) 法とも言います。
例題では、はさみうち法と2分法により平方根を求めています。

はさみうち法と2分法は、連続関数 f(x) と区間 a < = x < = b が与えられたとき、その区間で方程式 f(x)=0 の解を探す方法の一つです。

両端での関数値 f(a),f(b) は異符号でなければなりません。
2点 ([a,f(a)],[b,f(b)]) を直線で結び、それが x 軸と交わる点 c を求める形になります。
その点での関数値 f(c) が f(a) と同符号なら、解は c < x < b にあり f(c) が f(b) と同符号なら解は a < x < c にあります。
このようにして解の存在範囲を狭めることを繰り返します。
しかし、必ずしも2分法より早いとは限りません。
また、区間の両端での関数値の絶対値に大差があると、補間点 c が区間の端点に一致してしまいます。
このような場合は、c を強制的に極わずか (隣の不動小数点数まで) 移動します。

プログラムの tolerance は解の許容誤差(計算機イプシロンを利用)、戻り値は f(x)=0 の解、imax 回繰り返しても収束しないなら 2分法に切り換えます。
(imax=0 で呼び出せば最初から2分法になります。)

Newton 法 による解法に比べ、計算回数が多くなっていることは分かると思います。


実行結果

0 件のコメント:

コメントを投稿