next up previous
Next: 4 課題8 について Up: 情報処理2 第10回 十進BASIC (6) Previous: 2 プログラミング自習の勧め

3 前回の小訂正

サンプルプログラム complexmap.bas で、
 FOR t=0 to 1 STEP 0.01
  ...
 NEXT t
としましたが、 t=1 まで実行されずに1線がつながらないことが多いです。 10進法の 0.01 は 2進法では無限小数になるので (2進法で有限小数となるのは、 既約分数の形に表わしたとき、分母が $ 2$ の冪乗である有理数です)、 有限桁の計算では誤差が生じてしまいます。 「十進BASIC」という名前がついていますが、 OPTION ARITHMETIC COMPLEX とした場合は、 実部虚部を2進法で計算するようです。うっかりしていました。

ここは 2 進法で切りの良いように
 FOR t=0 to 1 STEP 1/128
   ...
 NEXT t
のようにすべきだったかも知れません ( $ \dfrac{1}{128}=2^{-7}$ に注意)。 こうするときちんと閉じるようです。

あるいは、少し面倒になりますが、
 N=100
 dt=1/N
 FOR j=0 to N
   t=j*dt
   ...
 NEXT j
と整数の変数で FOR NEXT ループを回す手もあります (本当はこちらの方が、 プログラムの書き方として「普通」です)。


next up previous
Next: 4 課題8 について Up: 情報処理2 第10回 十進BASIC (6) Previous: 2 プログラミング自習の勧め
Masashi Katsurada
平成20年10月18日