【弦割法】多项式方程求解的迭代程序

【弦割法】多项式方程求解的迭代程序


用弦割法求解方程式:f (x)= x^3-3x-1
取x0=2,x1=2.1


#include 
#include 
#include 
 
double fx(double x)
{
	double f = x*x*x-3*x-1;//原函数
	return f; //f(x) = 0中的f(x)函数形式
}
void main()
{
	using namespace std;
	int N = 100,//迭代次数最大值
		k = 0;//迭代次数实际值
	double a = 2,//(a, b)为x取值区间
		b = 2.1,
		epsilon = 0.00001,//允许精度
		x = b, //初始化
		delta = b - a,//初始化
		Oldfx = fx(a),//初始化
		Newfx = fx(x);//初始化
 
	cout<<"x0 = "<<a<<endl;
	cout<<setw(15)<<"delta"<<setw(15)<<"x"<<setw(15)<<"f(x)"<<endl;
	cout<<setw(15)<<0<<setw(15)<<a<<setw(15)<<Oldfx<<endl;
	cout<<setw(15)<<delta<<setw(15)<<x<<setw(15)<<Newfx<<endl;
 
	for(int i = 0; i<N; i++)//迭代步骤
	{
		delta *= -Newfx/(Newfx - Oldfx);
		x += delta;
		k++;
		if(fabs(delta) > epsilon)
		{
			Oldfx = Newfx;
			Newfx = fx(x);
			cout<<setw(15)<<delta<<setw(15)<<x<<setw(15)<<Newfx<<endl;
		}
		else 
		{
			cout<<setw(15)<<delta<<setw(15)<<x<<endl;
			break;
		}
	}
	cout<<"迭代次数:"<<k<<endl<<"x = "<<x<<endl;
	cin>>x;//控制台停留
}

【弦割法】多项式方程求解的迭代程序_第1张图片

你可能感兴趣的:(方法总比困难多)