- 締切済み
プログラミング ニュートン法簡単な例の説明が欲しい
これはニュートン法で√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
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- alice_44
- ベストアンサー率44% (2109/4759)
いいです。どうぞ説明してください。 ただし、ここは数学カテですから、 http://oshiete.goo.ne.jp/category/257/ へでも 行ってやったほうがよいと思います。 EPS( ) については、 http://www.geocities.jp/thinking_math_education/BASICHelp/html/basi43g3.htm に説明があります。 E を「小さい数」を表す定数として使っている と考えればよいでしょう。
- kopanda116
- ベストアンサー率37% (88/232)
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の意味ですか?
お礼
カテ間違えてすみませんでした。 リンクありがとうございます。役に立ちましたよ