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

📄 newton迭代法.cpp

📁 数值计算 中的各种算法: Lagrame插值,Newton迭代法,Runge-kutta,二分法求根,解线性方程组的Guass列主元消去法,自动选择步长Simpson法
💻 CPP
字号:
//黄泳晞(2003402054529)    Newton迭代法
//序用函数按照课本 P.240   例11  函数: (X*X*X)-X-1
#include <iostream.h>
#include <math.h>
#define F(x) (x*x*x)-x-1         // 原函数
#define Fd(x) 3*(x*x)-1          // 一次求导后的函数
class Newton{
	int N,k;
	double x,x1,DT,FF,FD,EPS;
public:
    void Input();
	void DoNewton();
};
//...................数据输入...........................
void Newton::Input(){
	cout<<"输入Xo的值: ";             cin>>x;
	cout<<"输入最大迭代次数N的值:";   cin>>N;
	cout<<"EPS的值:";                 cin>>EPS;
};
//...................Newton迭代.........................
void Newton::DoNewton(){
	k=1;
	do{		
		FF=F(x);FD=Fd(x);	        
		if (FD<EPS && FD>(-EPS)){
			cout<<"Xo选取错误。"<<endl;
			break;}
		else{
			x1=x-FF/FD;DT=fabs(x1-x);
			if(DT<EPS){
                cout<<"X("<<k<<")="<<x1<<endl<<endl;
				cout<<"得出近似值 X= "<<x1<<endl;
				cout<<"迭代次数 K= "<<k<<endl;
				break;
			}
			else{
				cout<<"X("<<k<<")="<<x1<<endl;
				k++;x=x1;
			}
		}
	}while (k<=N);
	if (k>N)
		cout<<endl<<"迭代次数已超过最大迭代次数。"<<endl;
};

main(){
	Newton T;
	T.Input();
	T.DoNewton();
}
//End..............................................

⌨️ 快捷键说明

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