PCが描く奇妙な画像集(数学的万華鏡と生物形態等の世界)

・インタープリタBASICによるフラクタルとカオスの奇妙な画集。

586 極座標表示のマンデルブロ画像についての復習

2014-09-01 16:39:53 | Z^2マンデルブロー集合
下図は極座標表示のマンデルブロ画像である。これから此の画像に関連する話題に転ずるので極座標におけるマンデルブロ画像について復習しておく。



----------------------------------------------------------------------

記事583で詳説したように、巡回式:Z←Z^2+Cは、点列(1)で表される。ここで、Cは複素定数。

Z0,Z1,Z2,・・・,Zn,・・・Zmax ・・・・・・・・・・・・・・・・・・・・・・・(1)

ここで、Z0=C とする。

複素平面での表示領域:Dを極座標とする。

極座標での点は、座標の中心点からの距離:Rと角度θで決定される。

ここで、Rとθの変化率を dr,dθとし、パラメータ K,Jを使用して、点Z(θ,R)を下式で与える。

θ=dθ*K ,R=dr*J

ここで表示領域:D内の点C(=Z0)が与えられたとき、点列(1)はどのような挙動をするのだろうか? 

これが、次回以降のテーマであるが、それには極座標を用いるのがよい。

画像を鮮明にするには、dθ,dRを小さくするのがよいが、画像作成時間との兼ね合いがある。

C.K.クリックオーバー著『コンピューター・カオス・フラクタル』によれば、マンデルブロ集合の重心は(-0.14,0)だそうである。

ここで重心の定義は不明だが、(1)の点列の挙動をしらべるとき、その点列座標の中心を此の重心と一致させて調べることにする。

---------------------------------------
参考にBASIC/98のプログラムを書いておく。

10 REM マンデルブロ画像 極座標表示
12 CHAIN MERGE "C:\BASIC\PRO\SUBR\COLOR右上表示.BAS",50,ALL
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
104 GOSUB 3000
110 OPEN"C:\BASIC1\TEST\マンデルブロ画像DATA.DAT" FOR OUTPUT AS #1
120 JMAX=240:KMAX=4000:RMAX=1.36:X0=-0.14:Y0=0
130 DR=RMAX/JMAX:DTH=2*P/KMAX:AA=JMAX/RMAX:NMAX=100
132 CXS=-1.5:D=RMAX/320:CYS=-240*D:DTHDO=180*DTH/P
150 FOR J=1 TO 240
160 R=J*DR
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
280 IF Q>4 THEN 320
310 NEXT N
315 GOTO 390
320 REM
322 X=R*COS(TH)+X0:Y=R*SIN(TH)+Y0
324 K1=(X-CXS)/D:J1=(Y-CYS)/D
326 IF K1<0 OR J1<0 THEN 390
328 IF K1>640 OR J1>480 THEN 390
330 C=N MOD 16
332 IF C=7 THEN C=8
334 PSET (K1,J1),C
336 WRITE #1,K1,J1,C
390 NEXT K
394 NEXT J
400 CLOSE
500 PSET(320,240),2
520 END



585 赤黒縞画像の縁(ふち)とマンデルブロ集合の縁の類似性

2014-08-30 16:27:17 | Z^2マンデルブロー集合

黒縞模様画像が記事585 で赤分岐していく様子をアニメ化した。 (参考そのアニメ→分岐画像)

その分岐画像の途中で、赤黒縞画像の縁(ふち)とマンデルブロ集合の縁とが類似している箇所がある。
下図がその例。



参考:下図はマンデルブロ集合画像(緑色)である。



----------------------------
この類似性は何を意味するのだろうか?
単なる偶然だろうか?

この類似( 厳密には異なるが「感じ」は似ている )は、Naの或る箇所のみで他のNaでは発生しない。

画像の白部分は、N-loopを脱出する回数:NoがNa以上となる部分である。
そのような部分がマンデルブロ集合の、恐らく一部分と相似になるNaが存在することが事実だとすれば不思議だ。

この類似性は此の画像領域だけなのか、あるいは他の画像領域にもあるのか全く不明である。

この類似性が事実だとすれば、マンデルブロ集合画像の神秘性が一つ増えることになる。


583 マンデルブロ画像の赤黒縞模様画像についての解説と復習

2014-08-30 10:13:14 | Z^2マンデルブロー集合




上図はZ^2マンデルブロ画像の赤黒縞模様画像の一例である。

以下に赤黒縞模様画像の作成手順を詳しく説明する。

---------------------------------------------------------

巡回式:Z←Z^2+C (Cは複素定数)を

点列:Z0,Z1,Z2,Z3,・・・,Zn,・・・,Znmax・・・・・・(1)

で表す。但し、Z0=C とする。

|Zn|>2 ・・・・・・・・・・・・・・・・・(2)

いま、与えられた複素平面座標範囲:Dで点Cmを与え、点列(1)が初めて(2)を満足する点Znが存在すれば、点Cmを、n が偶数ならば黒、奇数ならば赤にして表示する。

同様なことを座標範囲:Dの全ての点Cで行えば、Dで赤黒縞模様画像が得られる。但し、点列(1)がZnmaxになっても(2)を満足しないときは当該点Cは何も表示しない。

(ちなみに、nmax→∞ でも(2)を満足しないような点Cの集合をマンデルブロ集合という。通常は適当な有限値に設定する)

マンデルブロ画像を作るとき、通常、C は D の長方形の上端の左端から右端へ、これを上端から下端へと繰り返して変化させる。此の方法でなくてもよい( 其の一例が極座標表示 )が此の手順が最も簡単である。

上図は此の手順で作成した画像である。点Cが与えられたとき、その点でのNoは点Cで異なってくる。

上図は、nmax=5000としていて、点Cが、No<700の場合のみ赤黒縞模様画像化している例である。画像から分かるように此の画像の場合は赤黒縞模様画像は特異な形をしている。

赤黒縞模様画像の赤黒が整然と連結しているということは、Noが規則正しく 1 ずつ変化していることを意味していて、その点でも此の画像が秩序をもっていることが分かる。

次に此の画像での座標範囲:Dを、以下で順に示していく。先ず元々のマンデルブロ画像から始まり、その中の部分を順次拡大していく。但し、画像の色は適宜変えているが、画像の形態には無関係だと思ってよい。ここでの関心事は、上の画像は、いかなる座標範囲:D なのか、だからだ。












このように、座標範囲:D は 1-11-3-5-3 の部位である。
ちなみに、この1-11-3-5-3部位にある赤黒縞模様画像画像の中にある縞模様の「2本の絡まり」の拡大図を下図に示す。この画像の拡大率は最初の図に対して 1126871 倍にあたる。



また、下図は No<463 の場合の赤黒縞模様画像である。(緑の色の箇所は No>2000 の箇所である。)
この画像のほうが、赤黒縞模様画像 から分かる画像の特徴が理解しやすく、その特徴を下記しておく。



赤黒縞模様は分岐構造をしている。その分岐は更に複雑に分岐を重ね、大ざっぱに見て以下のような分布構造となっている。
***
1.分岐の本体部が存在し、その本体部の黒赤の節目、即ち、Noが1増すごとに新しい分岐が本体の両側から発生し、その発生した新しい分岐は、同様な分岐を繰り返していく。その場合の分岐部分の大きさと方向は随時変化していて一定ではない。

2.分岐の本体は、螺旋模様に或る一点へと収束していく。

3.2の場合、二本の別の本体が、螺旋模様となって共通の収束点へと向かうが、その螺旋は互いに、からまった状態(下図がその例)となっている。

4.本体部分から派生した複数の分岐は、他の派生した複数の分岐と集まっていき、同一座標点へと向かって収束している。

-------------------
関連記事:344,345


282の補足と画像訂正。『Z^2マンデルブロ画像での発散しない点の集合についての検討』

2014-08-28 10:17:27 | Z^2マンデルブロー集合
下図の緑色の集合がZ^2マンデルブロ集合である。



下図は、発散しない点C全てにおける、巡回計算過程での点Z(X,iY)の集合濃度画像である。ここで点Zが同一座標になる場合の回数(濃度)をmとし、BASIC/98での色コードをCCとすると、CC=LOG(m)で表現した。(参考:画像データは下に書いたプログラム1のDATA2に相当する。)

下図の下に、CCの色コードを示してあるから、点(X,iY)が同一座標となる濃度の形態が分かる。例えば、色が緑(CC=5)の場合、その点での濃度は、e^5=148となる。また下図においてマダラに見える黒部分はCC=0故、LOG(m)=0となり、m=1 となる。

但し、m=0 の場合は非表示(空白)とした(参考:下のフログラム3の行511)。
下図の左部分の空白は点(X,iY)が存在しない部分であるが、画像中の白スジ線の存在理由は不明である。



下図は上図に、マンデルブロ集合の境界線(白い線で示した)を重ね描きした画像である。
点(X,iY)の集合は、マンデルブロ集合より、一回り大きく、ぼやけてはいるが外形は似ているのが面白い。マンデルブロ集合の中央部と、左側の「こぶ」あたりに、点(X,iY)の濃度も大きくなっていることが色で分かる。



---------------------------------------------------------------
以下、画像作成のBASIC/98フログラムを示す。基本的に三つのプログラムから構成されている。

・プログラム1→発散しない点C全てにおける、巡回計算過程での点(X,Y)及び当該(K,J)をfile:DATA2に保存する。

10 REM マンデルブロー N-loopの内外保存
12 REM N-loopを脱出したデータ→DATA1
14 REM N-loopを脱出しない全データ→DATA2
16 REM N-LOOPを貫通したデータ→DATA3
20 REM 横軸(K):640 dots、縦軸(J):480 dots
30 CHAIN MERGE "C:\BASIC1\PRO\SUBR\ARCTAN3.BAS",40,ALL
40 CHAIN MERGE "C:\BASIC1\PRO\SUBR\TAN.BAS",50,ALL
50 '
60 CHAIN MERGE "C:\BASIC1\PRO\SUBR\KOSHIKI.BAS",70,ALL
70 CHAIN MERGE "C:\BASIC1\PRO\SUBR\ZFZ.BAS",80,ALL
80 CHAIN MERGE "C:\BASIC1\PRO\SUBR\FGZ.BAS",90,ALL
90 CHAIN MERGE "C:\BASIC1\PRO\SUBR\ER1.BAS",100,ALL
100 ON ERROR GOTO 50000
110 CONSOLE ,,0,1
120 COLOR 0,7,,,2
130 CLS 3
140 GOSUB 10000
150 OPEN "C:\BASIC1\RUN\DATA1.DAT" FOR OUTPUT AS #1
152 OPEN "C:\BASIC1\RUN\DATA2.DAT" FOR OUTPUT AS #2
154 OPEN "C:\BASIC1\RUN\DATA3.DAT" FOR OUTPUT AS #3
160 OPEN "C:\BASIC1\RUN\親DATA.DAT" FOR OUTPUT AS #4
170 REM 親DATAの設定(随時変更)
180 CXS=-2.5 :CXE=0.5
190 DX=(CXE-CXS)/640 :DY=DX:CYS=-240*DY
200 WRITE #4,CXS,CXE,CYS,CYE,DX,DY
210 CLOSE #4
220 FOR J=0 TO 480
230 LOCATE 0,0:PRINT J
240 FOR K=0 TO 640
260 CX=CXS+DX*K
270 CY=CYS+DY*J
272 X=0:Y=0
280 FOR N=0 TO 500
290 XX=FNR2(X,Y)+CX
300 Y=FNI2(X,Y)+CY
310 X=XX
320 Q=X^2+Y^2
330 IF Q>4 THEN 380
336 WRITE #2,X,Y,K,J,N
340 NEXT N
342 WRITE #3,X,Y,K,J,N
360 GOTO 420
380 WRITE #1,X,Y,K,J,N
420 NEXT K
430 NEXT J
440 END


・フログラム2→ DATA2の(X,Y)の表示座標系(K,J)への変換し(行170)、同一座標値の濃度を求める(行150~240)。その場合、行200より濃度は+1余計加算されている。また表示座標系(K,J)
での各点(X,Y)の最大濃度を求め(行250-300)、file:DAT2Aに保存する(行280)。

10 REM DATA2のX,YのKK,JJ化と、点(KK,JJ)の濃度をZ(KK,JJ)に
12 REM 保存していき、(KK,JJ,Z(KK,JJ))のデータ:DATA2Aを求める。
14 CHAIN MERGE "C:\BASIC1\PRO\SUBR\ER2.BAS",16,ALL
16 ON ERROR GOTO 50000
20 OPEN "C:\BASIC1\TEST\DATA2A.DAT" FOR OUTPUT AS #2
30 OPEN "C:\BASIC1\TEST\DATA2.DAT" FOR INPUT AS #1
40 CONSOLE ,,0,1
50 COLOR 0,7,,,2
60 CLS 3
70 CXS=-2.5:CXE=0.5:DX=(CXE-CXS)/640:DY=DX
80 CYS=-240*DY:CYE=-CYS:M=0
90 DIM Z(640,480)
100 FOR I=0 TO 480
110 FOR II=0 TO 640
120 Z(KK,JJ)=0
130 NEXT II
140 NEXT I
150 INPUT #1,X,Y,K,J,N
160 IF EOF(1) THEN 242
170 KKK=(X-CXS)/DX: JJJ=(Y-CYS)/DY
180 KK=INT(KKK):JJ=INT(JJJ)
190 IF KK>640 OR JJ>480 THEN 240
191 IF KK<0 OR JJ<0 THEN 240
200 Z(KK,JJ)=Z(KK,JJ)+1
202 C=Z(KK,JJ) MOD 16:PSET(KK,JJ),C
212 M=M+1:LOCATE 0,0:PRINT M
240 GOTO 150
242 CLS 3
250 REM KK,JJ,Z(KK,JJ)の保存→DATA*A
260 FOR JJJ=0 TO 480
270 FOR KKK=0 TO 640
271 IF Z(KKK,JJJ)=0 THEN 290
280 WRITE #2,KKK,JJJ,Z(KKK,JJJ)
282 CC=Z(KKK,JJJ) MOD 16:PSET (KKK,JJJ),CC
290 NEXT KKK
300 NEXT JJJ
410 END

・フログラム3 →DATA2A(濃度データ)の表示。

10 REM 画像表示
30 CONSOLE ,,0,1
40 COLOR 0,7,,,2
50 CLS 3
51 CHAIN MERGE "C:\BASIC1\PRO\SUBR\COLOR左下表示.BAS",55,ALL
55 OPEN "C:\BASIC1\RUN\DATA2A.DAT" FOR INPUT AS #1
60 INPUT #1,K,J,Z
62 LOCATE 0,0:PRINT USING "###";J
64 LOCATE 0,1:PRINT USING "###";K
70 IF EOF(1) THEN 120
80 REM Zによる色の区別:サブルーチン
90 GOSUB 500
100 PSET (K,J),C
110 GOTO 60
120 CLOSE #1
130 GOTO 600
500 REM Zによる色の区別:最初からZは1加算されているから補正をする
510 Z=Z-1
511 IF Z=0 THEN 550
520 C=LOG(Z)
550 RETURN
600 GOSUB 3000
610 END


・フログラム4 →画像表示及びマンデルブロ集合の境界線の表示

10 REM 画像表示及びマンデルブロ集合の境界線の表示
30 CONSOLE ,,0,1
40 COLOR 0,7,,,2
50 CLS 3
51 CHAIN MERGE "C:\BASIC1\PRO\SUBR\COLOR左下表示.BAS",52,ALL
55 OPEN "C:\BASIC1\RUN\DATA2A.DAT" FOR INPUT AS #1
60 INPUT #1,K,J,Z
62 LOCATE 0,0:PRINT USING "###";J
64 LOCATE 0,1:PRINT USING "###";K
70 IF EOF(1) THEN 120
80 REM Zによる色の区別:サブルーチン
90 GOSUB 500
100 PSET (K,J),C
110 GOTO 60
120 CLOSE #1
130 GOTO 600
500 REM Zによる色の区別:最初からZは1加算されているから補正をする
510 Z=Z-1
511 IF Z=0 THEN 550
520 C=LOG(Z)
550 RETURN
600 GOSUB 3000
610 REM 旧data1からマンデルブロ画像の境界付近の画像の読み込み
620 OPEN "C:\BASIC1\RUN\DATAmandel.DAT" FOR INPUT AS #1
630 INPUT #1,K,J,N
640 IF EOF(1) THEN 670
650 PSET (K,J),0
660 GOTO 630
670 CLOSE
680 END

390 記事389の1-2-8のC=4log mod 16画像の中の拡大画像

2014-08-09 07:18:47 | Z^2マンデルブロー集合





-------------------------------------------------
・1-2-8-1画像





-------------------------------------------------
・1-2-8-2画像





-------------------------------------------------
・1-2-8-3画像





------------------------------------------------
・1-2-8-4画像





------------------------------------------------
・1-2-8-5画像





-------------------------------------------------
・1-2-8-6画像





389 Z^2マンデルブロ集合全体画像の拡大画像(その3)

2014-08-09 06:54:38 | Z^2マンデルブロー集合






---------------------------------------
・1-2-1画像






---------------------------------------
・1-2-2画像






---------------------------------------
・1-2-3画像






---------------------------------------
・1-2-4画像






---------------------------------------
・1-2-5画像






----------------------------------------
・1-2-6画像






---------------------------------------
・1-2-7画像






--------------------------------------
・1-2-8画像






--------------------------------------
・1-2-9画像





387 記事384の2-4の(C=4LOG(No) MOD 16)画像の中の拡大画像

2014-08-08 07:48:25 | Z^2マンデルブロー集合








--------------------------------
・ 2-4-1画像




--------------------------------
・ 2-4-2画像




--------------------------------
・ 2-4-3画像




-------------------------------
・ 2-4-4画像




------------------------------
・ 2-4-5画像




-------------------------------
・ 2-4-6画像





-------------------------------
・ 2-4-7画像




--------------------------------
・ 2-4-8画像




-------------------------------
・ 2-4-9画像






386 前記事385の中2-1-2画像の中の拡大画像

2014-08-08 07:20:00 | Z^2マンデルブロー集合






-----------------------------------------
・2-1-2-1画像






-----------------------------------------
・2-1-2-2画像






------------------------------------------
・2-1-2-3画像






-----------------------------------------
・2-1-2-4画像






----------------------------------------
・2-1-2-5画像






------------------
注:以下の画像は、実行時間の省略のため、Nmax=5000→500に途中で変えている。
2-1-2-1画像→J=330で変更。
2-1-2-4画像→J=398で変更。
2-1-2-5画像→J=401で変更。

従って、それらの赤黒縞模様画像は、マンデルブロ集合部分(Nmax=5000)は描かなかった。
(Nmax=500にしたため)

382 前記事381の、1-1-3画像の中の部分の拡大図

2014-08-07 08:37:49 | Z^2マンデルブロー集合
前記事382での、1-1-3画像の中の5箇所の部分を拡大する。
この画像でのZ^2マンデルブロ画像の周辺部分は境界が鮮明ではなくボヤけていた。

その要因として、Nmaxが小さすぎることが考えられた。1-1-3画像のNmaxは1000である。
そこで、Nmax=10000とした画像を求めてみた。その結果が下図である。
その結果は、やはり、マンデルブロ画像の周辺部分 (但し、マンデルブロ本体部の画像、即ち、1-1-3-1図及び1-1-3-2図)の境界が鮮明ではなくボヤけている。

***
Z^2マンデルブロ画像の本体部から離れたミニ・マンデルブロ画像(1-1-3-3図及び1-1-3-4図)の境界は鮮明である。本体部の画像のみがボヤけている。

これは、N-loopの巡回回数を1000→10000にしても、N-loopを貫通してしまう点の集合が境界部においてランダムに存在していることを意味している(即ち、Z^2マンデルブロ画像の『こぶ』状の形態が鮮明な『こぶ』にならない)。未だN-maxが小さすぎるためなのか?

***
下図の赤黒縞模様の画像は血管や灰の分岐を連想させて面白い。
各画像の作成条件は画像に書いてある。

--------------------------------------




--------------------------------------
・1-1-3-1画像






--------------------------------------
・1-1-3-2画像






--------------------------------------
・1-1-3-3画像






-------------------------------------
・1-1-3-4画像






------------------------------------
・1-1-3-5画像






-----------------------------------
注:1-1-3-2の中の画像をN=50000で計算したが計算時間がかかりすぎ途中で中止。
途中までのデータは関連画像の中にファイルしてある。




381 Z^2マンデルブロ集合全体画像の拡大画像(その1)

2014-08-07 08:06:56 | Z^2マンデルブロー集合
以前、既に行っていることだが、Z^2マンデルブロ集合画像の異なる部分で同様なことを再トライする。

各画像の色の処理は各画像に書いてある。

1-1-3図でのマンデルブロ集合の境界部は判然としないが、画像処理によって比較的、鮮明になっているが基本的にNmax=1000では小さい故もあるかも知れない。この件については、最後の(参考)で触れる。 











-----------------------------------
・1-1-1画像






----------------------------------
・1-1-2画像






----------------------------------
・1-1-3画像






---------------------------------
・1-1-4画像






--------------------------------
・1-1-5画像






--------------------------------

(参考)

1-1-3図の3番目の画像において、15-(4*log(No) mod 16)=暗い青=5.5~6.5 となるNoを求めてみる。

4*log(No) mod 16=9.5 ~8.5。
よって、4*log(No)=(9.5~8.5)+16*n (nは0を含む正整数)。
よって、n=0の場合は No=e^(9.5~8.5)/4=10.7~8.3。
n=1の場合は No=e^{(9.5~8.5)/4+16}=9.5*10^7~7.4*10^7→有り得ない。
∵Nmax=1000
従って、No=10~8の場合は暗い青色となり得る。

しかし、1-1-3図の4番目の画像より、Z^2マンデルブロ集合の極く近い周辺部は青色となっており、其処は 200
従って、、Z^2マンデルブロ集合の極く近い周辺部の、マンデルブロ画像の『こぶ』の乱れは、Nmax=1000が小さすぎる(即ち、N-loopで発散すべき点が、通過してしまっていることを意味している思われ、その点は厳密な意味でZ^2マンデルブロ集合の点ではないと思われる。