?? 黃金分割法.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<<"循環(huán)了"<<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<<"循環(huán)了"<<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 + -