新手求解答 一个简单的程序问题
#include<stdio.h>#include<math.h>
main()
{
double a=-3.0,b=5.0,a1,a2,y1,y2;
double e=0.1,l=0.618;
a1=b-l*(b-a);
a2=a+l*(b-a);
y1=pow(a1,2)+2*a1;
y2=pow(a2,2)+2*a2;
do
{
if(y1>=y2)
{
a=a1;
a1=a2;
y1=y2;
a2=a+l*(b-a);
y2=pow(a2,2)+2*a2;
}
else
{
b=a2;
a2=a1;
y2=y1;
a1=b-l*(b-a);
y1=pow(a1,2)+2*a1;/*这里以上的变量结果和书上对照过,都一样*/
}
}
while(fabs(y2-y1)>e);/*就是这里 貌似跳不出去*/
a=(a+b)/2;
printf("最优解为:%d\n",a);
}
这是用黄金分割法 求y=a*a+2*a 的极小点 do语句里的计算和书上的一样 但是没法判断跳出while循环 有人知道么 求解答