C/C++の宿題を片付けます 54代目
■ このスレッドは過去ログ倉庫に格納されています
0147名無し
2005/12/02(金) 20:52:21[2] 問題文:
<入力>三次方程式f(x)=Ax**3+Bx**2+Cx+D=0の係数4字組み[A,B,C,D]と指定した三次式においてf(a)f(b)が負となる区間[a,b]
<操作>二分探索法で解が存在することが保証された区間を半分にし、区間の幅が10のマイナス6乗より小さくなったら解とする。
<出力>与えられた三次方程式の区間[a,b]に於ける解の近似値。
<説明>連続関数f(x)の方程式f(x)=0を解く。f(a)f(b),(a<b)が負であることが前もってわかっていると仮定すると区間[a,b]に解が少なくとも一つ存在する。
区間[a,b]を二つの区間[a,(a+b)/2]と区間[(a+b)/2,b]に分ける。仮定からf(a)とf(b)の符号(+か-)は異なる(掛けると負より)。
f((a+b)/2)の符号とf(a)かf(b)の符号のどちらかは異なる。符合の異なる方の区間の中に少なくとも一つ解が存在する。このようにして二分探索法を使って区間を小さくしてゆく。
中間点が偶然0になればその値が解、また区間の幅が10のマイナス6乗より小さくなれば、その区間の中の点の値に対してその最下位の桁を四捨五入して解とする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2005年12月7日9:00まで]
[5] その他の制限:特になかったです。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています