新しく発言する EXIT インデックスへ
バグですか?

  バグですか? 小谷 2003/02/25 10:19:08 
  桁落ちが原因だと思います。 白石和夫 2003/02/25 21:06:31 
   └お返事ありがとうございます。 おだに 2003/02/26 00:32:36 

  バグですか? 小谷 2003/02/25 10:19:08  ツリーへ

バグですか? 返事を書く
小谷 2003/02/25 10:19:08
今まで 十進BASIC Ver.4.22 を使っていたのですが,
今日,十進BASIC Ver5.04 をダウンロードして使ったところ,
Ver.4.22 では正しく表示されていたグラフィックが
Ver.5.04 では正しく表示されませんでした。

これはバグでしょうか?

参考のために,プログラムを貼りつけます。
N=? と訊かれたら,4の倍数を入力してください。
N+1 次多項式で,与えられた三角関数を近似します。
4.22 では正しいグラフが表示されますが,5.04 だと
変な線が現れてしまいます。

==プログラム==
DECLARE EXTERNAL FUNCTION FACTI
LET A=-PI/2
LET XSIZE=10
LET YSIZE=2
SET WINDOW -XSIZE,XSIZE,-YSIZE,YSIZE
SET LINE COLOR 1
PLOT LINES : -XSIZE,0;XSIZE,0
PLOT LINES : 0,-YSIZE;0,YSIZE
SET LINE COLOR 4
LET C=1.07405854429267
LET ALPHA=0.639092926771878
SET LINE COLOR 4
FOR X=-XSIZE TO XSIZE STEP 0.02
LET Y=C*SIN(A*(X-ALPHA))
PLOT LINES : X,Y;
NEXT X
PLOT LINES
SET LINE COLOR 2
DO
INPUT PROMPT"N=":N
IF N<0 THEN EXIT DO
FOR X=-XSIZE TO XSIZE STEP 0.02
LET Y=0
FOR I=0 TO N+1
LET Y=Y+FACTI(I)*A^I*(X-I+N+1)^I
NEXT I
PLOT LINES : X,Y;
NEXT X
PLOT LINES
LOOP
END
EXTERNAL FUNCTION FACTI(N)
LET K=1
IF N>0 THEN
FOR I=1 TO N
LET K=K/I
NEXT I
END IF
LET FACTI=K
END FUNCTION

  桁落ちが原因だと思います。 白石和夫 2003/02/25 21:06:31  ツリーへ

Re: バグですか? 返事を書く
白石和夫 2003/02/25 21:06:31
桁落ちが原因だと思います。
次のプログラムを実行してみると,途中でどういう計算をしているかわかると思います。有限桁の小数しか扱えない計算機を用いて,この計算方法で正しい値を求めるのは無理です。
DECLARE EXTERNAL FUNCTION FACTI
LET A=-PI/2
LET N=40
LET X=10
LET Y=0
FOR I=0 TO N+1
LET t=FACTI(I)*A^I*(X-I+N+1)^I
LET Y=Y+t
PRINT t,Y
NEXT I
END
EXTERNAL FUNCTION FACTI(N)
LET K=1
IF N>0 THEN
FOR I=1 TO N
LET K=K/I
NEXT I
END IF
LET FACTI=K
END FUNCTION


PIの近似値を有理数で与えて有理数モードで計算してみるときれいな線になるのでは?

   └お返事ありがとうございます。 おだに 2003/02/26 00:32:36  ツリーへ

Re: 桁落ちが原因だと思います。 返事を書く
おだに 2003/02/26 00:32:36
お返事ありがとうございます。

ご指摘もっともですが,私が疑問に思っているのは,まったく同じ
プログラムを動かしたときに描かれるグラフが,Ver4.22 と
Ver5.04 では異なることなのです。

これは,Ver5.04 に問題があるとしか思えません。
もう少しわかりやすい例を考えて,改めて投稿します。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。