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])
のシミュレーション
*/

#include 

main()
{
        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

Google




BLOG
PICASAWEB
Panoramio

参考書

偏微分方程式の数値シミュレーション