Newton-Raphson算法

时间:2014-03-18 22:31:16

标签: c algorithm

我要编译并运行这个程序来使用Newton-Raphson算法求解方程,但do-while循环中的迭代次数总是1,这不应该是情况下。

代码

#include<math.h>
#include<stdio.h>

float fonc(float x){
   float result;
   result=2*(pow(x,3))-x-2;
   return result;
 }

float foncprime(float x){
   float result;
   result= 6*(pow(x,2))-1;
   return result;
}

int main(void)
{
   long double x1,x0;
   float eps;
   eps=0.5*pow(10,-4);
   x0=1;
   x1=1;
   int i=0;
   do
   {
      x0=x1;
      x1=x0-(fonc(x0)/foncprime(x0));
      i++;

   }
   while(x1-x0>eps);
   printf("%d",i);
}

3 个答案:

答案 0 :(得分:3)

您应该检查while (fabs(x1-x0) > eps)

答案 1 :(得分:2)

您已经在while循环测试之前将x1分配给x0,因此测试为0> eps,它将始终为false,因此它会在第一次迭代时退出循环。

答案 2 :(得分:1)

变化:

   while(x1-x0>eps);

为:

   while(fabs(x1-x0)>eps);