机械优化设计黄金分割法 外推法(8)
时间:2026-01-17
时间:2026-01-17
d0[i]=-1+2*(rand()/32767.00); } for(j=0;j<=99;j++) { d1[j]=-1+2*(rand()/32767.00); } f0=fun(z); fl=fun(z); ss: a=0.01; for(i=0,j=0;i<=99&&j<=99;i++,j++) { n=1/sqrt((d0[i])*(d0[i])+d1[j]*d1[j]); d0[i]=n*d0[i]; d1[j]=n*d1[j]; x[0]=z[0]+a*d0[i]; x[1]=z[1]+a*d1[j]; if(g(x[0],x[1])==1) { f=fun(x); if(f<fl) { fl=f; m0=d0[i]; m1=d1[j]; l[0]=x[0]; l[1]=x[1]; } } }
x[0]=l[0]; x[1]=l[1]; do
{a=1.3*a;
x[0]=x[0]+a*m0; x[1]=x[1]+a*m1; if(g(z[0],z[1])==0) break; f=fun(x); if(f<fl) fl=f;
else break;} while(g(z[0],z[1])==1); do{ x[0]=x[0]-a*m0; x[1]=x[1]-a*m1; a=0.7*a;
if(a<0.00001)break;
x[0]=x[0]+a*m0; x[1]=x[1]+a*m1; if(g(z[0],z[1])==1) f=fun(x); }
while(f>=fl);
if(fabs((f0-f)/f0)<e)
{xi[0]=x[0];xi[1]=x[1]; fx=f;
printf("最优解为\nx1*=%f\nx2*=%f\n fx=%f\n",xi[0],xi[1],fx); }
else {f0=f; fl=f;
z[0]=x[0]; z[1]=x[1]; goto ss; } }
运行过程及结果: 输入精度0.001 最优解为 x1*=4.161386 x2*=2.311257 fx=0.000021
上一篇:平翘舌音练习材料大全
下一篇:电化学理论(李狄)课后答案解析