2分法の数値計算例(C言語)

2分法を行って方程式の解を求める

2分法を行う前に、求めたい方程式の解のある程度の予測が必要である。プログラムで処理させる事も可能だが、ここでは、地道にグラフィック系ソフト等を使って方程式の関数を描き、求めた方程式の解のだいたいの範囲を求める事にする。

今回は方程式 xsin(x)+log(x)=0 を解くとする。この方程式の左辺を関数 f(x) とおき曲線を描く。Gnuplot で描くと以下の図のようになる。



この図は、x軸の範囲を0から5にして拡大表示している。ここでは最も値が小さい解を求めよう。この解は約0.5から1.0の間にあると図からわかる。

解の値の存在範囲がわかったら、後はプログラムにまかせて、正確な解を求めさせる。ソースコードはC言語で書かれているが、nibunhou.cをダウンロードし、適切なソフトを使えば見られる。

数値計算実行結果

この2分法のプログラムを実行すると、解の予想範囲の入力を求められる。求めたい解に応じて2つの値を入力すれば、解が求まる。また、解が求まるまでにかかった計算回数も表示される。今回の例では、方程式 xsin(x)+log(x)=0 を解く事であったが、0.5 から 1.0 の間にある解を求めると、以下のようになる。
範囲の左の値を入力してください.
0.5
範囲の右の値を入力してください.
1.0
解の値は 0.664101
収束するのに 16 回かかりました.