(x^2-a=0のaの根を求めるニュートン法のプログラムです)
120 REM*******ニュートン・ラフソン法*********
130 FOR I = 1 TO 6
132 READ X0
134 GOSUB 140
136 NEXT I
138 END
140 PRINT "試行値は";X0
145 N=1
150 ER=.00001
180 FX=X0*X0-333
190 DFX=2*X0
200 X1=X0-FX/DFX
220 IF ABS(X1-X0)<ER THEN 250
230 X0=X1 :N=N+1
240 GOTO 180
250 PRINT X1,N
280 RETURN
300 REM *************試行値*************
310 DATA 1,5,10,50,100,500
http://kiso.dj.kit.ac.jp/~nakamori/class/Numerical/html/chap2/Ne...
「ニュートン・ラフソン法のアルゴリズム」の2の式からすると、
220 IF ABS(X1-X0)<ER THEN 250
は、
220 IF ABS(X1-X0)<ER*ABS(X1) THEN 250
とするのが正しいように思うのですがどうでしょうか?
すいません、質問の内容に不備がありました。上に示したプログラムにエラーは出ません。「収束した計算結果」は表示されるのですが、「収束過程の計算」が表示されません。その点についてお聞きしたい次第です。
お助けしたいのですが、ざっと見る限りプログラムに問題は無さそうです。
なんと言うエラーが出るのでしょうか。メッセージを教えてください。
すいません、質問の内容に不備がありました。上に示したプログラムにエラーは出ません。「収束した計算結果」は表示されるのですが、「収束過程の計算」が表示されません。その点についてお聞きしたい次第です。
手元にN88互換BASICがないので上記プログラムを他のBASICに入れてみましたが、結果は
試行値は1
18.248288 9
試行値は5
18.248288 6
試行値は10
18.248288 5
試行値は50
18.248288 6
試行値は100
18.248288 7
試行値は500
18.248288 9
となり、あっているように見えます。(√333 = 18.248287591...なので)
したがってプログラムのニュートンラプソン法の計算部分などは合っていますね。
どういうエラーが出ますか?N88に固有の問題かもしれません。
#個人的にはBASICよりも遥かに高機能でしかも扱いやすい言語がいろいろあるのでそういうもののほうがいいと思うのですが…
すいません、質問の内容に不備がありました。上に示したプログラムにエラーは出ません。「収束した計算結果」は表示されるのですが、「収束過程の計算」が表示されません。その点についてお聞きしたい次第です。
230行と240行の間に
235 PRINT X1,N
を挿入すれば、収束過程の値も表示されると思います。
できました。GOTOで戻る前にプリントすればいいですよね。言われてようやくわかりました。これにずっと悩んでました、自分の不勉強さが痛々しいです。迅速なご回答有難うございました。
できました。GOTOで戻る前にプリントすればいいですよね。言われてようやくわかりました。これにずっと悩んでました、自分の不勉強さが痛々しいです。迅速なご回答有難うございました。