牛顿迭代法求方程根

/**
***牛顿迭代法求方程根***

  牛顿公式:x(k+1) = x(k) - f(x(k)) / f'(x(k))

  迭代函数:Ф(x) = x - f(x) / f'(x)

  属性:方程求根迭代法
 
  此时的迭代函数必须保证X(k)有极限,即迭代收敛。

  《数值分析简明教程》-2 Editon -高等教育出版社 -page 136 -算法流程图

  代码维护:2005.6.14  DragonLord
**/

#include
#include
#include

//范例程序中方程为:x*exp(x)-1=0

double f1(double x) //方程一阶求导的形式
{
 return 1+x;
}

double f0(double x) //原方程形式
{
 return x-exp(-x);
}

int main()
{
 double x0,x1,e;
 int N,k;
 while(cin>>x0>>e>>N)
 {
  k=1;
loop: if(f1(x0)==0){cout<<"函数异常!"<  else
  {
   
   x1=x0-f0(x0)/f1(x0);   //key step
   printf("x%d=%.5f/n",k,x1);
  }
  
  if(x1-x0-e)
  {
   printf("final result: x%d=%.5f/n",k,x1);
   break;
  }
  else
  { 
   if(k!=N)
   {
    k++;
    x0=x1;
    goto loop;
   }
   else
      cout<<"迭代计算失败!"<  }
 }
 return 0;
}

你可能感兴趣的:(计算方法)