Julia 集合の定義の一般化
Julia 集合は,以下の漸化式で定義される複素数列 $\{z_n\}$ において,与えられた複素数 $c$ に対し, $n\rightarrow\infty$ の極限において無限大に発散しないという条件を満たす複素数 $z_0$ が作る集合として定義される.
ここで上式の指数部を一般化し,以下のように表現する.
ここで, $s=s_r+i\cdot s_i$ ,$c=a+i\cdot b$ として, $(s_r,s_i)$ および $(a,b)$ を既知の値として入力し, $z_0$ の値の変化に伴う収束性を評価する.
数値計算において複素数を扱う必要があるが,ここでは入力値は全て実数部と虚数部に分けて計算するが,収束計算では Fortran の複素数変数を用い,プログラムの記載を省力化している. これは,複素数を実数部と虚数部に分けて別途計算する場合,極座標変換が必要となり,煩雑な角度計算が必要となることを避けるためである.
プログラム
Programs
Filename | Description |
---|---|
a_f90gmt.txt | 実行用シェルスクリプト |
f90_julia2_gmt.f90 | Julia集合描画 |
Fortranプログラム実行用コマンド
./f90_julia2_gmt jw ih x0 y0 rr sr si a b filename
jw | 作図の水平方向分割数(整数値) |
ih | 作図の鉛直方向分割数(jwと同じ整数値) |
x0 | 作図の中心座標のx値(実数) |
y0 | 作図の中心座標のy値(実数) |
rr | 作図半径(実数) |
sr | 指数実数部 sr の値(実数入力) |
si | 指数虚数部 si の値(実数入力) |
a | 定数実数部 a の値(実数入力) |
b | 定数虚数部 b の値(実数入力) |
filename | 出力画像ファイル名(jpg) |
描画事例
実行用スクリプト事例
以下の事例では,画像サイズを 800 x 800 とし,作図範囲は,原点 (0, 0) を中心として,横軸 (-2, 2),縦軸 (-2, 2)としている. 画像サイズについては,プログラム内で入力値に1を加えて画像サイズを確定しているため,ここでの入力値は 799 x 799 としている.
色指定は,下のスクリプト中,echo で生成している GMT のカラーパレット(ファイル:_col.cpt )により行っている. この事例では,色相環の色順に則り,12 色を定義し,発散確定までの繰り返し数を 12 で除して余りの値の対応させて色を割り当てている.
gfortran -o f90_julia2_gmt f90_julia2_gmt.f90 cat << EOT > _col.cpt 0 255 0 0 1 255 0 0 1 255 125 0 2 255 125 0 2 255 255 0 3 255 255 0 3 125 255 0 4 125 255 0 4 0 255 0 5 0 255 0 5 0 255 125 6 0 255 125 6 0 255 255 7 0 255 255 7 0 125 255 8 0 125 255 8 0 0 255 9 0 0 255 9 125 0 255 10 125 0 255 10 255 0 255 11 255 0 255 11 255 0 125 12 255 0 125 F 0 0 0 B 0 0 0 EOT ./f90_julia2_gmt 799 799 0 0 2 1.0 0.0 0.50 0.00 fig_julia2_s10_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.1 0.0 0.50 0.00 fig_julia2_s11_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.2 0.0 0.50 0.00 fig_julia2_s12_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.3 0.0 0.50 0.00 fig_julia2_s13_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.4 0.0 0.50 0.00 fig_julia2_s14_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.5 0.0 0.50 0.00 fig_julia2_s15_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.6 0.0 0.50 0.00 fig_julia2_s16_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.7 0.0 0.50 0.00 fig_julia2_s17_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.8 0.0 0.50 0.00 fig_julia2_s18_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 1.9 0.0 0.50 0.00 fig_julia2_s19_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.0 0.0 0.50 0.00 fig_julia2_s20_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.1 0.0 0.50 0.00 fig_julia2_s21_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.2 0.0 0.50 0.00 fig_julia2_s22_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.3 0.0 0.50 0.00 fig_julia2_s23_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.4 0.0 0.50 0.00 fig_julia2_s24_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.5 0.0 0.50 0.00 fig_julia2_s25_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.6 0.0 0.50 0.00 fig_julia2_s26_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.7 0.0 0.50 0.00 fig_julia2_s27_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.8 0.0 0.50 0.00 fig_julia2_s28_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 2.9 0.0 0.50 0.00 fig_julia2_s29_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 3.0 0.0 0.50 0.00 fig_julia2_s30_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 3.3 0.0 0.50 0.00 fig_julia2_s33_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 3.5 0.0 0.50 0.00 fig_julia2_s35_0799p050_000.jpg ./f90_julia2_gmt 799 799 0 0 2 4.0 0.0 0.50 0.00 fig_julia2_s40_0799p050_000.jpg
描画事例
以下に (a, b) = (0.5, 0)とし,指数部 s の値を (1.0, 0) から (4.0, 0) まで変化させた場合の描画事例を示す. 卵の中に細胞が誕生し,分裂していくような雰囲気の画像となっている. 描画範囲は全画像同一で,横軸 (-2, 2),縦軸 (-2, 2)である.