1#includestdio.h#includemath.h#defineN6main(){inti;floatcha;floatt[N],a[N],b[N];floath,t1,t0,r,D,H,x,m,A,p;printf(\t\t\t一维稳态导热问题\t\t);printf(已知:h=45,t1=80,t0=300,r=110,D=0.01,H=0.1(ISO)\n);h=45.0;t1=80.0;t0=300.0;r=110.0;D=0.01;H=0.1;x=H/(N-1);A=3.1415926*D*D/4;p=3.1415926*D;m=sqrt((h*p)/(r*A));printf(\n请首先假定一个温度场的初始分布,即给出各节点的温度初值:\n);for(i=0;iN;i++){scanf(%f,&t[i]);a[i]=(t[i]-t1)/(t0-t1);b[i]=a[i];}cha=1;while(cha0.0001){a[0]=1;for(i=1;iN-1;i++)a[i]=(a[i+1]+a[i-1])/(2+m*m*x*x);a[N-1]=a[N-2];cha=0;for(i=0;iN;i++)cha=cha+abs(a[i]-b[i]);cha=cha/N;}for(i=0;iN;i++)t[i]=a[i]*(t0-t1)+t1;printf(\n\n经数值离散(一阶精度的向后差分法)计算得肋片的温度分布为:\n);for(i=0;iN;i++)printf(%4.2f\t,t[i]);printf(\n\n);for(i=0;iN;i++)a[i]=b[i];cha=1;while(cha0.0001){a[0]=1;for(i=1;iN-1;i++)a[i]=(a[i+1]+a[i-1])/(2+m*m*x*x);a[N-1]=a[N-2]/(1+0.5*m*m*x*x);cha=0;for(i=0;iN;i++)cha=cha+a[i]-b[i];cha=cha/N;}for(i=0;iN;i++)t[i]=a[i]*(t0-t1)+t1;printf(\n\n经数值离散(二阶精度的元体平衡法)计算得肋片的温度分布为:\n);for(i=0;iN;i++)printf(%4.2f\t,t[i]);printf(\n\n);2#includestdio.h#includemath.h#defineN8#defineM8main(){chars;inti,j,l;floatcha,x,y;floatt[N][M],a[N][M];printf(\t\t\t二维稳态导热问题\t\t);printf(\n题目:补充材料练习题二\n);printf(\n矩形区域,边长L=W=1,假设区域内无内热源,导热系数为常熟,三个边温度为T1=0,一个边温度为T2=1,求该矩形区域内的温度分布。\n);printf(\n是否要手动对温度场赋予初值?(Y/N):);scanf(%c,&s);if(s=='y'||s=='Y'){printf(\n请首先假定一个温度场的初始分布,即给出各节点的温度初值(一行一行进行):\n);for(i=0;iN;i++)for(j=0;jM;j++)scanf(%f,&t[i][j]);}else{for(i=0;iN;i++)for(j=0;jM;j++)t[i][j]=0.5;}for(j=0;jM;j++){t[0][j]=0;t[M-1][j]=0;}for(i=0;iN;i++){t[i][0]=0;t[i][N-1]=1;}x=1.0/(N-1);y=1.0/(M-1);cha=1;while(cha0.0001){for(i=0;iN;i++)for(j=0;jM;j++)a[i][j]=t[i][j];for(i=1;iN-1;i++)for(j=1;jM-1;j++)t[i][j]=0.5*y*y*(t[i+1][j]+t[i-1][j])/(x*x+y*y)+0.5*x*x*(t[i][j+1]+t[i][j-1])/(x*x+y*y);cha=0;for(i=0;iN;i++)for(j=0;jM;j++)cha=cha+abs(a[i][j]-t[i][j]);cha=cha/(N*M);}printf(\n经数值离散计算的该矩形区域内温度分布为:\n);l=0;for(j=M-1;j=0;j--)for(i=0;iN;i++){printf(%8.4f,t[i][j]);l=l+1;if(l==N){printf(\n);l=0;}}}3#includestdio.h#includemath.h#defineN10#defineK11main(){inti,j,l;floatcha;floata,x,y,Fo,Bi;floatt[N][K],b[N][K];printf(\t\t\t一维非稳态导热问题\t\t);y=1;x=0.05/(N-1);a=34.89/(7800*712);Fo=(a*y)/(x*x);Bi=233*x/34.89;for(i=0;iN;i++)t[i][0]=1000;for(j=0;jK-1;j++){for(i=0;iN;i++)b[i][j]=t[i][j];cha=1;while(cha0.001){for(i=0;iN-1;i++){if(i==0)t[i][j+1]=Fo*(t[i+1][j]+t[i+1][j])+(1-2*Fo)*t[i][j];elset[i][j+1]=Fo*(t[i+1][j]+t[i-1][j])+(1-2*Fo)*t[i][j];t[N-1][j+1]=t[N-2][j]*(1-2*Fo*Bi-2*Fo)+2*Fo*t[N-1][j]+2*Fo*Bi*20;}cha=0;for(i=0;iN;i++)cha=cha+abs(t[i][j]-b[i][j]);cha=cha/N;}}printf(\n经数值离散计算的温度分布为:\n);l=0;for(j=K-1;j=0;j--)for(i=0;iN;i++){if(t[i][j]999.99)printf(%6.1f,t[i][j]);elseprintf(%6.2f,t[i][j]);l=l+1;if(l==N){printf(\n);l=0;}}}