dポイントプレゼントキャンペーン実施中!

これはニュートン法で√nを求めるプログラムですけど
このプログラムを一行ずつ説明してもいいですか?

DEF f(x)=x^2-a
DEF g(x)=2*x ! g(x)=f'(x)
PRINT "input"
INPUT a
LET x=a
LET E=EPS(1)*10 <----これは何?
DO
 LET x1=x-f(x)/g(x)
 PRINT x1
  IF ABS((x1-x)/x)<E THEN EXIT DO
 LET x=x1
LOOP
END

A 回答 (2件)

いいです。

どうぞ説明してください。
ただし、ここは数学カテですから、
http://oshiete.goo.ne.jp/category/257/ へでも
行ってやったほうがよいと思います。

EPS( ) については、
http://www.geocities.jp/thinking_math_education/ …
に説明があります。
E を「小さい数」を表す定数として使っている
と考えればよいでしょう。
    • good
    • 0
この回答へのお礼

カテ間違えてすみませんでした。
リンクありがとうございます。役に立ちましたよ

お礼日時:2011/02/06 04:14

sqrt(n)を求めるアルゴリズムですね?


これは、
  x^2 - n = 0
の解になるのは当然ですから、

f(x)を x^2 - n としています。
で、Newton法で x^2 - n = 0 を解いているアルゴリズムになります。

g(x)は微分した関数です。

DEF f(x)=x^2-a
DEF g(x)=2*x ! g(x)=f'(x)
PRINT "input"
INPUT a
LET x=a
LET E=EPS(1)*10 <----これは何? // これは、収束判定値です(下に詳述)
DO
 LET x1=x-f(x)/g(x)   // x_n+1 = x_n - f(x_n) / f'(x_n) がNewton法です
 PRINT x1
  IF ABS((x1-x)/x)<E THEN EXIT DO
 LET x=x1
LOOP
END

~収束判定値について~
Newton法では、解析的な解を求めることは出来ません。
数値的な解しか得られません。なので、精度が良い値を得たいですね。
どれだけ0に近い値であるかを判定しているのが、収束判定値です。

この回答への補足

E=EPS(1)*10 ーーーー> 1^10の意味ですか?

補足日時:2011/02/06 04:16
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2011/02/06 04:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!