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
Filename | Description |
---|---|
f90_julia_gmt.txt | 2-dim. grey color plot program |
f90_julia_gmt3d.txt | 3-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) | |||
(a,b)=(-1.00, 0.00) | (a,b)=(-0.75, 0.00) | (a,b)=(-0.50, 0.00) | (a,b)=(-0.25, 0.00) |
(a,b)=(+0.25, 0.00) | (a,b)=(+0.50, 0.00) | (a,b)=(+0.75, 0.00) | (a,b)=(+1.00, 0.00) |
(a,b)=(0.00, -1.00) | (a,b)=(0.00, -0.75) | (a,b)=(0.00, -0.50) | (a,b)=(0.00, -0.25) |
(a,b)=(0.00, +0.25) | (a,b)=(0.00, +0.50) | (a,b)=(0.00, +0.75) | (a,b)=(0.00, +1.00) |
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) |