【フラクタル理論】
モクモクと盛り上がり形を変える夏の入道雲、鳴門の渦潮など自然の厳しさと美しさを表現するのは文学や芸術の世界です。
ガリレオ ガリレーが「自然は数学で書かれた偉大な書物である」と言っていますが、数学者は複雑な現象を単純な公式で表現する事に努力してきました。
ニュートンは、万有引力の法則 F=Gm1m2/r*r と慣性の法則で惑星の運動を始めあらゆる物体の運動を解明し、また、アインシュタインは物体のエネルギーは質量に比例する e=mc*c と言う簡単な公式で特殊相対性理論を発見しました。
1970年代になって、自然の姿を数学で描写するフラクタル理論が米国のマンデルブロ博士によって提唱されました。この理論は、経済の世界で変動する株価を予想する試みからフラクタルの観念を生み出す結果となったことは興味あることです。
フラクタル理論は科学研究のための道具として使われ、次いで工学で新しい次世代の新しい発明品へと応用されて行くでしょう。この理論は数学以外の分野でも広く注目されています。
医学分野では血管がフラクタル構造をもっているといわれており、また、数学では捕らえきれないといわれている人間の感性即ち人が美しいと感じている世界もフラクタルで解明されつつあります。
単純な数式から複雑な結果がえられるということは、逆に言えば複雑な現象も単純な式で表現できるということです。このような観点から今まで解明できなかった自然現象をフラクタル理論で解明できるのではないかということで、広く注目されて居るわけです。
【マンデルブロー集合とジュリア集合】
1980年 IBM のワトソン研究所でマンデルブロ博士がコンピュータを使って Z=Z*Z+C の計算をしました。実はこの式は 1917年フランスの数学者ジュリアが複素数に関する論文のなかに述べていたものです。
マンデルブロはもっとも単純な Z=0 から計算を初め、フラクタル理論を世界で初めて見ました。
計算範囲と計算回数を上げて(拡大)いくと次々と変わった模様が現れて無限に続きます。
この Z=0 から初めて得られる集合は発見者の名前をとってマンデルブロ集合と呼ばれています。
博士の名前をとった、マンデルブロ集合の図形はフラクタル理論のすべてが集約されています。この図形の最大の特徴はその境界線にあり、境界線の部分を拡大して描画するとどんなに拡大しても次々と同じような複雑な形が現れて来ます。拡大率を徐々に上げてマンデルブロ集合の美しいと思われる座標を発見したときの喜びは格別です。
計算の初期値 Z=0 にしないである値(ジュリア定数)を与えて計算すればまた変わった集合が得られます。
この集合はジュリア集合と呼ばれて居ます。ジュリア集合の特徴は与えた定数によって図形が激しく変化し、美しい図形を与える定数を発見する喜びがあります。
【収斂と発散】
マンデルブロ集合は簡単な複素2次函数 Z=Z*Z+C から導かれて居ます。この簡単な数式で掛け算と足し算を繰り返すのですが、計算の回数が膨大なためコンピュータがでてきて初めて可能となりました。
複素2次函数 Z=Z*Z+C ただし C=a+bj
1. Zの初期値をゼロとして計算を始めると Z0=0*0+C=a+bj
2. Z0 を新しいZとして計算すると Z1=(a+bj)*(a+bj)+(a+bj)=a*a+2*a*bj-b*b+a+bj=a*a-b*b+a+(2*a+1)*bj
3. Z1 を新しいZとして計算して
Z2 を求める
4. 以下同じ繰り返し計算を行う。
a と b の値をいろいろ変えて計算を繰り返すと、
Zの値が無限に大きくなる場合(発散)
Zの値がある値に収斂する場合 の2つの場合が発生します。
例: a=0.1, b=0.1 と a=1, b=1 について計算して複素数の絶対値の2乗の値を下表に示します。
a=0.1 b=0.1 の場合 a=1 b=1 の場合
Z0 0.02
2
Z1 0.0244 10
Z2 0.2987536 130
Z3 3.64800659671296E-02 15210
Z4 4.39397574086168E-02 230172930
収斂する 発散する
こんな計算は、電卓などではとてもやっておられません。パソコンがあって初めて可能だと思います。 パソコンのなかった時代にコツコツ計算した先達の努力には頭が下がります。
コンピューターで無限に反復計算をすることは無理なので計算回数をある値に設定して終了させます。
Z の値が 2 より大きくなるとこれは無限大になるということが証明されて居ます。 Z が 2 を越えるまでの計算回数に対応して色を決めておき、複素平面の(a+bj)点を彩色する。( 1〜10:青色 11〜20:赤色 21〜30:緑色 31〜40:空色等)。前もって決めておいた最大計算回数に至っても発散しない時は、収斂するものとして黒色で彩色する。
僕のHP画像の右側に計算回数に対する色指定が表示されています。このようにして複素平面のすべての点について計算彩色して得られた画像がマンデルブロ集合の画像です。
不思議なことに画像はaが−3から2の間でbが−2から2の間に入ってしまいます。複素平面のスケールを小さくとって無限に拡大する事が可能です。
【プログラムのポイント】
パソコンでは複素数の計算ができないので、式を変形し実数部と虚数部に分けて計算する方法をとります。
Z = x + yj C = a + bj
1.複素2次函数 Z = Z * Z + C
Z = ( x + yj ) ( x + yj ) + ( a + bj ) = ( x * x - y * y + 2xyj ) + ( a + bj ) = ( x * x - y * y + a ) + j ( 2xy + b )
実数部
( x * x - y * y + a )
虚数部 (
2xy + b )
2.超越関数 Z = C * exp(Z)
Z = ( a + bj ) * exp(
x + yj ) =exp(x) * ( a + bj ) * [ cos(y) + j・sin(y) ]
= a * exp(x) * cos(y) - b * exp(x) *
sin(y) + a * exp(x) * sin(y)・j + b * exp(x) * cos(y)・j
実数部 exp(x) * [ a * cos(y)
- b * sin(y) ]
虚数部 exp(x)
* [ a * sin(y) + b * cos(y) ]
3.超越函数 Z = C * sin(Z)
Z = ( a + bj ) * sin(
x + yj ) = ( a + bj ) * [ sin(x) * cosh(y) + j・cos(x) * sinh(y)
]
= a * sin(x) * cosh(y) - b * cos(x) *
sinh(y) + [ a * cos(x) * sinh(y) + b * sin(x) * cosh(y) ]・j
実数部 a * sin(x) * cosh(y)
- b * cos(x) * sinh(y)
= a * sin(x) * [ exp(y) + exp(-y) ]/ 2 - b
* cos(x) * [ exp(y) - exp(-y ) ] / 2
虚数部 a * cos(x) * sinh(y) + b * sin(x)
* cosh(y)
= a * cos(x) * [ exp(y) - exp(-y) ] /2
+ b * sin(x) * [ exp(y) + exp(-y) ] / 2