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より大きくすると上手くいかないことに注意しておこう。
|
|
|
|
|
|