threeinserting.cpp

来自「最优化理论与算法(第2版)这本书中的课后作业。用C++实现的一些具体算法。」· C++ 代码 · 共 53 行

CPP
53
字号
#include<iostream.h>
#include<math.h>

void main()
{
	double x1,x2,deta;
    double f1,f2,f11,f22;

	double s,z,w,x;
	double ans,value,value1;

	x1=-2.15;x2=0.25;deta=0.001;

	f1=pow(x1,4)+2*x1+4;
	f2=pow(x2,4)+2*x2+4;
	f11=4*pow(x1,3)+2;
	f22=4*pow(x2,3)+2;

	do
	{
	s=3*(f2-f1)/(x2-x1);
	z=s-f11-f22;
	w=pow(z,2)-f11*f22;
	x=x1+(x2-x1)*(1-(f22+sqrt(w)+z)/(f22-f11+2*sqrt(w)));

	if(abs(x2-x1)<=deta) 
	{
		ans=x;
		break;
	}

	value=pow(x,4)+2*x+4;
	value1=4*pow(x,3)+2;

	if(value1==0) 
	{
		ans=x;
		break;
	}
	else if(value1<0)
	{
		x1=x;f1=value;f11=value1;
	}
	else
	{
		x2=x;f2=value;f22=value1;
	}
	}while(1);

	value=pow(ans,4)+2*ans+4;

	cout<<"\n三次插值法求解问题三,deta取值为"<<deta<<",估计解为"<<ans<<",极小值为"<<value<<endl<<endl;
}

⌨️ 快捷键说明

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