『点列:Z0~Z000のJ=0~240,θ=0~2πでの分布画像(if X^2+Y^2>4 then next K条件有り)』について。
--------------------------------------------------------------------
前記事322では、点列:Z0,Z1,Z2,・・・,Z15の、J=10ほか各値でのθ=0→2πでの挙動(軌跡)を調べた。
今回は点列:Z0,Z1,Z2,・・・,Z1000、J=0→240,θ=0→2π(step 0.036度)での点列の軌跡濃度を調べた。N-loop脱出条件:if X^2+Y^2>4 then next K の条件を入れてある。
今回の画像も記事322と同様に点列が同一座標となる濃度をmとすると、C=LOG(m)として色で表示する。m=0の場合は表示しない。下図がその画像である。なお、参考のためにマンブルブロ集合の周辺を黒い線で示しておいた。
------------------------------------------
下図は、m<500となる点は除いた画像である。但し、この画像でのmは、N-loopのN値が500になった時点から求めている。従って、この画像での色コードをn1とすると、n1=LOG(m-500) となり、m=e^n1+500 となる。
--------------------------------------------------
以下、考察と結論である。
マンデルブロ集合とは、複素平面上の点をλとしたとき、以下の漸化式(点列)
Z0=0, Zn+1←Zn^2+λ (n=0,1,2,3,・・・・・・・・) ・・・・・・・・・(1)
において、n→∞においても発散しないような点λの集合を言う。
通常、|Zn|>2となれば点列(1)は発散されたとみなされる。
上図では、点λを、極座標:(R,θ)で与え、R=0→1.48,θ=0→2πの範囲で、点列(1)を全て表示させ、PCの全表示座標(横軸:-1.5~+1.5),縦軸:-1~+1)での、それらの点の個数(濃度m)を求めた。mの最大値は1,202,600となるのでLOG(m)を色で表現した。
LOG(m)は単調増加関数なので、mの増加は(LOG圧縮されているとはいえ)、色のカラーコードNo.順に対応しており、その該当色に単純に対応している。
即ち、或るPC画面座標(K,J)での色コードNo.をnといると、その座標でのmはn=LOG(m) 従って、m=e^n 個となる。
***
一番上の図での比較的濃く黒っぽく見える円板状のモノは、半径R=3で複雑に変化していく。
また、一番上の図での比較的濃く黒っぽく見える円板状の外側の部分は、この計算でのλ以外の点だが、黒い点が散在している。黒点はm=1だから、一個の点が散在していることを意味しているが、この点は恐らく、R<=1.48内の点λの点列(1)のいずれかによる点と思われる。( 点列(1)は必ずしも単調に減少せず、円R<2を動き回ると思われれ、この散在点は、2>R>1.48の、そのような点と思われる。)
***
一番下の図は、m<500となる点は除いた画像である。但し、この画像でのmは、N-loopのN値が500になった時点から求めている。従って、この画像での色コードをn1とすると、n1=LOG(m-500) 従って、m=e^n1+500 となる。
***
一番上の図と上図は参考としてマンデルブロ集合の周辺部を黒い線で上描きしてある。
***
実はこの画像のテーマはマンデルブロ集合内の点列の分布図を求めることであったが、ここで試みたことは、マンデルブロ集合を含む半径>=1.48内の点列の分布図である。
***
『点列が収束する』ということを『mの最大値が存在する』ということで定義すると、
『収束線』に相当する、最大値mの曲線は上図には見出せない。mの最大値は上図で見る限り、マンデルブロ集合の中央部に点としてあるだけで線状(同じ色の線)とはなっていない。本『鏡の伝説』(ダイヤモンド社)の図0-19のような分岐図にはならない。
(そもそも此の分岐図を求めようとして此のブログのテーマのように問題設定したのだが、結局、失敗した。その原因は不明である)
------------------------------------------------------------
参考のために、画像作成プログラムを下記しておく。
10 REM 濃度の計算
50 CHAIN MERGE "C:\BASIC\PRO\SUBR\KOSHIKI.BAS",80,ALL
80 CHAIN MERGE "C:\BASIC\PRO\SUBR\ER1.BAS",90,ALL
90 ON ERROR GOTO 50000
91 CONSOLE ,,0,1
92 COLOR 0,7,,,2
93 CLS 3
94 GOSUB 10000
120 JMAX=240:RMAX=1.36:X0=-0.14:Y0=0:DIM Z(640,480)
122 FOR I=0 TO 640
123 FOR II=0 TO 480
124 Z(I,II)=0
125 NEXT II
126 NEXT I
130 DR=RMAX/JMAX:AA=JMAX/RMAX:NMAX=1000:KMAX=1000
132 CXS=-1.5:D=1.36/320:CYS=-240*D:DTHDO=180*DTH/P
142 OPEN "C:\BASIC1\TEST\DATA.DAT" FOR OUTPUT AS #1
150 FOR J=0 TO 240
152 LOCATE 0,0:PRINT "J=";J
160 R=J*DR
162 '
172 DTH=2*P/KMAX
190 FOR K=0 TO KMAX
200 TH=K*DTH:THH=TH
210 CX=R*COS(TH)+X0
220 CY=R*SIN(TH)+Y0
221 X=0:Y=0
230 FOR N=0 TO NMAX
240 X1=X
250 X=FNR2(X,Y)+CX
260 Y=FNI2(X1,Y)+CY
270 Q=X^2+Y^2 :IF Q>4 THEN 390 ELSE 286
286 K1=INT((X-CXS)/D):J1=INT((Y-CYS)/D)
288 IF K1>640 OR J1>480 THEN 390
291 '
295 Z(K1,J1)=Z(K1,J1)+1
296 IF N=0 THEN PSET (K1,J1),0
300 WRITE #1,K1,J1,N
310 NEXT N
390 NEXT K
391 NEXT J
410 CLOSE #1
412 OPEN "C:\BASIC1\TEST\DATA整理.DAT" FOR OUTPUT AS #2
414 FOR KK=0 TO 640
416 FOR JJ=0 TO 480
418 WRITE #2,KK,JJ,Z(KK,JJ)
420 NEXT JJ
422 NEXT KK
500 END
-------------------------------
10 REM 濃度の表示
12 CHAIN MERGE "C:\BASIC\PRO\SUBR\COLOR右上表示.BAS",20,ALL
20 CHAIN MERGE "C:\BASIC\PRO\SUBR\ARCTAN3.BAS",30,ALL
30 CHAIN MERGE "C:\BASIC\PRO\SUBR\LINE10.BAS",40,ALL
40 CHAIN MERGE "C:\BASIC\PRO\SUBR\KISEKI1.BAS",50,ALL
50 CHAIN MERGE "C:\BASIC\PRO\SUBR\KOSHIKI.BAS",60,ALL
60 CHAIN MERGE "C:\BASIC\PRO\SUBR\ZFZ.BAS",70,ALL
70 CHAIN MERGE "C:\BASIC\PRO\SUBR\FGZ.BAS",80,ALL
80 CHAIN MERGE "C:\BASIC\PRO\SUBR\ER1.BAS",90,ALL
90 ON ERROR GOTO 50000
91 CONSOLE ,,0,1
92 COLOR 0,7,,,2
93 CLS 3
94 GOSUB 10000
104 '
114 OPEN "C:\BASIC1\TEST\DATA整理.DAT" FOR INPUT AS #1
120 WHILE NOT EOF(1)
130 INPUT #1,K,J,Z
132 '
134 C=LOG(Z)
138 '
139 '
140 PSET (K,J),C
142 WEND
144 CLOSE #1
154 GOTO 199
170 LOCATE 0,0:PRINT "J=1~240 "
172 LOCATE 0,1:PRINT "C=LOG(m),C=7→C=12"
174 LOCATE 0,3:PRINT "マンデルブロ集合の中心点(赤点)=(-0.14,0)"
176 LOCATE 0,2:PRINT "但し、m=0→不表示"
183 LOCATE 0,4:PRINT "Nmax=15"
186 LOCATE 0,5:PRINT
187 LOCATE 0,6:PRINT
188 LOCATE 0,19:PRINT "RMAX=1.36"
189 LOCATE 0,20:PRINT "dθ(度)=0.072"
199 '
400 OPEN "C:\BASIC1\TEST\DATAマンデルC.DAT" FOR INPUT AS #2
402 IF EOF(2) THEN 420
404 INPUT #2,X,Y
406 PSET (X,Y),0
408 GOTO 402
410 CLOSE #2
420 GOSUB 3000
500 END