/* 平行状態の計算 laplace1.c */ #include #include void main(void) { double T[11]; /* 温度 */ double Tnew[11]; /* 反復後の温度 */ double dx; /* x方向の刻み幅 */ double er; /* 修正量 */ int i; for(i=1;i<10;i++){ T[i]=5.0; } while(1){ T[0]=10.0; T[10]=0.0; for(i=1;i<10;i++){ Tnew[i]=(T[i-1]+T[i+1])*0.5; } er=0.0; for(i=1;i<10;i++){ er+=fabs(Tnew[i]-T[i]); } if(er<0.1) break; for(i=1;i<10;i++){ T[i]=Tnew[i]; } printf("%6.3lf\n",er); } for(i=0;i<11;i++){ printf("%3d %6.3lf\n",i,T[i]); } }