coding Shift_JIS; import GUI; import Math; import tool.Graph3D; // ================================================== // このプログラムは、ローレンツ方程式を // RK4(4次収束ルンゲ=クッタ)法で // 数値積分するプログラムです。 // 描かれる曲線は // 「ローレンツアトラクタ」として有名です。 // ================================================== // 軌道の形を左右するパラメータ double PARAM_S = 10.0; double PARAM_B = 4.0; double PARAM_R = 100.0; const int N = 3000; // グラフ点数 const int ROOP_PER_POINT = 30; // 1点ごとに何ループ計算するか const double DT = 0.0001; //1ループごとの時間進行量 // 軌道の座標 double orbitX[ N ]; double orbitY[ N ]; double orbitZ[ N ]; // メインループのON/OFF制御変数 bool mainLoopState = true; // 再プロットが必要なときにONにする変数 bool plotRequest = true; int graph; // ================================================== // メイン処理、この関数は起動時に自動的に呼ばれる // ================================================== void main( string args[] ){ // 設定画面を起動 createSettingWindow(); // 3Dグラフソフトを起動 graph = newGraph3D( 0, 0, 700, 580, "Graph Window" ); setGraph3DOption( graph, "WITH_LINES", true ); // RK4法で軌道を計算するための変数 double x, y, z; double k1_x, k1_y, k1_z; double k2_x, k2_y, k2_z; double k3_x, k3_y, k3_z; double k4_x, k4_y, k4_z; double x_stock, y_stock, z_stock; // プログラム終了時まで繰り返すループ(メインループ) while( mainLoopState ){ // リクエストがあれば、軌道を計算して再プロット if( plotRequest ){ plotRequest = false; // 初期座標をセット x = 0.1; y = 0.1; z = 0.1; int plotIndex = 0; // 軌道を計算 for( int i=0; i