• 締切済み

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

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

みんなの回答

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.2

いいです。どうぞ説明してください。 ただし、ここは数学カテですから、 http://oshiete.goo.ne.jp/category/257/ へでも 行ってやったほうがよいと思います。 EPS( ) については、 http://www.geocities.jp/thinking_math_education/BASICHelp/html/basi43g3.htm に説明があります。 E を「小さい数」を表す定数として使っている と考えればよいでしょう。

usavichvich
質問者

お礼

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

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

usavichvich
質問者

お礼

ありがとうございます。

usavichvich
質問者

補足

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

関連するQ&A