WANtaroHP (f90: 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
a_f90gmt.txt実行用シェルスクリプト
f90_julia_gmt.f90Julia集合2次元描画
f90_julia_gmt3d.f90Julia集合3次元描画

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

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


描画事例

実行用スクリプト

gfortran -o f90_julia_gmt f90_julia_gmt.f90
gfortran -o f90_julia_gmt3d f90_julia_gmt3d.f90

cat < _col.cpt
0   0   0   0   2 255 255 255
2 255 255 255   4 255 255 255
F   0   0   0
B 255 255 255
EOT
./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

./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

2次元プロット

(a,b)=(0.00,0.00)
png
(a,b)=(-1.00,0.00)
png
(a,b)=(-0.75,0.00)
png
(a,b)=(-0.50,0.00)
png
(a,b)=(-0.25,0.00)
png
(a,b)=(+0.25,0.00)
png
(a,b)=(+0.50,0.00)
png
(a,b)=(+0.75,0.00)
png
(a,b)=(+1.00,0.00)
png
(a,b)=(0.00,-1.00)
png
(a,b)=(0.00,-0.75)
png
(a,b)=(0.00,-0.50)
png
(a,b)=(0.00,-0.25)
png
(a,b)=(0.00,+0.25)
png
(a,b)=(0.00,+0.50)
png
(a,b)=(0.00,+0.75)
png
(a,b)=(0.00,+1.00)
png

3次元プロット

(a,b)=(0.00,0.00)
png
(a,b)=(0.00,+0.75)
png


inserted by FC2 system