method_0.618.cpp
来自「最优化理论与算法(第2版)这本书中的课后作业。用C++实现的一些具体算法。」· C++ 代码 · 共 45 行
CPP
45 行
#include<iostream.h>
#include<math.h>
void main()
{
double ak,bk,langk,miuk;
double L;
double flangk,fmiuk;
int sn=0;
ak=-1;
bk=1;
L=0.16;
langk=ak+0.382*(bk-ak);
miuk=ak+0.618*(bk-ak);
flangk=2*pow(langk,2)-langk-1;
fmiuk=2*pow(miuk,2)-miuk-1;
for(int i=0;i<10;i++)
{
if((bk-ak)<L) break;
if(flangk>fmiuk) sn=3;
else
sn=4;
switch(sn)
{
case 3:
ak=langk;langk=miuk;
flangk=fmiuk;
miuk=ak+0.618*(bk-ak);
fmiuk=2*pow(miuk,2)-miuk-1;
continue;
case 4:
bk=miuk;miuk=langk;
fmiuk=flangk;
langk=ak+0.382*(bk-ak);
flangk=2*pow(langk,2)-langk-1;
continue;
}
}
cout<<ak<<"\t"<<bk<<endl<<endl;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?