プログラミング初心者です。

 投稿者:初心者メール  投稿日:2011年 1月10日(月)00時44分5秒
  はじめまして、プログラミング初心者です。
是非皆さんにご教授願いたいと思います。

n88互換Basic For Windowsにて、二次方程式の数値計算を行っています。



X^2+PX+Q=0 という簡単な二次方程式をN88で解くのですが、
ニュートンラフソン法との反復回数などの比較を行いたいため、
上記の式の項を移項し左辺をXだけにし、

X=-(X^2+Q)/P
という反復公式にしました。

試行値とPとQを変化させ、上記の式を反復法で解くプログラミングはどのようになりますでしょうか?



また①とは別に、下記のような演算時間を計測するプログラムを組みました。
ですがこれでは1秒未満で計算が終わってしまうプログラムでは全て「0ビョウ」になってしまうため
160行目から300行目までの計算を1000回行って秒数を計測したいと考えたのですが
1000回行うためにはどのようにFOR NEXT文を入れればよろしいでしょうか?

100 REM Ex2 Newton Raphson
110 T$=TIME$
120 HH=VAL(MID$(T$,1,2))
130 MM=VAL(MID$(T$,4,2))
140 SS=VAL(MID$(T$,7,2))
150 SEC1=(HH*60+MM)*60+SS

160 K=1:Ep=.00001
170 CLOSE #1:OPEN "I:Ex2_OUT.TXT" FOR OUTPUT AS #1
180 INPUT "X0=";X:PRINT X
190 IF X=0 THEN 270
200 E=(SQR(183)-X)/SQR(183)*100
210 R=(X^2+183)/(2*X)
220 PRINT #1,K;",";R;",";X;",";E
230 PRINT K;,",";R;",";X;",";E
240 IF ABS(R-X)<Ep THEN 300
250 X=R:K=K+1
260 GOTO 190
270 PRINT #1,"ERROR"
280 PRINT "ERROR"
290 GOTO 370
300 PRINT R

310 T$=TIME$
320 HH=VAL(MID$(T$,1,2))
330 MM=VAL(MID$(T$,4,2))
340 SS=VAL(MID$(T$,7,2))
350 SEC2=(HH*60+MM)*60+SS
360 SEC=SEC2-SEC1
350 PRINT SEC;"ビョウ"
360 PRINT #1,SEC;"ビョウ"
370 CLOSE #1
380 END

ご回答よろしくお願い申し上げます。
 

Re: プログラミング初心者です。

 投稿者:白石 和夫  投稿日:2011年 1月11日(火)12時35分9秒
  > No.1477[元記事へ]

②です。
次のようにFull BASICのプログラムに書き換えてから考えると答えが見えてくると思います。
なお,このプログラムは,人間がINPUT文を実行するのに要する時間を含めて計測しているようです。

100 REM Ex2 Newton Raphson
110 LET time0=TIME
120 LET K=1
130 LET Ep=.00001
140 OPEN #1: NAME "I:Ex2_OUT.TXT"
145 ERASE #1
150 INPUT  PROMPT "X0=":X0
160 PRINT X0
170 LET X=X0
180 DO
190    IF X=0 THEN
200       PRINT #1: "ERROR"
210       PRINT "ERROR"
220       STOP
230    END IF
240    LET E=(SQR(183)-X)/SQR(183)*100
250    LET R=(X^2+183)/(2*X)
260    PRINT #1: K;",";R;",";X;",";E
270    PRINT K,",";R;",";X;",";E
280    IF ABS(R-X)<Ep THEN EXIT DO
290    LET X=R
300    LET K=K+1
310 LOOP
320 LET SEC=TIME-time0
330 PRINT SEC;"ビョウ"
340 PRINT #1: SEC;"ビョウ"
350 PRINT R
360 CLOSE #1
370 END


 
 

戻る