みその計算物理学
ホーム はじめに リンク集
1次元拡散方程式の数値計算例(Java)
  • プログラムソース

    一定の温度に熱せられた1次元の系が、両端が温度0にふれているという条件で解く。

    import java.io.*;
    
    class Kakusan
    {
            public static void main()
            {
                    int i,j;
                    double T[][]=new double[100][1000];
    
                    for(i=0;i<100;i++) 
                    {
                            T[i][0]=100.0;                  //初期値として全体の温度を100とする
                    }
    
                    for(j=0;j<1000;j++) 
                    {
                            T[0][j]=0.0;                    //境界条件として両端の温度を0とする
                            T[100-1][j]=0.0;
                    }
    
                    for(j=0;j<(1000-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*T[i][j]);
                            }
                    }
    
                    try
                    {
                            FileWriter fw=new FileWriter("output.data");
    
                            for(i=0;i<100;i++) 
                            {
                                    for(j=0;j<1000;j++) 
                                    {
                                            fw.write( + i + " " + j + " " + T[i][j] + "\n");
                                    }
                                    fw.write("\n");
                            }
                            fw.close();
                    }
                    catch(Exception e)
                    {
                            System.out.println(e);
                    }
    
            }
    }
    
  • GNUPLOT出力結果

    一定の温度に熱せられた1次元の系が、両端が温度0にふれてることにより徐々に端から温度が下がるのがわかる。
    収束条件よりこのプログラムの場合、i と j の変化量が1だからプログラム中の熱伝導係数にあたる値を0.5より大きくすると上手くいかないことに注意しておこう。