1次元拡散方程式の数値計算例(C言語)
/* 一定の温度に熱せられた1次元の系が、両端が温度0にふれているという条件で解く。 T[i][j+1]=T[i][j]+0.5*(T[i+1][j]+T[i-1][j]-2.0*T[i][j]) のシミュレーション */ #includemain() { int i,j; double T[100][10000]; FILE *output; output=fopen("output3.data","w"); for(i=0;i<100;i++) { T[i][0]=100.0; //初期値として全体の温度を100とする } for(j=0;j<10000;j++) { T[0][j]=0.0; //境界条件として両端の温度を0とする T[100-1][j]=0.0; } for(j=0;j<(10000-1);j++) { for(i=1;i<(100-1);i++) { T[i][j+1]=T[i][j]+0.5*(T[i+1][j]+T[i-1][j]-2.0*T[i][j]); } } for(j=0;j<10000;j+=500) { for(i=0;i<100;i++) { /* fprintf(output,"%d %d %f\n",i,j,T[i][j]);*/ fprintf(output,"%d %f\n",i,T[i][j]); } fprintf(output,"\n"); } fclose(output); return 0; }
出力結果
Back to C Language