ex1.cpp
来自「最优化方法的一些基本算法的实现:1」· C++ 代码 · 共 37 行
CPP
37 行
#include <iostream.h>
#define M 0.382
#define N 0.618
double f ( double x )
{
return 2 * x * x - x - 1 ;
}
int main()
{
int num = 0 ; /* num表示迭代次数 */
double a = -1 , b = 1 , s , t , x ; /* [a,b]为搜索区间,s->0.382,t->0.618,x表示所求点 */
s = a + M * ( b - a ) ;
t = a + N * ( b - a ) ;
while ( b - a > 0.16 )
{
if( f(s) > f(t) )
{
a = s ;
s = t ;
t = a + N * ( b - a );
}
else
{
b = t ;
t = s ;
s = a + M * ( b - a );
}
num++;
}
x = ( a + b ) / 2 ;
cout << "经过" << num << "次迭代,满足精度要求,问题的最优解为" << x <<endl ;
return 0 ;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?