こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

プログラミング ニュートン法簡単な例の説明が欲しい

これはニュートン法で√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

投稿日時 - 2011-02-05 23:45:12

QNo.6500989

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

EPS( ) については、
http://www.geocities.jp/thinking_math_education/BASICHelp/html/basi43g3.htm
に説明があります。
E を「小さい数」を表す定数として使っている
と考えればよいでしょう。

投稿日時 - 2011-02-06 00:15:52

お礼

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

投稿日時 - 2011-02-06 04:14:21

ANo.1

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に近い値であるかを判定しているのが、収束判定値です。

投稿日時 - 2011-02-06 00:13:38

補足

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

投稿日時 - 2011-02-06 04:16:48

お礼

ありがとうございます。

投稿日時 - 2011-02-06 04:12:11

あなたにオススメの質問