• 締切済み

BASICでの解法

f(x)=x^2-a (aは正数とする)として、二分法によって方程式f(x)=0の 近似解を小数点以下4桁まで正しく求めるプログラムを作成せよ。 プログラムの勉強をはじめたところで簡単なプログラムは、読めるようになってきたのですが、書けと言われると・・・。 どのように進めていけばよいのでしょうか? 言語のページで質問しようと思ったのですが、BASICがなかったもので数学のページで質問させて頂きました。

みんなの回答

  • mis_take
  • ベストアンサー率35% (27/76)
回答No.2

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)
回答No.1

プログラムが書けないというのは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) へ行く。 実際には上記のアルゴリズムにはいくつかの穴があり、動くプログラムにするには修正が必要です。

関連するQ&A

  • C言語のプログラムについて

    下記は、何言語かわからないです。 これをC言語にするにはどうすればよいでしょうか。 プログラムは、「ニュートン法を用いて、方程式x^3(xの3乗)-4=0の近似解を求めるプログラム。ただし、実数解と、近似解の誤差は、0.0001以下とする。ここで、この方程式の導関数は、3x^2(3*xの二乗)である。」 100 DEF F(X)=X*X*X-4 110 DEF G(X)=3*X*X 120 INPUT PROMPT "初期値":A 130 LET B=A-F(A)/G(A) 140 IF ABS(A-B)<=.0001 THEN 170 150 LET A=B 160 GOTO 130 170 PRINT "近似解";B 180 END 以上です。 ご回答よろしくお願いいたします。

  • 二分法の近似解について

    二分法の近似解について 問題の解釈に自信が持てません。 お手数をお掛けします 以下問題です。 ”f(x)=x^2-a (aは正数とする)として、二分法によって方程式f(x)=0の 近似解を小数点以下4桁まで正しく求めるプログラムを作成せよ。” というものですが、これはaの平方根を小数点以下四桁まで求めろと解釈すればいいのですか? 主にプラス側とマイナス側からその差を0に収束するイメージがあります。 あと、aは何らかの数値を代入して良いものと解釈しました。 代入しないとアルゴリズムとして成立しませんよね? 以下コード(basic)です。 PRINT "f(x)=x^2-aのaを入力" INPUT a PRINT "区間の両端を入力" INPUT i INPUT j IF (i^2-a)*(j^2-a)<0 THEN DO WHILE ABS(i-j)>=0.00001 LET m=(i+j)/2 IF (i^2-a)*(m^2-a)<0 THEN LET j=m ELSE LET i=m END IF LOOP PRINT "f(x)=0の近似解はx=";i ELSE PRINT "両端の符号が同一です" END IF END

  • こんな三角方程式の解法 x+sin(x)-15=0

    こんな三角方程式の解法を教えて下さい。 x+sin(x)-15=0 ・・ xに仮の数値を入れて、実数近似値を得ることは、BASIC等を使ってできますが、すっきり一意的に解を得ることができる方法を教えて下さい。参考書を調べても同様のものが見られないので、意味のない方程式なのか、あまりにも初歩的なことなのかとも思いますが・・・

  • 【高次方程式の解法】

    実数を係数とする3次方程式x^3-√3x^2+3x+a=0の 異なる3つの解の実部がすべて等しい時、aの値は? 3次方程式の解と係数の関係が使えそうなんですが… 数学の得意な方、お願いします!

  • 偏微分方程式の数値解法

    偏微分方程式の込み入った質問です。 2次元(x,y)の空間で2つの関数f(x,y),g(x,y)を考えます。 そこで、それぞれにラプラス方程式を立てました。 fxx+fyy = 0  (1) gxx+gyy = 0 (2) です。これは境界値問題で、差分式からSOR法を使って収束計算によって数値解を求めることができます。f, gはそれぞれ独立という形にはなります。 そこにもう1つ式が出てきました。 fxfy + gxgy = 0 (3) というものです。f,gをx,yで1回微分してできる式です。 都合3つの式が出てきました。 この数値解を求めるにはどのような方法があるでしょうか。 数値解ですから近似解です。 3つ目の拘束条件の下でのラプラス方程式とみると、ペナルティ関数とかラグランジュの未定係数法とかいろいろあるかもなと思いますが。 3つ目の式は完全に満たすというより、できるだけ満足するようにしたいというものです。 よろしくお願いします。

  • 三次方程式の解法について

    三次方程式を解くプログラムを作成したいです。 三次方程式a*x3+b*x2+c*x+d=0を解くのに, カルダノの公式がありますが,解が全て実数解であるとしても, 計算過程で虚数が存在することを考えなければなりません。 しかし,a=1で解が実数解の場合, 計算過程で虚数を考えなくても,簡単に実数解を求める ことができる(エクセルで簡単に)と聞きました。 ニュートン法等の収束計算を用いる方法ではないようです。 このような方法をご存知でしたら,詳しく教えてください。 よろしくお願いいたします。

  • またまた数学の問題が解けません。解法を教えてください(>人<)

    またまた数学の問題が解けません。解法を教えてください(>人<) aを定数とする。xについての方程式cos^2x+2asinx-a-1=0の0<=(以上)x<2π(未満)における異なる実数解の個数を求めよ。 です。

  • オイラー法、2次ルンゲクッタ法、4次ルンゲクッタ法のC言語プログラムに

    オイラー法、2次ルンゲクッタ法、4次ルンゲクッタ法のC言語プログラムについて教えてください! 課題なのですが、まったくわからず困ってます>< 1 常微分方程式 dy/dx=f(x,y),y(0)=1 の数値解をオイラー法を用いて計算するプログラムを作為せよ。ただし、f(x,y)=3-6x^2-4x+2xyとする。 2 α=1,β=1,γ=1/2,σ=1/2 の場合の2次ルンゲクッタ法を考える。1と同じ常微分方程式(f(x,y)も同じ)を考え、その数値解を求めるプログラムを作成せよ。また、オイラー法と2次ルンゲクッタ法の実行結果を示して、2つの近似精度を比較せよ。 3 1と同じ常微分方程式(f(x,y)も同じ)を考え、その数値解を4次ルンゲクッタ法を使って求めるプログラムを作成せよ。また、オイラー法、2次ルンゲクッタ法、4次ルンゲクッタ法の実行結果を示して、3つの近似精度を比較せよ。 以上の3つです。 休んでいた自分が悪いのですが、ネットで調べてもよくわからなくて… わかる方、よろしくおねがいします…

  • 教科書でBasicが使われる理由

     高校の数学Bの教科書及び、中学時代の技術科の教科書を見ていて、ふと思いました。  プログラミングについて書かれたページがありますが、なぜそこで使われているのはBasicなのでしょうか?  個人的に、Basicは今はほとんど使われていない言語、というイメージがあります。(もしかしたら違うのかもしれませんが・・・違ったら以下は無視してやってください)  数学なら、Basicが数学的な説明をしたり、もしくはそういう問題を作るのに適している、などというようなこともあるのかもしれませんが、"技術"を教える科目で、今ほとんど使われていない言語を、何故教えるのでしょうか?  その辺の事情をご存知の方、いらっしゃいましたら、教えていただけないでしょうか。

  • 数値計算

    次の2つなのですが 1.ニュートン法により3次方程式 X^3+3X^2-3X-4=0 の実数解 2.2分法により、3次方程式 X^3-3X+1=0 の区(0,1)における解 解を小数点以下8桁まで正確に求めるにはどうすればいいのですか??