⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 弦割法 和 newton法 求解三次多项式非线性方程
💻 CPP
字号:



#include<iostream>
using namespace std;

double foo(double x,double c3,double c2,double c1,double c0)
{
	return c3*x*x*x+c2*x*x+c1*x+c0;
}

void CurveCut();

void NewTon();

int main(int args,char* argv[])
{
	//x(k+1) = x(k)-f(xk)/f'(xk);
	//
	cout<<"请选择 解方程的方法 :";
	cout<<endl<<"1---NewTon ,2----弦割法";
	int method = 1;
	cin>>method;
	switch(method)
	{
	case 1:
		NewTon();
		break;
		case 2:
			CurveCut();
		break;	
	default:
		break ;
	}
	return 0;
	
/*	double c3,c2,c1,c0;
	cout<<"请按次序输入 三次多项式的系数"<<endl;
	cout<<"例如y=(x)^3-3x-1,请按顺序输入 1 空格 0 控制 -3 空格 -1 空格 ";
	cin>>c3>>c2>>c1>>c0;

	//求导数
	double cd2,cd1,cd0;
	cd2 = 3*c3;
	cd1 = 2*c2;
	cd0 = c1;


	double xk = 2;
	cout<<"请输入初始迭值 x0=";
	cin>>xk;

	double df = 2.0;
	while (df > 0.0001 )
	{
		df = foo(xk,c3,c2,c1,c0) / foo(xk,0,cd2,cd1,cd0);
		xk -= df;
	}

	cout<<"\n结果是x"<<xk;
	cout<<endl;
	
	//下面执行弦割法
	double xk_1 = 1.9;
	xk = 2.0;
	

	return 0;*/
}

void NewTon()
{
	double c3,c2,c1,c0;
	cout<<"请按次序输入 三次多项式的系数"<<endl;
	cout<<"例如y=(x)^3-3x-1,请按顺序输入 1 空格 0 控制 -3 空格 -1 空格\n ";
	cin>>c3>>c2>>c1>>c0;

	//求导数
	double cd2,cd1,cd0;
	cd2 = 3*c3;
	cd1 = 2*c2;
	cd0 = c1;


	double xk = 2;
	cout<<"请输入初始迭值 x0=";
	cin>>xk;

	double df = 2.0;
	while (df > 0.0001 )
	{
		df = foo(xk,c3,c2,c1,c0) / foo(xk,0,cd2,cd1,cd0);
		xk -= df;
	}

	cout<<"\n结果是 x = "<<xk;
	cout<<endl;

}
void CurveCut()
{
	double c3,c2,c1,c0;
	cout<<"请按次序输入 三次多项式的系数"<<endl;
	cout<<"例如y=(x)^3-3x-1,请按顺序输入 1 空格 0 控制 -3 空格 -1 空格 \n";
	cin>>c3>>c2>>c1>>c0;

	//求导数
	double cd2,cd1,cd0;
	cd2 = 3*c3;
	cd1 = 2*c2;
	cd0 = c1;


	double xk = 2;
	cout<<"请输入初始迭值 x0=";
	cin>>xk;

	double xk_1 = 2;
	cout<<"请输入初始迭值 x1=";
	cin>>xk_1;
	

	double df = 2.0;
	while (df > 0.0001 )
	{
		double fxk = foo(xk,c3,c2,c1,c0) ;
		double fxk_1=  foo(xk_1,c3,c2,c1,c0) ;
		df = (xk-xk_1)*(fxk/(fxk-fxk_1)) ;
		xk_1 = xk;
		xk -= df;
	}

	cout<<"\n结果是 x = "<<xk;
	cout<<endl;
}

⌨️ 快捷键说明

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