机械优化设计黄金分割法 外推法(5)
时间:2026-01-17
时间:2026-01-17
y1=t; } a=a1; b=a3;
a1=b-l*(b-a); a2=a+l*(b-a);
x[i][1]=fun1(x[i-1][1],d[i][1],a1); x[i][2]=fun1(x[i-1][2],d[i][2],a1); y1=fun2(x[i][1],x[i][2]);
x[i][1]=fun1(x[i-1][1],d[i][1],a2); x[i][2]=fun1(x[i-1][2],d[i][2],a2); y2=fun2(x[i][1],x[i][2]); if(b<1e-3) { for(;fabs(b-a)>e;) { if(y1>=y2) {a=a1; a1=a2; y1=y2;
a2=a+l*(b-a);
x[i][1]=fun1(x[i-1][1],d[i][1],a2); x[i][2]=fun1(x[i-1][2],d[i][2],a2); y2=fun2(x[i][1],x[i][2]); } else {b=a2; a2=a1; y2=y1;
a1=b-l*(b-a);
x[i][1]=fun1(x[i-1][1],d[i][1],a1); x[i][2]=fun1(x[i-1][2],d[i][2],a1); y1=fun2(x[i][1],x[i][2]); } } } else { for(;fabs((b-a)/b)>=e||fabs((y2-y1)/y2)>=e;) { if(y1>=y2) {a=a1; a1=a2; y1=y2;
a2=a+l*(b-a);
x[i][2]=fun1(x[i-1][2],d[i][2],a2);
y2=fun2(x[i][1],x[i][2]); } else {b=a2; a2=a1; y2=y1;
a1=b-l*(b-a);
x[i][1]=fun1(x[i-1][1],d[i][1],a1); x[i][2]=fun1(x[i-1][2],d[i][2],a1); y1=fun2(x[i][1],x[i][2]); } } }
ax[k][i]=0.5*(a+b);
x[i][1]=fun1(x[i-1][1],d[i][1],ax[k][i]); x[i][2]=fun1(x[i-1][2],d[i][2],ax[k][i]); } }
while(sqrt(pow((x[2][1]-x[0][1]),2)+pow((x[2][2]-x[0][2]),2))>=1e-6); xx[1]=x[2][1]; xx[2]=x[2][2];
fi=fun2(xx[1],xx[2]);
printf("最优解为\nx1*=%f\nx2*=%f\n f*=%f\nk=%d\n",xx[1],xx[2],fi,k); }
运行过程及结果: 输入初始点坐标 8 9 最优解为 x1*=5.000000 x2*=6.000000 f*=0.000000 k=2
5.随机方向法
源程序:
上一篇:平翘舌音练习材料大全
下一篇:电化学理论(李狄)课后答案解析