next up previous
Next: Source code Up: 計算機言語 I 第8回 Fractals Previous: 実際のプログラム

マンデルブロ(Mandelbrot)図形

一般に複素変数の有理型函数 $f(z)$ に対して, 漸化式 $z_{n+1} = f(z_n)$ で定まる数列の$ n \to \infty$ の挙動を調べる学問を 複素力学系といいます.

マンデルブロ図形は, $f(z)= z^2 + c,~ z_0 = 0$ として, 上の数列が 無限大に発散するか, そうでないかの境界値を描いたものです. 上のプログラムと同様に, 数列での何項目で無限大での発散が わかるかというデータを RGB に割り振って PPM ファイルを 作るプログラムが次です. このプログラムではバイナリフォーマットを 使います. 標準出力にデータを出すと訳が分かりませんので, データは mandelbrot.ppm というファイルに直接保存します. プログラム中 FILE *fp; の部分がファイルポインタ と呼ばれる変数の宣言です. この様に宣言した後 fopen を使って ファイルを開き, プログラムの中から読み書きすることができます. より詳しくは, 後期の計算機言語 II で取り上げる予定です.

次のペイジの 8-2.c がマンデルブロ図形を書くプログラムの一例です. 8-2.c では, PPMファイルのうち P6 という形式を利用しています. この形式は, バイナリー形式で RGB 値が文字ではなく数で保存されます. 従って, このファイルを cat で見ると, 画面表示が変になります.

今度はプログラムの実行だけで mandelbrot.ppm というファイルが できるはずです. やはり, ASTEC-X で X環境で Unix に login して, ImageView で見て下さい.



Next: Source code Up: 計算機言語 I 第8回 Fractals Previous: 実際のプログラム