フラクタル関数

概要

フラクタル関数ノードは、Mandel で画像合成をする際の大元となる 数値データを生成するノードです。 フラクタル関数は、画面を複素平面に見立てた場合の各ピクセルの座標値を元に、ある計算式に従って複素数(実数2つの組であれば、複素数でなくてもかまいませんが)の列を計算します。

たとえば、マンデルブロ集合の場合、 あるピクセルの座標値が(複素数で) p0 だったとすると

z0 = 0
z1 = z02 + p0
z2 = z12 + p0
z3 = z22 + p0
・・・
zn + 1 = zn2 + p0 (|zn| > 2 となるまで)

のように複素数の列が計算されます。 複素数の列は、フラクタル関数に固有のある条件(マンデルブロ集合の場合は |zn| > 2)を満たすまで計算を続けます。 p0 によっては、いつまでも条件を満たさないことがあるので、 この場合は適当な n で計算を打ち切ります。

このフラクタル関数は、単に複素数の列を計算するだけのものです。 フラクタル関数で計算した複素数の列から、画像生成に使う数値データを 取り出すのが次の項で説明する計算関数 になります。 計算関数は、たとえば複素数列の最終項の n の値などを出力します。

操作方法

フラクタル関数は、フラクタル関数ノードのコンボボックスで選択します。 フラクタル関数によってサポートしている計算関数が異なるため、 選択したフラクタル関数で使えない計算関数があった場合には警告が表示されます。

フラクタル関数の設定を変更する場合は、フラクタル関数ノードの 計算関数エリア以外をダブルクリックするか、右クリックして表示されるメニューから [プロパティ]を選択します。

フラクタル関数の説明

Mandel では、次のフラクタル関数を使うことができます。

Mandelbrot Set

よく知られるマンデルブロ集合(そのまんま日本語にしただけですけど)です。計算式は

z0 = 0
zn + 1 = zn2 + p0
(|zn| > 2 となるまで)

のようになります。 Mandelbrot Set では、発散しない点(条件を満たさず、計算を打ちきった点)の集合が フラクタル、つまり自己相似的な形状になります。 Mandelbrot Set というのは、本来はこの発散しない点の集合を指します。
なお、この発散しない点の集合の形状だけでも面白いのですが、 計算関数により面白い図形ができるのは外側の発散する点の集合側であることが多いようです。

Mandelbrot Set(z^3+c)

Mandelbrot Setの次数を2から3にしたものです。

z0 = 0
zn + 1 = zn3 + p0
(|zn| > 2 となるまで)

Mandelbrot Set(z^n+c)

Mandelbrot Setの次数を自由に設定できるようにしたものです。

z0 = 0
zn + 1 = znN + p0
(|zn| > 2 となるまで)

Nを2か3に設定すれば上述の2つと同じ結果になりますが、 計算速度は落ちます。

ちなみに n乗は rn (cos nt + isin nt) で計算しています。 自然数以外の n も設定できますが、この式に無理矢理放り込んでいるだけです。

Julia Set

いわゆる自己平方フラクタルです。 これを Julia Set と名付けるのは本当は正しくない気がしますが、 そう呼ばれることが多いのでそうしてあります。 計算式は以下になります。

z0 = p0
zn + 1 = zn2 + c0
(|zn| > 2 となるまで)

ここで c0 は任意の定数です。 Mandelbrot Set と式は似ていますが、Mandelbrot Set では初期値が常に0で、毎回各点の座標値 p0 を 足していくのに対し、Julia Set では初期値が各点の座標値で、毎回定数 c0 を足していきます。 Julia Set では、c0 によって発散しない点が出現したりしなかったりします。

一般に、Mandelbrot Set の発散しない点(本来の意味での Mandelbrot Set に属する点)の 座標値を c0 に選んだ場合は Julia Set に発散しない点が出現します。 逆に、Mandelbrot Set の発散する点をc0 に選んだ場合は、 Julia Set に発散しない点は出現しません。

Julia Set(z^n+c)

Julia Setの次数を自由に設定できるようにしたものです。

z0 = p0
zn + 1 = znN + c0
(|zn| > 2 となるまで)

Newton z^3-1

複素変数の方程式 z3 - 1 = 0 に Newton-Raphson 法を適用したものです。

Newton-Raphson 法は、非線形方程式の反復解法の一つで、 簡単に説明すると次のようにして方程式の解を求めます。

  1. 方程式を f(z) = 0 とする
  2. 初期値 z0をテキトウに選ぶ
  3. zn + 1 = zn - f(zn) / df(zn) ; df(z) は f(z) の導関数
  4. f(zn) → 0 となったときの znが解

イメージとしては直線で近似して順次解に近づく、という方法です。

このフラクタル関数は、初期値を各点の座標値 p0 とし、 Newton-Raphson 法によって順次計算される zn を 結果として出力します。

Newton z^n-1

複素変数の方程式 zN - 1 = 0 に Newton-Raphson 法を適用したものです。

Copyright(C) 2001 HOSO