发表于:2006-09-26 15:45:00
楼主
迭代法计算孔板孔径的大小,但是算出的数据有差别我不知道错在那里了,
请各位高手修改,谢谢
运行C语言就可以带入计算.各位朋友不防也算算,看在那里有出入.谢谢!!!!
有什么疑问可以和我电话联系,09515699671,我叫孙严峻!!!!
#include<math.h>
main()
{ int n;
const float pai=3.141592653289;
const float b0=0.500000;
const float C0=0.606000;
float Qmax,Qcom,Qmin,M,N,D20,rD,rd,T=0.0,b,D,ReD,CPmax,CPcom,A2,
L,C,C1,b1,b2,d,d20;
printf("Qmax,Qcom,Qmin,M,N,D20,rD,rd,T=\n");
scanf("%f%f%f%f%e%f%e%e%f",&Qmax,&Qcom,&Qmin,&M,&N,&D20,&rD,&rd,&T);
D=D20*(1+rD*(T-20));
ReD=4*Qcom/(3600*pai*N*D);
CPcom=pow(4*Qcom*sqrt(1-pow(b0,4))/(3600*pai*b0*b0*D*D*C0),2)
*1/(2*M);
CPmax=CPcom*pow((Qmax/Qcom),2);
A2=4*Qcom/(3600*pai*D*D*sqrt(2*25e3*M));
printf("ReD=%e\n",ReD);
printf("CPcom=%6.10f\n",CPcom);
printf("CPmax=%6.10f\n",CPmax);
printf("A2=%6.10f\n",A2);
if(ReD>2e5)
{b=pow(1+pow((0.60/A2),2),-0.25);}
if(ReD<2e5)
{b=pow(1+pow((0.60/A2+0.06),2),-0.25);}
printf("b=%6.10f\n",b);
L=0.0254/D;
C=0.5961+
0.0261*pow(b,2)-
0.216*pow(b,8)+
0.000521*pow(((pow(10,6)*b)/ReD),0.7)+
((0.0188+0.0063*pow((19000*b/ReD),0.8)))*pow(b,3.5)*pow((pow(10,6)/ReD),0.3)+
(0.043+0.080*exp(-10*L)-0.123*exp(-7*L))*(1-0.11*pow((19000*b/ReD),0.8))*
(pow(b,4)/(1-pow(b,4)))-
0.031*(2*L/(1-b)-0.8*pow(2*L/(1-b),1.1))*pow(b,1.3);
b1=pow(1+pow((C/A2),2),-0.25);
{printf("b1=%6.10f\n",b1);}
C1=0.5961+
0.0261*pow(b1,2)-
0.216*pow(b1,8)+
0.000521*pow(((pow(10,6)*b1)/ReD),0.7)+
((0.0188+0.0063*pow((19000*b1/ReD),0.8)))*pow(b1,3.5)*pow((pow(10,6)/ReD),0.3)+
(0.043+0.080*exp(-10*L)-0.123*exp(-7*L))*(1-0.11*pow((19000*b1/ReD),0.8))*
(pow(b1,4)/(1-pow(b1,4)))-
0.031*(2*L/(1-b1)-0.8*pow(2*L/(1-b1),1.1))*pow(b1,1.3);
b2=pow(1+pow((C1/A2),2),-0.25);
printf("b2=%6.10f\n",b2);
printf("b2-b1=%e\n",b2-b1);
for(n=2;fabs(b2-b1)>1.0e-10;n++)
{
b=b1;
printf("b=%6.10f\n",b);
C=0.5961+
0.0261*pow(b,2)-
0.216*pow(b,8)+
0.000521*pow(((pow(10,6)*b)/ReD),0.7)+
((0.0188+0.0063*pow((19000*b/ReD),0.8)))*pow(b,3.5)*pow((pow(10,6)/ReD),0.3)+