引用第1楼yinx于2007-06-21 21:25发表的:g3(X)=1--0.25X2<=0; 这句是什么意思,为什么有两个减号?
引用第3楼yinx于2007-06-21 21:35发表的:小数结果可以么?精度要去到小数点后多少位?我不会写分数.
#include <stdio.h>int main(int argc, char* argv[]){ double x1,x2,d1,d2; x1=0;x2=0; d1=0.000000001;d2=0.0000012; //x1+=d1,x2+=d2对minF的影响是一样的 bool ok=0; while(!ok) { ok=1; if(1-0.25*x2>0) { x2+=d2; //x2+=d2比x1+=d1有效 ok=0; } if(1-7*x1*x2/45>0) { if(x1*(x2+d2)>(x1+d1)*x2) x2+=d2; //x2+=d2比x1+=d1有效 else x1+=d1; //x1+=d1比x2+=d2有效 ok=0; } if(1-7*x1*x1*x1*x2>0) { if((x1+d1)*(x1+d1)*(x1+d1)*x2>x1*x1*x1*(x2+d2)) x1+=d1; //x1+=d1比x2+=d2有效 else x2+=d2; //x2+=d2比x1+=d1有效 ok=0; } if(1-x1*x2*x2>0) { if(x1*(x2+d2)*(x2+d2)>(x1+d1)*x2*x2) x2+=d2; //x2+=d2比x1+=d1有效 else x1+=d1; //x1+=d1比x2+=d2有效 ok=0; } } printf("X1=%lf\tX2=%lf\n",x1,x2); printf("minF=%lf\n",1200*x1+x2); printf("%lf\t%lf\t%lf\t%lf\n",0.25*x2,7*x1*x2/45,7*x1*x1*x1*x2,x1*x2*x2); return 0;}