- 締切済み
C言語のプログラミング問題の回答をお願いします!
問題は、 2分法により2の平方根を計算して表示するプログラムを作れ。 解の存在範囲|XbーXa|が予め決めた値より小さくなったら 計算を停止(収束判定)するようにせよ。 【注意】 (1)f(Xa)とf(Xb)の符号が反対であるか否かの判定法を考えよ。 (2)f(Xa)、f(Xb)が共に同符号になるような Xa,Xb が入力された場合に対処すること。 という問題なのですが、2分法がよくわかりません。 この前Newton法をやって、それはなんとか理解できたんですが プログラミングにするのが難しくて・・・ できれば回答をお願いします。 問題わかりにくかったらごめんなさい。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hi_kurokun
- ベストアンサー率45% (20/44)
回答No.2
2分法にかんしてはまず http://next1.cc.it-hiroshima.ac.jp/MULTIMEDIA/numeanal1/node6.html の図2.1の右側の図を見てください f(a)値はマイナス、f(b)の値はプラスになっています。 この時、aとbの間に交点があります。 aとbの中点cを見るとf(c)はマイナスになります、 つまり、aとcの間には交点がなく、cとbの間には交点があります cの値をaにセットして、新しいaとbの中点cを求めます。 上の3行をaとbの間隔が十分小さくなるまで繰り返します 参考までに適当にプログラムを書いておきます(文法は間違っています) xa=1.0; xb=2.0 while(abs(xa-xb)<0.001) { xc=(xa+xb)/2.0; if(f(xa)*f(xc) <0.0) {xb=xc;} else {xa=xc;} } こんな形になるのでは?
noname#259269
回答No.1