采用0.618法求在区间[0, 1]内函数f (x)=x(x-1)2(x-2)3的最小值 vc++编程、、、谢~~~

#include<iostream>usingnamespacestd;constfloatEPS=0.000001;//定义常量floatf(float);//定义函数... #include<iostream>
using namespace std;
const float EPS=0.000001;//定义常量
float f(float);

//定义函数f
float f(float x)
{
return x*(x-1)^2*(x-2)^3;
}

void main()
{
float a,b,x1,x2,f1,f2,ε,eps;
cout<<"a=0";cin>>a;
cout<<"b=1";cin>>b;
cout<<"eps=0.001";cin>>eps;
x1=a+0.382*(b-a);x2=a+0.618*(b-a);
f1=f(x1);f2=f(x2);

while (b-a>eps)//搜索精度循环节
{
=f1-f2;
if (ε>EPS) {a=x1;x1=x2;f1=f2;x2=a+0.618*(b-a);f2=f(x2);}

else if (ε>=-EPS && ε<=EPS) {a=x1;b=x2;x1=a+0.382*(b-a);x2=a+0.618*(b-a);f1=f(x1);f2=f(x2);}//函数值相等,两边区间均舍去

else {b=x2;x2=x1;f2=f1;x1=a+0.382*(b-a);f1=f(x1);}
}

cout<<"x*="<<(a+b)/2;
system ("pause");
}
我不知道哪错了。。。已经改蒙了
展开
 我来答
百度网友7a7e6f3
2012-06-09 · TA获得超过252个赞
知道小有建树答主
回答量:211
采纳率:100%
帮助的人:94.5万
展开全部

帮你改了一下,请看一下。

#include<iostream>

using namespace std;

const float EPS=0.000001;//定义常量

float f(float);

//定义函数f

float f(float x)

{

 return  x*(x-1)*(x-1)*(x-2)*(x-2)*(x-2);//这里的减号是全角字符,必须改为半角;还有符号“^”必须用于整型,无法用于浮点型。

}

void main()

{

 float a,b,x1,x2,f1,f2,alf,eps;//编译器认为ε是非法变量名,暂改名为alf,下同

 cout<<"a=0";cin>>a;

 cout<<"b=1";cin>>b;

 cout<<"eps=0.001";cin>>eps;

 x1=a+0.382*(b-a);x2=a+0.618*(b-a);

 f1=f(x1);f2=f(x2);

 while (b-a>eps)//搜索精度循环节

 {

    alf=f1-f2;//这里等号左边少了变量,是ε?暂时已经换成了alf了。

    if (alf>EPS) {a=x1;x1=x2;f1=f2;x2=a+0.618*(b-a);f2=f(x2);}

    else if (alf>=-1*EPS && alf<=EPS) {a=x1;b=x2;x1=a+0.382*(b-a);x2=a+0.618*(b-a);f1=f(x1);f2=f(x2);}//函数值相等,两边区间均舍去

    else {b=x2;x2=x1;f2=f1;x1=a+0.382*(b-a);f1=f(x1);}

 }

 cout<<"x*="<<(a+b)/2;

   system ("pause");

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式