暖通计算机编程.docx
《暖通计算机编程.docx》由会员分享,可在线阅读,更多相关《暖通计算机编程.docx(22页珍藏版)》请在冰豆网上搜索。
![暖通计算机编程.docx](https://file1.bdocx.com/fileroot1/2023-2/2/0c2c6bf4-7cd3-4f4f-bfa7-68d08eaae9f0/0c2c6bf4-7cd3-4f4f-bfa7-68d08eaae9f01.gif)
暖通计算机编程
1.常用算法编程
(1)用迭代法求方程
的根,计算精度
(迭代公式为:
)。
程序步骤如下:
#include"stdio.h"
#include"conio.h"
#include"math.h"
main()
{
intn;
floatx0,x;
x0=0.0;
x=0.0;
for(n=1;;n++)
{x=1.0/(x0*x0+1.0);
if(fabs(x-x0)<0.000001)
{printf("n=%d,x=%f",n,x);break;}
else
x0=x;
}
getch();
}
(2)用二分法求
,搜索区间为[2,3],计算精度要求
。
程序步骤如下:
#include"stdio.h"
#include"conio.h"
#include"math.h"
main()
{
doublea,b,a1,b1,y0,x0,c;
a=2.0;
b=3.0;
a1=a*a*a-2.0*a-5.0;
b1=b*b*b-2.0*b-5.0;
if(a1*b1>0.0)printf("nokeytotheproblem?
\n");
for(;;)
{x0=(a+b)/2.0;
y0=x0*x0*x0-2.0*x0-5.0;
if(y0*a1>0.0)
a=x0,a1=y0;
else
b=x0,b1=y0;
c=b-a;
if(c<0.0000001)
{printf("x=%.10f\n",x0);
break;
}
}
printf("a=%f,b=%f",a,b);
getch();
}
(3)也只列表函数如表1.2表示,用分段抛物线插值求在
时的y值。
表1.2列表函数
X
0.20
0.24
0.28
0.32
0.36
0.40
Y
0.19867
0.23770
0.27636
0.31457
0.35227
0.38947
编程步骤如下:
#include
main()
{
inti;
floatx,y,a[6],b[6],x1,x2,x3,y1,y2,y3,c,c1,c2,d,d1,d2,f,f1,f2;
a[0]=0.20,b[0]=0.19867;
a[1]=0.24,b[1]=0.23770;
a[2]=0.28,b[2]=0.27636;
a[3]=0.32,b[3]=0.31457;
a[4]=0.36,b[4]=0.35227;
a[5]=0.40,b[5]=0.38947;
x1=a[0],x2=a[1],x3=a[2];
y1=b[0],y2=b[1],y3=b[2];
printf("enterax:
\n");
scanf("%f",&x);
for(i=2;i<5;i++)
{
if(x>=a[i])
x1=a[i-1],x2=a[i],x3=a[i+1],y1=b[i-1],y2=b[i],y3=b[i+1];
else
if(x>=a[5])
x1=a[3],x2=a[4],x3=a[5],y1=b[3],y2=b[4],y3=b[5];
}
c1=(x-x2)*(x-x3);
c2=(x1-x2)*(x1-x3);
c=(c1/c2)*y1;
d1=(x-x1)*(x-x3);
d2=(x2-x1)*(x2-x3);
d=(d1/d2)*y2;
f1=(x-x1)*(x-x2);
f2=(x3-x1)*(x3-x2);
f=(f1/f2)*y3;
y=c+d+f;
printf("c=%f,d=%f,f=%f\n",c,d,f);
printf("x=%f,y=%f",x,y);
getch();
}
2、完成下列空气状态参数换算的编程
(1)由空气温度求相应的饱和水蒸气分压力;
#include
#include
main()
{
floatT,t,z,a1,a2,a3,a4,a5,a6,p1,p2,z1,p3,z2,p4,s,p,ps,y;
printf("inputt=");
scanf("%f",&t);
printf("\n");
T=t+273.16;
z=273.16/T;
a1=-10.79574;
a2=5.02808;
a3=-1.50475e-4;
a4=8.2969;
a5=0.42875e-3;
a6=-4.76955;
p1=a1*(z-1);
y=log10(z);
p2=a2*y;
z1=a4*(1-(1/z));
p3=a3*(pow(10,z1)-1);
z2=a6*(z-1);
p4=a5*(pow(10,z2)-1)-2.2195768;
s=p1+p2+p3+p4;
p=760;
ps=p*pow(10,s);
printf("ps=%.10f\n",ps);
getch();
}
(2)由水蒸气分压力求空气露点温度;
#include
#include
main()
{
floatpv,td,y;
scanf("%f",&pv);
y=log(pv);
if(pv>4.581)
td=-18.807+11.005*y+0.8888*y*y;
else
td=-19.237+11.533*y+0.72733*y*y;
printf("%.10f\n",td);
getch();
}
(3)由温度和相对湿度求含湿量及其余参数
#include
#include
main()
{
floatT,t,z,a1,a2,a3,a4,a5,a6,p1,p2,z1,p3,z2,p4,s,p,ps,y,j,pv,d;
printf("inputt=");
scanf("%f",&t);
printf("\n");
T=t+273.16;
z=273.16/T;
a1=-10.79574;
a2=5.02808;
a3=-1.50475e-4;
a4=8.2969;
a5=0.42875e-3;
a6=-4.76955;
p1=a1*(z-1);
y=log10(z);
p2=a2*y;
z1=a4*(1-(1/z));
p3=a3*(pow(10,z1)-1);
z2=a6*(z-1);
p4=a5*(pow(10,z2)-1)-2.2195768;
s=p1+p2+p3+p4;
printf("inputp=");
scanf("%f",&p);
printf("\n");
ps=p*pow(10,s);
printf("ps=%.10f\n",ps);
printf("inputj=");
scanf("%f",&j);
printf("\n");
pv=j*ps/100;
printf("pv=%f\n",pv);
d=622*pv/(p-pv);
printf("d=%f",d);
getch();
}
(4)由空气焓值求湿球温度;
#include
#include
main()
{
intn;
floati,tw,tw1,tw2,p,pv1,pv2,y,y1,y2,d1,d2,i1,i2,g;
floatpvsf(floatx,floaty);
printf("inputi=");
scanf("%f",&i);
printf("\n");
printf("inputp=");
scanf("%f",&p);
printf("\n");
y=log(i);
if(i>6.443)
{tw=6.0163-(11.061*y)+(8.117*y*y)-(0.70713*y*y*y);
printf("%f\n",tw);}
else
if(i<=0)
{
tw1=-5;
for(n=1;n<20;n++)
{pv1=pvsf(tw1,p);
d1=622*pv1/(p-pv1);
i1=0.24*tw1+0.001*d1*(597.3+0.441*tw1);
y1=i-i1;
tw2=tw1-0.5;
pv2=pvsf(tw2,p);
d2=622*pv2/(p-pv2);
i2=0.24*tw2+0.001*d2*(597.3+0.441*tw2);
y2=i-i2;
if(y1*y2<0)
{g=fabs(y1/y2);tw=(tw2*g+tw1)/(1+g);printf("%f",tw);break;}
else
{if(y1*y2==0)
{if(y1==0){tw=tw1;printf("%f",tw);break;}
else{tw=tw2;printf("%f",tw);break;}
}
else{tw1=tw2;y1=y2;}
}
}
}
else
{tw=-3.171+2.5641*y+1.2776*y*y+0.45779*y*y*y;
printf("%f\n",tw);}
getch();
}
floatpvsf(floatx,floaty)
{floatT,z,a1,a2,a3,a4,a5,a6,p1,p2,z1,p3,z2,p4,s,ps;
T=x+273.16;
z=273.16/T;
a1=-10.79574;
a2=5.02808;
a3=-1.50475e-4;
a4=8.2969;
a5=0.42875e-3;
a6=-4.76955;
p1=a1*(z-1);
p2=a2*log10(z);
z1=a4*(1-(1/z));
p3=a3*(pow(10,z1)-1);
z2=a6*(z-1);
p4=a5*(pow(10,z2)-1)-2.2195768;
s=p1+p2+p3+p4;
ps=y*pow(10,s);
return(ps);
}
(5)由干球温度和湿球温度求其余参数;
#include
#include
main()
{
intn;
floatt,tw,p,ps,ds,pv,td,y,i,v,h1,c1,d;
floatpvsf(floatx,floaty),dpf(floatz);
printf("inputt=");
scanf("%f",&t);
printf("\n");
printf("inputtw=");
scanf("%f",&tw);
printf("\n");
printf("inputp=");
scanf("%f",&p);
printf("\n");
ps=pvsf(tw,p);
if(t-tw<=0){td=tw;
pv=ps;
d=622*pv/(p-pv);
v=2.1552*(273.16+t)*(1+0.0016078*d)/p;
i=0.24*t+(597.3+0.441*t)*d*0.001;
y=pv/pvsf(t,p);
printf("td=%f\n",td);
printf("pv=%f\n",pv);
printf("d=%f\n",d);
printf("i=%f\n",i);
printf("v=%f\n",v);
printf("y=%f\n",y);
}
else
{
ds=622*ps/(p-ps);
if(tw<=0){td=tw;
pv=ps;
d=ds;
v=2.1552*(273.16+t)*(1+0.0016078*d)/p;
i=0.24*t+(597.3+0.441*t)*d*0.001;
y=pv/pvsf(t,p);
printf("td=%f\n",td);
printf("pv=%f\n",pv);
printf("d=%f\n",d);
printf("i=%f\n",i);
printf("v=%f\n",v);
printf("y=%f\n",y);
}
else
{
h1=597.3+0.441*t-tw;
c1=0.001*(597.3-0.559*tw)*ds-0.24*(t-tw);
d=c1/0.001/h1;
pv=d*p/(622+d);
d=622*pv/(p-pv);
v=2.1552*(273.16+t)*(1+0.0016078*d)/p;
i=0.24*t+(597.3+0.441*t)*d*0.001;
td=dpf(pv);
y=pv/pvsf(t,p);
printf("td=%f\n",td);
printf("pv=%f\n",pv);
printf("d=%f\n",d);
printf("i=%f\n",i);
printf("v=%f\n",v);
printf("y=%f\n",y);
}
}
getch();
}
floatpvsf(floatx,floaty)
{floatT=0.0,z=0.0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,p1=0.0,p2=0.0,z1=0.0,p3=0.0,z2=0.0,p4=0.0,s=0.0,ps=0.0;
T=x+273.16;
z=273.16/T;
a1=-10.79574;
a2=5.02808;
a3=-1.50475e-4;
a4=8.2969;
a5=0.42875e-3;
a6=-4.76955;
p1=a1*(z-1);
p2=a2*log10(z);
z1=a4*(1-(1/z));
p3=a3*(pow(10,z1)-1);
z2=a6*(z-1);
p4=a5*(pow(10,z2)-1)-2.2195768;
s=p1+p2+p3+p4;
ps=y*pow(10,s);
return(ps);
}
floatdpf(floatz)
{
floattd=0.0,y=0.0;
y=log(z);
if(z>4.581)
td=-18.807+11.005*y+0.8888*y*y;
else
td=-19.237+11.533*y+0.72733*y*y;
return(td);
}
(6)由干球温度和露点温度求其余参数。
#include
#include
main()
{
intn;
floatt,td,p,pv,ps,y,d,v,i,tw;
floatpvsf(floatx,floaty),dpf(floatz),wbf(floath,floatp);
printf("inputt=");
scanf("%f",&t);
printf("\n");
printf("inputtd=");
scanf("%f",&td);
printf("\n");
printf("inputp=");
scanf("%f",&p);
printf("\n");
if((t-td)<0){
printf("111111\n");
pv=pvsf(t,p);
ps=pvsf(td,p);
y=pv/ps;
d=622*pv/(p-pv);
v=2.1552*(273.16+t)*(1+0.0016078*d)/p;
i=0.24*t+(597.3+0.441*t)*d*0.001;
if(i<=0){tw=td;
printf("tw=%f\n",tw);
printf("pv=%f\n",pv);
printf("d=%f\n",d);
printf("i=%f\n",i);
printf("v=%f\n",v);
printf("y=%f\n",y);
}
else{
tw=wbf(i,p);
printf("tw=%f\n",tw);
printf("pv=%f\n",pv);
printf("d=%f\n",d);
printf("i=%f\n",i);
printf("v=%f\n",v);
printf("y=%f\n",y);
}
}
else
{printf("2222222\n");
pv=pvsf(td,p);
ps=pvsf(t,p);
y=pv/ps;
d=622*pv/(p-pv);
v=2.1552*(273.16+t)*(1+0.0016078*d)/p;
i=0.24*t+(597.3+0.441*t)*d*0.001;
if(i<=0){printf("333333\n");
tw=td;
printf("tw=%f\n",tw);
printf("pv=%f\n",pv);
printf("d=%f\n",d);
printf("i=%f\n",i);
printf("v=%f\n",v);
printf("y=%f\n",y);
}
else{printf("444444\n");
tw=wbf(i,p);
printf("tw=%f\n",tw);
printf("pv=%f\n",pv);
printf("d=%f\n",d);
printf("i=%f\n",i);
printf("v=%f\n",v);
printf("y=%f\n",y);
}
}
getch();
}
floatpvsf(floatx,floaty)
{floatT=0.0,z=0.0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,p1=0.0,p2=0.0,z1=0.0,p3=0.0,z2=0.0,p4=0.0,s=0.0,ps=0.0;
T=x+273.16;
z=273.16/T;
a1=-10.79574;
a2=5.02808;
a3=-1.50475e-4;
a4=8.2969;
a5=0.42875e-3;
a6=-4.76955;
p1=a1*(z-1);
p2=a2*log10(z);
z1=a4*(1-(1/z));
p3=a3*(pow(10,z1)-1);
z2=a6*(z-1);
p4=a5*(pow(10,z2)-1)-2.2195768;
s=p1+p2+p3+p4;
ps=y*pow(10,s);
return(ps);
}
floatdpf(floatz)
{
floattd=0.0,y=0.0;
y=log(z);
if(z>4.581)
td=-18.807+11.005*y+0.8888*y*y;
else
td=-19.237+11.533*y+0.72733*y*y;
return(td);
}
floatwbf(floath,floatp)
{
floattw1=0.0,tw2=0.0,pv1=0.0,pv2=0.0,d1=0.0,d2=0.0,i1=0.0,i2=0.0,y=0.0,y1=0.0,y2=0.0,z=0.0,tw=0.0,k=0.0;
if(h<=0){
tw1=-5;
pv1=pvsf(tw1,p);
d1=622*pv1/(p-pv1);
i1=0.24*tw1+(597.3+0.441*tw1)*d1*0.001;
y1=h-i1;
do
{tw2=tw1-0.5;
pv2=pvsf(tw2,p);
d2=622*pv2/(p-pv2);
i2=0.24*tw2+(597.3+0.441*tw2)*d2*0.001;
y2=h-i2;
if(y1*y2<0){z=fabs(y1/y2);tw=(tw2*z)/(1+z);printf("tw=\n",tw);k=1;}
else
if(y1*y2==0){
if(y1==0){tw=tw1;printf("tw=\n",tw);k=1;}
else{tw=tw2;printf("tw=\n",tw);k=1;}
}
else{tw1=tw2;y1=y2;k=0;}
}
while(k==0);
}
else{y=log(h);
if(h>6.443){tw=6.0163-11.061*y+8.117*y*y-0.70713*y*y*y;}
else{tw=-3.171+2.5641*y+1.2776*y*y+0.45779*y*y*y;}
}
return(tw);
}
3、散热器选择计算编程
#include"stdio.h"
#include"conio.h"
#include"math.h"
main()
{inti;
floatFy[4],Fz[4],x,Ky,Kz,tn,A,B,B1,B2,B3,Yy,Yz,tg,G1,Qz[4],Qy[4],tgs[4],thsy[4],thsz[4],tpjz[4],tpjy[4],ny[4],nz[4],fz;
for(i=0;i<4;i++)
{
printf("Qy[%d]=",i);
scanf("%f",&Qy[i]);
printf("Qz[%d]=",i);
scanf("%f",&Qz[i]);
printf("\n");
}
printf("********************************************************\n");
printf("tn=");
scanf("%f",&tn);
printf("tg=");
scanf("%f",&tg);
printf("G1=");
scanf("%f",&G1);
printf("\n");
printf("B1=");
scanf("%f",&B1);
printf("B2=");
scanf("%f",&B2);
printf("B3=");
scanf("%f",&B3);
printf("\n");
printf("fz=");
scanf("%f",&fz);
printf("A=");