extremumsimplexnd.cpp

来自「这些程序是vc++编程时会用到的基本算法的程序」· C++ 代码 · 共 44 行

CPP
44
字号
//ExtremumSimplexND.cpp	n维极值单形调优法

#include <iostream>		//模板类iostream输入输出流标准头文件
#include "Extremum.h"	//极值头文件


void main(void)
{	
	valarray<long double> x(3);
	valarray<long double> f(3);
	matrix<long double> xx(2,3);
	long double eps = LONGDOUBLEERROR, d=1.0, u=1.6, v=0.4;	

    int i = ExtremumSimplexND(d,u,v,x,eps,200,xx,f);

	cout << "i = " << i << endl << endl;

	for(i=0; i<3; i++)
		cout << "x(0) = " << xx(0,i) << "\t x(1) = " << xx(1,i)
									 << "\t f = " << f[i] << endl;
	cout << endl;

    for(i=0; i<2; i++)
		cout << "x(" << i << ") = " << x[i] << endl;
	cout << endl;

    cout << "J = " << x[2] << endl;
}

//计算f(X)函数值
template <class _Ty> 
_Ty FunctionValueESND(valarray<_Ty>& x, int n)
{
	_Ty y;
	
    y = x[1] - x[0] * x[0];
	y = 100.0 * y * y;
    y = y + (1.0 - x[0]) * (1.0 - x[0]);

    return(y);
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?