紧急求助!在线等待!!!关于循环
此程序是用来求一个经济优化模型的最小值,可是运行时发现 for 好象没有循环
何故??? 急!!!
#include <stdio.h>
#include <math.h>
#define T1 140
#define T2 40
#define tt1 30
#define Q0 598000000
#define Cp1 2220
#define midu1 825
#define niandu1 0.000715
#define midu2 994
#define Cp2 4080
#define niandu2 0.000725
#define i 0.05
#define time (330*24)
#define di 0.020
#define do 0.025
#define Np 2
#define L 6.0
#define Po 100000
#define f1 1.12
#define f2 0.73
#define a 334
#define b 0.73
#define Fc 0.1
#define Zi 1.05
#define Cu 0.00152
#define Ci 0.5
#define Co 0.5
#define K 475.0
double Yu,Yt;
***************************
main()
{ double J(double tt2,double ui);
double y(double tt2);
double tt2,ui;
double min,totle;
Yt=tt2=35.0; Yu=ui=0.50;
totle=J(tt2,ui);
min=totle;
for(ui=0.55;ui<=3.00;ui+=0.10)
{
for(tt2=35.1;tt2<=80.0;tt2+=0.1)
{
if(y(tt2)>=0.9)
{ totle=J(tt2,ui);
if(totle<min)
{
min=totle;
Yt=tt2;
Yu=ui;
}
}
}
}
printf("ui=%f,t2=%f",Yu,Yt);
}
double tm(double tt2)
{
double z;
double mid1,mid2;
mid1=T1-tt2;
mid2=T2-tt1;
z=(mid1-mid2)/log(mid1/mid2);
return z;
}
double Q()
{
double z;
double ms;
ms=Q0/time;
ms=ms/3600.0;
z=(1+i)*Cp1*ms*(T1-T2);
return z;
}
double A(double tt2)
{ double y(double tt2);
double tm(double tt2);
double z;
z=Q()/(y(tt2)*K*tm(tt2));
return z;
}
double Vi(double tt2)
{ double Q();
double z;
z=Q()/(Cp2*(tt2-tt1)*midu2);
return z;
}
double A2(double tt2,double ui)
{ double Vi(double tt2);
double z;
z=4*Vi(tt2)*do*Np*L/(pow(di,2)*ui);
return z;
}
double Pi(double ui)
{
double z;
double mid1,mid2;
mid1=0.4458*pow(niandu2,0.261);
mid2=di*midu2*ui;
mid2=pow(mid2,0.261);
mid1=mid1/mid2;
mid2=L*pow(midu2*ui,2)*Zi*Np/(2*midu2*di);
z=mid1*mid2;
return z;
}
double Ei(double ui)
{ double Pi(double ui);
double z;
double mid1,mid2;
mid1=Pi(ui)*ui*pow(di,2);
mid2=4000*midu2*do*Np*L;
z=mid1/mid2;
return z;
}
double Eo(double tt2,double ui)
{ double Vi(double tt2);
double z;
double Vo,mid1,mid2;
Vo=Q0/(time*3600*midu1);
mid1=Po*Vo*pow(di,2)*ui;
mid2=4000*do*L*Vi(tt2)*Np;
z=mid1/mid2;
return z;
}
double Wu(double tt2)
{ double Vi(double tt2);
double z;
z=Vi(tt2)*midu2;
return z;
}
double J(double tt2,double ui)
{ double Wu(double tt2);
double Ei(double ui);
double A(double tt2);
double Eo(double tt2,double ui);
double z;
double mid1,mid2,mid3,mid4;
mid1=1.3*f1*f2*a*pow(A(tt2),b)*Fc;
mid2=3600*time*Cu*Wu(tt2);
mid3=Ei(ui)*Ci*time*A(tt2);
mid4=Eo(tt2,ui)*time*Co*A(tt2);
z=mid1+mid2+mid3+mid4;
return z;
}
double y(double tt2)
{
double z;
double P,R,mid1,mid2,mid3;
P=(tt2-tt1)/(T1-tt1);
R=(T1-T2)/(tt2-tt1);
mid1=pow(pow(R,2)+1,0.5);
mid2=2-P*(1+R-mid1);
mid3=2-P*(1+R+mid1);
if(mid3>=0.0){
mid2=log(mid2/mid3);
mid1=mid1/(R-1);
mid3=log((1-P)/(1-P*R));
z=mid1*mid3/mid2;
return z;}
else printf("Yu=%f,Yt=%f",Yu,Yt);
}