我要编译并运行这个程序来使用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);
}
答案 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);