複素数関数の絶対値模様

 投稿者:yoshipyuta  投稿日:2017年12月21日(木)21時59分14秒
  数学研究ノートさんにある次の2つのUBASICプログラムを十進BASICに変換できますか。よろしくお願いいたします。UBASICは計算はすぐれていますがグラフィックが扱いずらい。

(1)1/Zの絶対値模様

  130   screen 3:locate 0,27:R=10^3
  200   ' complex number
  220   for X=0 to 400
  230     for Y=0 to 400
  250       Z=(X-200)/R+#i*(Y-200)/R
  350       if Z<>0 then pset (X,Y),int(abs(1/Z))@7
  370     next
  380   next

(2)Z^2の絶対値模様

200   ' complex number (z^2)
  210   screen 3:cls:locate 0,27:S=0.93
  220   for X=0 to 400
  230     for Y=0 to 400
  250       Z=(X-200)*S+#i*(Y-200)*S
  260       pset (X,Y),round(abs(Z^2))@4096
  270     next
  280   next



 

Re: 複素数関数の絶対値模様

 投稿者:白石 和夫  投稿日:2017年12月22日(金)10時12分25秒
  > No.4419[元記事へ]

yoshipyutaさんへのお返事です。

1行目のscreen 3 は,N88BASICと同じだとすれば,
の指示にしたがって書き換えればいけそうです。
#iは虚数単位だと思うのでSQR(-1)かCOMPLEX(0,1)で置き換え。
最後の,@ の意味がわかりません。
 

Re: 複素数関数の絶対値模様

 投稿者:nagram  投稿日:2017年12月22日(金)13時47分39秒
  > No.4419[元記事へ]

yoshipyutaさんへのお返事です。

> 数学研究ノートさんにある次の2つのUBASICプログラムを十進BASICに変換できますか。よろしくお願いいたします。UBASICは計算はすぐれていますがグラフィックが扱いずらい。
>
> (1)1/Zの絶対値模様
>
>   130   screen 3:locate 0,27:R=10^3
>   200   ' complex number
>   220   for X=0 to 400
>   230     for Y=0 to 400
>   250       Z=(X-200)/R+#i*(Y-200)/R
>   350       if Z<>0 then pset (X,Y),int(abs(1/Z))@7
>   370     next
>   380   next

(1)は次のように移植できます。
十進BASICとは違うカラーコードを採用しているようで、色の並びが違っています。
色もそろえたい場合は、十進BASICの[ヘルプ][グラフィックス][色指標]を参考にして色指標を変更してください。

(1)1/Zの絶対値模様
OPTION ARITHMETIC COMPLEX
SET POINT STYLE 1
130 SET BITMAP SIZE 401,401
    SET WINDOW 0,400,0,400
    LET R=10^3
200 ! complex number
220 for X=0 to 400
230    for Y=0 to 400
250       LET Z=COMPLEX((X-200)/R,(Y-200)/R)
350       if Z<>0 then
             SET POINT COLOR MOD(int(abs(1/Z)),7)+1
             PLOT POINTS: X,Y
          end if
370    next Y
380 next X
END

(2)も同様にして移植できますが、十進BASICでは色指標が0~255の範囲になければならないので、
pset (X,Y),round(abs(Z^2))@4096
の部分は、
SET POINT COLOR MOD(round(abs(Z^2)),256)
PLOT POINTS: X,Y
で対応します。
4096色がほしい場合は、[ヘルプ][グラフィックス][Color Mode(独自拡張)]にある24ビットの色指標を利用すればできます。
 

戻る