Julia集合描画

 


Julia 集合の定義

Julia 集合は,以下の漸化式で定義される複素数列 $\{z_n\}$ において,与えられた複素数 $c$ に対し, $n\rightarrow\infty$ の極限において無限大に発散しないという条件を満たす複素数 $z_0$ が作る集合として定義される. Mandelbrot 集合では, $z_0=0$ として $c$ を変化させたが,Julia 集合では, $c$ を予め与え, $z_0$ を変化させるところに違いがある.

\begin{equation} z_{n+1}=z_n{}^2+c \end{equation}

複素数を用いないで扱うには, $z$ および $c$ を実数部と虚数部にわけて考える. そのためには, $z=x+i\cdot y$$c=a+i\cdot b$ として,以下の式を用いればよい.

\begin{equation} \begin{cases} x_{n+1}=x_n{}^2-y_n{}^2+a \\ y_{n+1}=2 x_n y_n+b \end{cases} \end{equation}

プログラム

Programs

FilenameDescription
f90_julia_gmt.txt2-dim. grey color plot program
f90_julia_gmt3d.txt3-dim. grey color plot program

Fortranプログラム実行用コマンド

./f90_julia_gmt jw ih x0 y0 rr a b filename

./f90_julia_gmt3d jw ih x0 y0 rr a b filename
jw 作図の水平方向分割数(整数値)
ih 作図の鉛直方向分割数(jwと同じ整数値)
x0 作図の中心座標のx値(実数)
y0 作図の中心座標のy値(実数)
rr 作図半径(実数)
a a の値(実数)
b b の値(実数)
filename出力画像ファイル名(jpg)


描画事例

2次元プロット

gfortran -o f90_julia_gmt f90_julia_gmt.f90

# ********************************************************
# Make color pallet file
#   z1  R1  G1  B1  z2  R1  G2  B2 (z1/z2: range of value)
#*********************************************************
echo  "0     0   0   0   2 255 255 255" > _col.cpt
echo  "2   255 255 255   4   255 255 255" >> _col.cpt
echo  "F    0   0   0" >> _col.cpt
echo  "B  255 255 255" >> _col.cpt
./f90_julia_gmt 400 400 0 0 2   0.00  0.00 fig_julia_0400m000_000.jpg
./f90_julia_gmt 400 400 0 0 2  -1.00  0.00 fig_julia_0400m100_000.jpg
./f90_julia_gmt 400 400 0 0 2  -0.75  0.00 fig_julia_0400m075_000.jpg
./f90_julia_gmt 400 400 0 0 2  -0.50  0.00 fig_julia_0400m050_000.jpg
./f90_julia_gmt 400 400 0 0 2  -0.25  0.00 fig_julia_0400m025_000.jpg
./f90_julia_gmt 400 400 0 0 2   0.25  0.00 fig_julia_0400p025_000.jpg
./f90_julia_gmt 400 400 0 0 2   0.50  0.00 fig_julia_0400p050_000.jpg
./f90_julia_gmt 400 400 0 0 2   0.75  0.00 fig_julia_0400p075_000.jpg
./f90_julia_gmt 400 400 0 0 2   1.00  0.00 fig_julia_0400p100_000.jpg
./f90_julia_gmt 400 400 0 0 2   0.00 -1.00 fig_julia_0400_000m100.jpg
./f90_julia_gmt 400 400 0 0 2   0.00 -0.75 fig_julia_0400_000m075.jpg
./f90_julia_gmt 400 400 0 0 2   0.00 -0.50 fig_julia_0400_000m050.jpg
./f90_julia_gmt 400 400 0 0 2   0.00 -0.25 fig_julia_0400_000m025.jpg
./f90_julia_gmt 400 400 0 0 2   0.00  0.25 fig_julia_0400_000p025.jpg
./f90_julia_gmt 400 400 0 0 2   0.00  0.50 fig_julia_0400_000p050.jpg
./f90_julia_gmt 400 400 0 0 2   0.00  0.75 fig_julia_0400_000p075.jpg
./f90_julia_gmt 400 400 0 0 2   0.00  1.00 fig_julia_0400_000p100.jpg
(a,b)=(0.00, 0.00)
fig_julia_0400m000_000.jpg
(a,b)=(-1.00, 0.00) (a,b)=(-0.75, 0.00) (a,b)=(-0.50, 0.00) (a,b)=(-0.25, 0.00)
fig_julia_0400m100_000.jpg fig_julia_0400m075_000.jpg fig_julia_0400m050_000.jpg fig_julia_0400m025_000.jpg
(a,b)=(+0.25, 0.00) (a,b)=(+0.50, 0.00) (a,b)=(+0.75, 0.00) (a,b)=(+1.00, 0.00)
fig_julia_0400p025_000.jpg fig_julia_0400p050_000.jpg fig_julia_0400p075_000.jpg fig_julia_0400p100_000.jpg
(a,b)=(0.00, -1.00) (a,b)=(0.00, -0.75) (a,b)=(0.00, -0.50) (a,b)=(0.00, -0.25)
fig_julia_0400_000m100.jpg fig_julia_0400_000m075.jpg fig_julia_0400_000m050.jpg fig_julia_0400_000m025.jpg
(a,b)=(0.00, +0.25) (a,b)=(0.00, +0.50) (a,b)=(0.00, +0.75) (a,b)=(0.00, +1.00)
fig_julia_0400_000p025.jpg fig_julia_0400_000p050.jpg fig_julia_0400_000p075.jpg fig_julia_0400_000p100.jpg

3次元プロット

gfortran -o f90_julia_gmt3d f90_julia_gmt3d.f90

./f90_julia_gmt3d 200 200 0 0 2   0.00  0.00 fig_julia3d_0200m000_000.jpg
./f90_julia_gmt3d 200 200 -0.5 0.5 0.25  0.00  0.75 fig_julia3d_0200_000p075.jpg
(a,b)=(0.00, 0.00) (a,b)=(0.00, 0.75)
fig_julia3d_0200m000_000.jpg fig_julia3d_0200_000p075.jpg


pic
inserted by FC2 system