微分方程式微分方程式
ローレンツアトラクタ; Lorenz Attractor

概要
ローレンツアトラクタとは以下のローレンツ方程式[1]で与えられる軌道である。
$$ \begin{eqnarray} \frac{d x}{d t} &=& -p x + p y \\ \frac{d y}{d t} &=& -x z + r x - y \\ \frac{d z}{d t} &=& x y - b z \end{eqnarray} $$
ここでは原論文に則って\(p=10, r=28, b=8/3\)とする。

ソースコード

const int DivTime = 128;

const double p = 10, r = 28, b = 8.0 / 3.0;

Func<double, Vector, Vector> lorenz = (t, v) => new Vector(p * (-v.X + v.Y), -v.X * v.Z + r * v.X - v.Y, v.X * v.Y - b * v.Z);

var ode = new SRungeKuttaMethod(new Vector(-2, -4, 10), lorenz, 1.0 / DivTime);

using(StreamWriter stream = new StreamWriter("lorenz.txt")) {
    stream.WriteLine("t,x,y,z");
    stream.WriteLine($"{ode.T},{ode.V.X},{ode.V.Y},{ode.V.Z}");

    for(int i = 0; i < DivTime * 100; i++) {
        ode.Reflash();
        stream.WriteLine($"{ode.T},{ode.V.X},{ode.V.Y},{ode.V.Z}");
    }
}

結果
ローレンツアトラクタ

関連項目
微分方程式数値解法 基本クラス
ルンゲクッタ(RK4)法


引用文献
[1] “Deterministic Nonperiodic Flow”, Edword N.Lorenz, Journal of Atmospheric Sciences, vol.20, pp.130-141, 1963

ライブラリライブラリ
確率統計確率統計
線形代数線形代数
幾何学幾何学
最適化最適化
微分方程式微分方程式
画像処理画像処理
補間補間
機械学習機械学習
クラスタリングクラスタリング
パズルゲーム・パズル
未分類未分類