%--------------------------------------------------------- % 複数の質点の運動を計算するプログラム %--------------------------------------------------------- function vortex global g; %------------------------------ h=0.1; % 画面表示する t の間隔 nstep=1000; % 時間発展するステップ数 % ( t = nstep * h まで時間発展されることになる) m=10; % h をルンゲクッタ法においてどれだけ分割して計算するか % (m が大きい程精度は上がるが, m に比例して計算時間がかかる) %------------------------------ q(1,1)=0; % 1番目の質点の x座標の初期値 q(2,1)=0; % 1番目の質点の y座標の初期値 q(3,1)=0; % 1番目の質点の z座標の初期値 q(4,1)=0; % 1番目の質点の x方向速度(u)の初期値 q(5,1)=0; % 1番目の質点の y方向速度(v)の初期値 q(6,1)=0; % 1番目の質点の z方向速度(w)の初期値 g(1)=1; % 1番目の質点の質量 q(1,2)=3; % 2番目の質点の x座標の初期値 q(2,2)=0; % 2番目の質点の y座標の初期値 q(3,2)=0; % 2番目の質点の z座標の初期値 q(4,2)=0.3; % 2番目の質点の x方向速度(u)の初期値 q(5,2)=0.2; % 2番目の質点の y方向速度(v)の初期値 q(6,2)=0; % 2番目の質点の z方向速度(w)の初期値 g(2)=0.001; % 2番目の質点の質量 % 質点の位置や質量の値を変えたければ, 上記の値を変えればよい. % 3番目, 4番目の渦を追加したければ, 続けて % q(1,3)=.... などとして増していけばよい. %------------------------------ % グラフィクスのための設定 gset parametric gset nokey axis([-1,4,-1,1.5,0,1],"equal") % 画面の表示範囲の設定(x,y,z の最小, 最大を順に並べる) gset view 60,30 % 視点の設定(1番目の数値が x軸まわり, 2番目の数値が z軸まわりの回転角) % gset view 0,0 % なら xy平面への投影を表示することになる. % hold on % もし軌跡を描きたいときは, このコメントを外せばよい. %------------------------------ t=0; graph3d(t,q); % 質点の位置の表示(初期値) for istep=1:nstep [t,q]=rk4u(m,h,t,q,'gfunc'); graph3d(t,q); % 質点の位置の表示 sleep(0.1); % 画面表示を何秒毎に更新するかの設定 end