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

📄 newton.cpp

📁 原题:编写一个子程序NewTon(float x0
💻 CPP
字号:
#include<iostream.h>
#include<math.h>

class NewtonOverlap
{
public:
	virtual void Func(double x,double y[]){}
	bool Newton(double *x,int nMaxIt=200,double eps=0.1);
};           //定义一个类


class Ntequ:public NewtonOverlap
{
	void Func(double x,double y[])	
	{
		y[0]=x*x*x-2.0*x*x+4.0*x+1.0;
		y[1]=3.0*x*x-4.0*x+4.0;
	}
};          //定义一个NewtonOverlap的子类,用于迭代计算


bool NewtonOverlap::Newton(double*x,int num,double eps)
{
	cout<<"请输入精度 eps = ";
	cin>>eps;
	double y[2],d,p,x0,x1;
	x0=*x;
	Func(x0,y);
	d=eps+1.0;
	while((d>=eps)&&(num!=0))
	{
		if(y[1]==0.0)
		return false;
		x1=x0-y[0]/y[1];
		Func(x1,y);
		d=fabs(x1-x0);
		p=fabs(y[0]);
		if(p>d)
			d=p;
		x0=x1;
		num--;
	}              //判断过程
	*x=x1;
	return true;
}                  //根据精度算



void main()	
{   Ntequ equation;
	double x;
    cout<<"请输入初始值  X = ";
	cin>>x;
	int k=equation.Newton(&x);
	if(k)
		cout<<"求得零附近的一个实根为 x = "<<x<<endl;
	else 
		cout<<"求解失败";	
}

⌨️ 快捷键说明

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