人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

初めまして、私は大学でBASIC初心者でN88互換BASICでのプログラミングを今年から勉強しています。↓のプログラムで収束過程の計算結果を実行画面に表示させたくてFOR?NEXT文でいろいろ試しているのですがエラーが出てしまいます。他の具体的な方法が浮かばないです。初歩的な質問でしたら申し訳ないのですが、BASIC経験者、もしくは現在やられている方でどなたか私にアドバイスをしていただけると助かります。

(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

●質問者: yuigadokusonn
●カテゴリ:コンピュータ 学習・教育
✍キーワード:333 ABS BASIC ER Fx
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● rakka74
●20ポイント

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


とするのが正しいように思うのですがどうでしょうか?

◎質問者からの返答

すいません、質問の内容に不備がありました。上に示したプログラムにエラーは出ません。「収束した計算結果」は表示されるのですが、「収束過程の計算」が表示されません。その点についてお聞きしたい次第です。


2 ● Allashe
●20ポイント

お助けしたいのですが、ざっと見る限りプログラムに問題は無さそうです。

なんと言うエラーが出るのでしょうか。メッセージを教えてください。

◎質問者からの返答

すいません、質問の内容に不備がありました。上に示したプログラムにエラーは出ません。「収束した計算結果」は表示されるのですが、「収束過程の計算」が表示されません。その点についてお聞きしたい次第です。


3 ● くまっぷす
●20ポイント

手元に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よりも遥かに高機能でしかも扱いやすい言語がいろいろあるのでそういうもののほうがいいと思うのですが…

◎質問者からの返答

すいません、質問の内容に不備がありました。上に示したプログラムにエラーは出ません。「収束した計算結果」は表示されるのですが、「収束過程の計算」が表示されません。その点についてお聞きしたい次第です。


4 ● rakka74
●50ポイント ベストアンサー

230行と240行の間に


235 PRINT X1,N


を挿入すれば、収束過程の値も表示されると思います。

◎質問者からの返答

できました。GOTOで戻る前にプリントすればいいですよね。言われてようやくわかりました。これにずっと悩んでました、自分の不勉強さが痛々しいです。迅速なご回答有難うございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ