まずサンプル・プログラム bisection.c を示す。 ブラウザーで読み込み、 [ファイル] メニューから [名前をつけて保存] を選び、保存すること。
コンパイルと実行 |
a308-01% gcc -o bisection bisection.c
a308-01% ./bisection 探す区間の左端, 右端, 要求精度: 0 1 1e-15 ... (実行結果は実際に見てもらうことにします) |
計算の原理は中間値の定理「連続な関数 が、 を満たせば、 に解が少なくとも一つ存在する」 とその区間縮小法による証明 (付録に書いておいた) に基づく。
に解が存在するならば、 二つに分割した区間 , のどちらかに 存在する (両方に存在することもある) が、どちらであるか判断できれば、 繰り返すことで区間の幅を半分半分にしていけて、 解を追い詰めることができる。
なお、上の計算では要求精度 (区間の幅がどこまで小さくなったら反復を停止するか) を (意味は という意味) としたが、 これは演習に用いている C 言語処理系の double の精度が 10 進法に 換算して 16 桁弱であることから決めたものである。
(詳しいことはこの文書の付録を参照せよ。)