/lyapunov-fractal

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Lyapunov Fractal

リアプノフ・フラクタルはロジスティック写像をベースとしたフラクタルの一種です。 このリポジトリでは、リアプノフ・フラクタルを体感できるものを展示しています。

提供しているもの

Python用は学習用途、EXE版は利用用途で公開しています。

Python版

matplotlibを使ってリアプノフ・フラクタルを描画します。

git clone https://github.com/GRGSIBERIA/lyapunov-fractal.git

EXE版

誰でも使えるようにした実行ファイルです。 AVX2対応のため、2011年以降に発売されたCPUでのみ対応しています。

最新版

使い方

EXE版に絞って使い方を説明します。

設定ファイルの読み書き

LOAD TOML SETTINGSで設定ファイルを読み込み、SAVE TOML SETTINGSで設定ファイルを保存します。 SAVE TOML SETTINGSでこれまでの作業を保存することができるため、気に入った図形が現れたら保存することをお勧めします。

設定の仕方

WidthHeightで図形の解像度をピクセル単位で指定します。デフォルトは両方とも512です。 実際に画面に描画されるサイズは512x512で固定されます。 AVX2で動かすために解像度は8の倍数で与えてください。

Sequenceでは、ABの文字を使って文字列を作ります。 例えば、AABBABABのような文字列を与えると、それに沿ったフラクタルを作ることができます。 応用的に、AA3B4のような文字列を与えると、AAAABBBBという文字列に展開できます。 AもしくはBのあとに任意の数字を入力することで、長い文字列を作ることができます。

Number of iterationsは周期列の長さです。8の倍数で与えてください。 同じ文字列でも周期列が異なると、全く別物の図形が現れます。

a_min, a_max, b_min, b_maxは、それぞれ図形が取りうる最大値と最小値です。 画面では横軸をA縦軸をBに置き換えています。 座標の原点は左上です。 a, bはそれぞれ $[0,4]$ の範囲で値を取ります。 従って、a_min < a_max かつ b_min < b_max の範囲で値を指定してください。

Initial x valueでは、フラクタルが成長するための初期値を設定できます。 初期値による振る舞いは全く予想ができないため、デフォルトの0.5を指定することを推奨します。 ただし、値を動かすことによって結果が変わるため、慣れてきたら数字を色々と動かしてもいいと思います。

funcでは、フラクタルを生成する際に使用する関数を指定できます。 デフォルトではsimpleが指定されます。 指定できる関数にはsimplecyclicがあります。 simpleはリアプノフ・フラクタルのもとの発想で作られています。 cyclicでは、周期関数を使用するため、周期的な繰り返しが見られるフラクタルを生成できます。

constance 1constance 2はフラクタルの定数を入力します。 今のところ、cyclicのみconstance 1を使用します。 cyclicconstance 1のデフォルト値は2.7です。

フラクタルの実行と試行錯誤

設定が完了したらRUN LYAPUNOV FRACTALで図形を出力します。

出力された図形をもとに、a_min, a_max, b_min, b_maxをそれぞれ指定することで、 図形の拡大・縮小をすることができます。 T-Lボタンをクリックしてから、図形をクリックすると、図形の左上の座標を自動的にABに入力します。 また、B-Rボタンをクリックしてから、図形をクリックすると、図形の右下の座標が自動的にABに入力されます。 ABを広く見たいときは、HOMEボタンをクリックすると、自動的にABに値が入力されます。 これらのボタンで座標を自動入力したら、再びRUN LYAPUNOV FRACTALを入力すると図形が再度出力されます。

画面右側にあるSET MIN COLORボタンSET MAX COLORボタンは、それぞれ最小値と最大値の色味を指定することができます。

また、is Chaosチェックボックスがオンのときは、 $\lambda &gt; 0$ のときだけ色を出力します。 デフォルトでは、is Chaosはオフの状態になっています。 オフのほうが全体を俯瞰して見ることができます。