これは上級者向の選択課題で,無理にプログラムを作成しなくても良い.もし,このプロ
グラムができたならば,他の課題は実施しなくても良い.これだけできれば十分である.
ここでは,コンピューターを用いた方程式の解をもとめるプログラムを作成する.二分法
と言う方法を示す.このプログラムが作れるようになると,コンピューターは便利なもの
であると分かるだろう.
まずは,単純な方程式を考えよう.次の3次方程式
の解を求めることを考える.
一般に,方程式は次の形に書き表すことができる.
この方程式の解
をコンピューターで求める.もし,方程式の右辺がゼロでない場合は,
左辺へ移項して式(
2)の形にできる.方程式
(
2)を解くことは,関数
の値がゼロになる
の値を捜す--
と言い換えることができる.実際コンピューターを使った数値計算では,
の値がゼ
ロとなる
を捜すことになる.コンピューターでは,関数
がx軸と交わる点,
即ち
を反復(ループ)計算を用いて捜す.この点
を捜す方法には,いくつかあ
るが,ここでは最も単純な二分法を示す.
解くべき方程式(1)をグラフにすると,図
2のようになる.もちろん,グラフにした関数は,
|
(3) |
である.
軸との交点の値は,
である.これが,元の
方程式(
1)の解になっている.
図 2:
の関数.x軸との交点が解である.
|
二分法の原理は非常に単純であるが,場合によっては非常に強力な方法である.これ
は,区間
で連続な関数
の値が,
ならば,
となる
があるということを使う.
実際の数値計算は,
であるような2点
から出発する.
そして,区間を2分する点に対して,を計算を行う.
ならばをと置き換え,
ならばをと置き換
える.絶えず,区間の間に解があるようにするのである.この操作を繰り返して,
区間の幅が与えられた値
2よりも小さくなったならば,計算を終了する.例えば,
を
とすると,その精度で計算できる.
実際にこの方法で式(1)を計算した結果を図
3に示す.この図より,との関係の式
(4)を満たす区間が1/2ずつ縮小していく様子がわかる.
計算の終了は,
|
(5) |
の条件を満たした場合とするのが一般的である.ここで,
は解の精度
である.これを変えることにより,任意の精度で近似解を求めることができる.
図 3:
の実数解を二分法で解散し,その解の収束の
様子を示している.初期値は
として,最初の解が求
まり,順次より精度の良い
が求まる.それが,解析解
(x軸との交点)に収束していく様子が分かる.
|
図
4のような二分法のフローチャートの通りにすれば,目的の
動作をするプログラムができる.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成18年7月19日