/* 熱伝導の計算 kakusan.c */ #include #include void main(void) { double T[11]; /* 温度 */ double Tnew[11]; double dx; /* x方向の刻み幅 */ int i; double K; double tm; double dt; dx=1.0; K=0.1; dt=0.1; for(i=0;i<11;i++){ T[i]=0.0; Tnew[i]=0.0; } tm=0.0; while(tm<100.0){ T[0]=Tnew[0]=10.0; T[10]=Tnew[10]=0.0; for(i=1;i<10;i++){ Tnew[i]=(K*dt/dx/dx)*(T[i-1]-2.0*T[i]+T[i+1])+T[i]; } printf("Time:%6.3lf\n",tm); for(i=0;i<11;i++){ printf("x=%4.1lf T=%8.3lf\n",(double)i*dx,Tnew[i]); } for(i=1;i<10;i++){ T[i]=Tnew[i]; } tm+=dt; } }