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 + -
显示快捷键?