newtonxiashan.cpp

来自「包括二分法」· C++ 代码 · 共 49 行

CPP
49
字号
#include <cmath>
#include <iostream>
using namespace std;

/*
double f(double x)
{ return x*exp(x)-1;}
double ff(double x)
{return exp(x)+x*exp(x);}
*/
/*
double f(double x)
{ return x*x*x-x-1;}
double ff(double x)
{ return 3*x*x-1;}
*/
double f(double x)
{ return 2*x*x*x-5*x*x+4*x-1;}
double ff(double x)
{ return 6*x*x-10*x+4;}

int main()
{   double x0,x1,e1,e2,N;
	cout<<"Please input x0 e1 e2 N:"<<f(1.32472)<<endl;
	while(cin>>x0>>e1>>e2>>N)
{
  	 for(int k=1; k<=N ;k++)
	{
		if ( fabs(f(x0))<e1 )
	  {  cout<<"??????"<<endl;
		break;
	   }
	  else
	  {  x1=x0-f(x0)/ff(x0);
	   if ( fabs(x1-x0)<e2 )
	     {  cout<<"x1="<<x1<<endl;
	       break;
	      }
	   }
	    cout<<x1<<endl;
	  x0=x1;
	
	  if (k==N)
	  {cout<<"error"<<endl;
	  }
     }
   }  
	return 0;
}

⌨️ 快捷键说明

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