- 締切済み
BASICでの解法
f(x)=x^2-a (aは正数とする)として、二分法によって方程式f(x)=0の 近似解を小数点以下4桁まで正しく求めるプログラムを作成せよ。 プログラムの勉強をはじめたところで簡単なプログラムは、読めるようになってきたのですが、書けと言われると・・・。 どのように進めていけばよいのでしょうか? 言語のページで質問しようと思ったのですが、BASICがなかったもので数学のページで質問させて頂きました。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mis_take
- ベストアンサー率35% (27/76)
ANo.1 さん,ケアレスミスがあります。 (1) r=(p+q)/2 を計算する。 (2) もし、f(r)>0 だったら、p を r で置き換える。新しい p で f(p)>0, f(q)<0 が成立していることに注意しましょう。 (3) もし、f(r)<0 だったら、q を r で置き換える。新しい q で f(p)>0, f(q)<0 が成立していることに注意しましょう。 (4) |p-q|<0.0001 になったらおしまい(x=(p+q)/2 ,小数点4桁まで求めてある)。そうでなければ (1) へ戻る。 この部分が主要部で,WHILE~END WHILE ループになります。 この前に,p,q を決めないといけませんが, p=0 でいいですね。 q は q^2>a となる数なので,a<1 のときは q=1 それ以外は q=a とします。 これは IF 文です。
- tatsumi01
- ベストアンサー率30% (976/3185)
プログラムが書けないというのは2種類あります。 (1) 問題を解く手法(アルゴリズム)が分からない (2) アルゴリズムは十分理解しているが、実プログラムに展開できない 「簡単なプログラムは読める」というレベルなら (2) ではないでしょう。プログラムの筋道は思い浮かび、文法エラーや意味エラーはあるにしてもプログラムらしきものは書けるはずです。 したがって、失礼ながら二分法がよく理解できていないのかな、と思います。 (0) p, q を適当に取る。ただし、f(p)>0, f(q)<0 となるように選ぶ。 実際には f(p)<0, f(q)>0 となる場合も考えないといけないのですが、とりあえず基本ができるまでは後回しにします。 基本アルゴリズム (1) r=f((p+q)/2) を計算する。 (2) もし、r>0 だったら、p を r で置き換える。新しい p で f(p)>0, f(q)<0 が成立していることに注意しましょう。 (3) もし、r<0 だったら、q を r で置き換える。新しい q で f(p)>0, f(q)<0 が成立していることに注意しましょう。 (4) もし |p-q|<0.0001 だったらおしまい(小数点4桁まで求めてある)。そうでなければ (1) へ行く。 実際には上記のアルゴリズムにはいくつかの穴があり、動くプログラムにするには修正が必要です。