#include // ローレンツ方程式のパラメータ const double S = 10.0; // σ (Sigma) const double R = 100.0; // ρ (Rho) const double B = 5.0; // β (Beta) // 微分方程式を数値的に解くパラメータ const double DT = 1.0E-5; // 時間刻み (1サイクル計算ごとの時間進行) const double TIME_MAX = 8.0; // 終了時刻 (の目安、ある程度のずれあり) const long long int LOOPS = static_cast(TIME_MAX / DT); // 必要な計算ループ回数 // 値の出力用のパラメータ const long long int OUTPUT_POINTS = 2400LL; // 出力する座標点数 (の目安、ある程度のずれあり) const long long int OUTPUT_INTERVAL = LOOPS / OUTPUT_POINTS; // ループ内での出力周期 // 軌道の座標値変数 double x = 0.1; double y = 0.1; double z = 0.1; // X方向の時間変化率を与える関数 double dxdt(double x, double y, double z){ return -S*x + S*y; } // Y方向の時間変化率を与える関数 double dydt(double x, double y, double z){ return -x*z + R*x - y; } // Z方向の時間変化率を与える関数 double dzdt(double x, double y, double z){ return x*y - B*z; } // ================================================================================ // 以下、4次ルンゲ=クッタ(RK4)法で解曲線の座標値を計算 // ================================================================================ int main() { for( long long int i=0; i