#include #include #include #define NMAX 50 //粒子の個数 #define TMAX 10000 //最大時間 #define LX 10 //シミュレーション領域の横x方向長さ #define LY 10 //シミュレーション領域の縦y方向の長さ #define h 0.001 //時間刻み幅 double x_old[NMAX],y_old[NMAX],x[NMAX],y[NMAX]; //粒子の座標 double vx[NMAX],vy[NMAX]; //粒子の速度 double fx[NMAX],fy[NMAX]; //粒子に加わる力 void force(); //粒子に加わる力を求める関数 int roundoff(double n); //四捨五入する関数 void note(int time); //粒子の座標をファイルに書き込む関数 int main() { int i; int time; double x_new,y_new; double k; FILE *energy; energy=fopen("energy.dat","w"); //運動エネルギーのデータ用 /*粒子の初期配置と初速度を決める*/ for(i=0;iiの分子対の計算だけで済む*/ for(i=0;i=0) { a=(int)(n+0.5); } else { a=(int)(n-0.5); } return a; } /*粒子の座標をファイルに書き込む関数*/ void note(int time) { int i; char str[256]; sprintf(str, "time%d.dat",time); //ファイル名に、time値を含めるために必要な処理 /*粒子の座標を記録するファイルの作成*/ FILE *output; output=fopen(str,"w"); for(i=0;i