複素数平面とフラクタル : 序と目次
1987年,サイエンス社から「フラクタルCGコレクション 渕上季代絵著」が出版されました。いまでもAmazon で古書が買えるようです。
Amazonの見本写真も日焼けしています。いかに古いか。使われているのは N88BASIC ですし,構造化されたコードではなく GOTO のオンパレード。コードを読むのにも一苦労です。
しかし,当時は一般ユーザーにとってはこれが標準でしたし,この本によってフラクタルの世界を知った人も多いでしょう。かくいう私もそのひとりで,書かれているコードを打ち込んで動かしました。
私が持っているのは第2版(1988年)で,NEC PC9801M2 から EPSON PC386 に乗り換えた頃。パソコンとしては当時の最速マシンと言ってもよいものでしたが,有名なマンデルブロ集合を描くのに何分かかったでしょうか,なにしろ,1行(ピクセルの列1行分)を左端から右端まで描いていく様子が目で追えるのです。
それからおよそ20年後,Windows7 上のCinderella(CindyScript)で,2秒未満で表示できるようになりました。授業で複素数平面上のフラクタルを扱った時のことです。「情報」でプログラミングの授業を行っており,「フラクタルCGコレクション」を下敷きにしてテキストを作っていました。数学は今の教育課程では複素数平面を扱っていますが,当時は行列だったので,複素数平面の基礎から教えたわけです。複素数平面(複素平面)は,今は高校の数学Ⅲで学びます。数学Ⅲを学ぶ高校生は半数に満たないでしょうが,複素数は全員が学びますし,座標平面も学ぶので,概念を知るだけなら難しくはないでしょう。マンデルブロ集合を表示するのは,Mathematica でもやったように思います。学校はずっと以前からプログラミング教育がおこなわれており,そのころは Mathematica を使っていました。そ のノートが残っています。
Mathematica でやっているのは,通常とは異なるアルゴリズムで,「DensityPlot」という関数を使います。これと同様の関数(colorplot )が,CindyScriptにあって,ほとんど同じコードで表示できます。これについては,「1 Cinderellaへのいざない:マンデルブロ集合」で説明しますが,実行時間が圧倒的に速いのです。PC386 で動かしていた頃と比べると,まさに 隔世の感 です。
図を描くのにどんなプログラミング言語を使うのか。それは「何でもよい」のですが,できれば複素数が簡単に扱えるものがよいでしょう。たとえば,Python。しかし,ここではCinderellaとCindyScript・CindyJSを強く勧めます。その理由は,第1節の「Cinderellaへのいざない:マンデルブロ集合」に書かれています。
「インドラの真珠」もフラクタルです。
マガジンとして連載しましたが,最後の方の「おばあちゃんのレシピ」からは前述の「colorplot()」を用いています。この組み込み関数があるのは Mathmatica と CindyScript のほかに知りません。(どなたかご存知でしたらご教授願います)
さあ,では複素数平面で描かれるフラクタルの世界へご案内しましょう。
目次
1 Cinderellaへのいざない:マンデルブロ集合
2 複素数平面と図形
3 反復関数系とコッホ曲線
4 再帰図形(1)
5 再帰図形とL-System
6 再帰図形(2)
7 再帰図形(3)
8 セルオートマトン
7 自己平方フラクタル(1) マンデルブロ集合
8 自己平方フラクタル(2) ジュリア集合
9 自己平方フラクタルの拡張