なんとなくフラクタル

2022/08/17

PC エクセル 数学

夏休みの徒然にエクセルでお絵かきをしてみました。まあ自主的自由研究とでもいいましょうか、テーマはフラクタルです。


フラクタルで超有名なのはマンデルブロー集合です。下の図のようなひょうたんをご覧になったかたも多いのではないでしょうか。


マンデルブロー集合



ちょっと数学的な説明をすると、複素数\(z_{n}\)についての数列
\[z_{0} = 0\]
\[z_{n+1} = z_{n}^{2} + c\]
が収束するかどうかを複素数\(c\)について調べたものです。

上の図は\(c\)の複素平面で、収束した点については黒で、発散した点についてはどれだけ速く発散したかで色分けをしています。

これがすごいのは単にきれいだというだけでなく、無限に細かいということです。たとえば上の図の左側、真ん中より少し上の四角で囲んだ部分を拡大すると、下のようになります。


その一部を同じように拡大すると、またひょうたんが見えてきました(下図)。


このような拡大は数学的には無限に続けることができます。いわば無限のマトリョーシカとでも言えそうな、無限に複雑な絵になっています。

ニュートンフラクタル


同じように複雑なフラクタル図形は他にも色々と知られています。その中で私が最近知ったのが、ニュートンフラクタルと呼ばれるものです。

3次方程式や4次方程式など、解析的に解くのが難しい方程式の解を近似的に求める方法として、ニュートン・ラフソン法があります。

適当な値\(x_{0}\)から始めて、\(x_{n},x_{n+1}\)と順番に計算していくと、解、すなわち\(f(x)=0\)になる\(x\)が見つかるという方法です。この漸化式は次のように表せます。
\[x_{n+1}=x_{n} - \frac{f(x_{n})}{f'(x_{n})}\]

この方法を複素数に拡張することで、複素数の解を求めることができます。
たとえば\(f(z)=z^{3}-1\)という関数がゼロになる複素数\(z\)は3つあります。
\[z=1,z=\frac{-1+\sqrt{3}}{2},z=\frac{-1-\sqrt{3}}{2}\]


これら3つの解をニュートン・ラフソン法法で求めるときの漸化式は次のようになります。
\[z_{n+1} = z_{n} - \frac{f(z_{n})}{f'(z_{n})}\]
\[f(z) = z^3 - 1\]
\[f'(z) = 3z^2\]
複素平面上のどこでも好きなところからスタートして、上の漸化式を繰り返すと、いつか、3つの解のどこかにたどり着くことができます。
※原点(0)だけは例外です。ここからスタートしてもいきなりゼロの割り算がでて破綻します。

これをゴルフに例えてみます。

グリーンに「赤」「緑」「青」の3つのホールがあるへんなゴルフ場があって、グリーンにゴルフボールを乗せると、そのボールはころころと転がって、3つのホールのどれかに転がり込みます。どのホールに入るかは、ボールを落とした場所で決まります。パターが苦手な人にやさしいゴルフ場です。ホール手前で止まったりすることはありません。

グリーンの芝生には色がついていて、どのホールに転がるかがわかるようになっています。最終的に\(z=1\)に転がる場所は「赤」、\(z=\frac{-1+\sqrt{3}}{2}\)に転がる場所は「緑」、\(z=\frac{-1-\sqrt{3}}{2}\)に転がる場所は「青」に塗り分けられています。

実際にエクセルで計算して図にすると下のようになります。小さな6角形がホールの場所を示しています。


直感的には、ボールは距離的に一番近いホールに入ると思われます。たしかに巨視的に見るとその通りで、赤いホールの近くは赤、緑ホールの近くは緑という具合になっていますが、境界線、つまりどちらのホールも同じくらいの距離の場所は、なんだかややこしくなっています。

それでは境界線を詳しくみるために、上図の四角に囲った部分を拡大してみましょう。(下図)似たような模様が現れます。


さらに拡大してみます。


拡大を繰り返します。


同じような模様が続きますが、だんだん暗くなっています。これはホールにたどり着くまでの時間(回数)が多くなっていることを意味します。

さらに拡大します。これで倍率は1000倍です。理論的には何倍にでも拡大でき、同じような模様が繰り返されます。


あまりに複雑な境界線


ニュートンフラクタルの目立った特徴は境界線が複雑なことです。境界線とは異なった領域が接するところのことで、代表的な境界線に国境があります。普通の国境は2つの国が接するところですが、中には3つの国が接するところもあります。

オランダ、ドイツ、ベルギーの3つの国のファールゼルベルグ国境(図はWikipediaより)


実はニュートンフラクタルの全ての境界は、このような赤、緑、青の3つの領域が接する境界になっています。全ての境界がです。赤と青、青と緑、赤と緑というような2つだけの境界というのはありません。

そんな馬鹿な、ここは赤と緑の境界だろうと思って拡大していくと、そこに小さな青の領域が現れ、その境界は赤、緑、青の3つが接する境界であることがわかるのです。

つまりこのゴルフ場では、青のホールから遠く離れた赤と緑の境界に見える点にボールを落としても、青に行く可能性があるのです。こんなことは普通の境界では考えられないことですが、無限に複雑なフラクタルだと、こんな境界をつくることができます。

エクセルでの描画手法


ここでどのようにエクセルでこんな図を描いたのかを簡単に説明します。

ここに示しているフラクタルの図は、エクセルのセルに色付けしたものです。エクセルで描画用のシートを用意し、全ての列の幅を0.8に、行の高さを8にしました。これでそのシートは小さな方眼紙になります。

エクセルのVBAでプログラムを作成し、500x500の点(全部で25万点)について、マンデルブロやニュートンの発散や収束の速さを計算します。そしてその数値を色に置き換え、方眼紙の500x500のセルに色をつけます。

一つ一つの計算に何十回もの繰り返しが必要で、それを25万点についてやるので、気が遠くなりそうですが、エクセルは30秒程度でさらりとやってくれます。さすがコンピュータです。

まとめ


フラクタルにはもともと関心があったのですが、ニュートンフラクタルというのは始めて知りました。そしてその境界線の複雑さ、全ての境界が「3つの領域が接する境界」と知ってびっくり。


今回は3次方程式の例でしたが、4次方程式だと4つの解があり、全ての境界は4つの領域が接する境界になります。5次だと5つです。

世界中の国境をこのようにしてしまったら、全ての国境がどこでもドアになって、どの国にでも行けるようになりそうです。そのためには人間がどんどん小さく、バクテリアサイズになる必要がありそうですが。。