📄 黄金分割法.txt
字号:
#define e 0.00000001
#define r 0.618
#include <math.h>
#include <iostream.h>
int p=1;
double f(double a)
{
double y;
y=pow(a,2)+2*a;
return y;
}
void main()
{
double ak;
double a1,a2,y1,y2;
double a=-3.0,b=5.0;
a1=b-r*(b-a);
a2=a+r*(b-a);
y1=f(a1);
y2=f(a2);
while(fabs((b-a)/b)>=e)
{
if(y2<y1)
{
//cout<<"循环了"<<a1<<endl;
a=a1;
a1=a2;
y1=y2;
a2=a+r*(b-a);
y2=f(a2);
}
else
{
b=a2;
a2=a1;
y2=y1;
a1=b-r*(b-a);
y1=f(a1);
}
cout<<"循环了"<<p<<"次"<<endl;
p++;
//if(p>5)
// break;
}
ak=(a+b)/2;
cout<<"ak="<<ak<<endl;
cout<<"f(ak)="<<f(ak)<<endl;
}
//从运行结果可以看出,其解与书上说的精确解已经一样了
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -