C语言牛顿迭代法,正常运行输出错误结果,求助

求方程ax^3+bx^2+c^x+d=0的解,其中xn+1=xn-f(xn)/f'(xn)
我的代码这样写的:
#include
#include
int main(void)
{
int a,b,c,d;
printf("Please input four integers:");
scanf("%d %d %d %d",&a,&b,&c,&d);
double x,y;
x=1;
while(1)
{
y=x;
x=(x-(a*pow(x,3)+b*pow(x,2)+pow(c,x)+d)/(3*a*pow(x,2)+2*b*x+pow(c,x)*log(c)));
if((fabs(x)-fabs(y))<1e-5)
{
printf("The solution is:%lf",x);
break;
}
}
return 0;
}

输出的 结果和正确答案不符,求助。。

1个回答



由于log函数原型有:
double log(double x);
float log(float x);
long double log(long double x);
没有形参x是int型,所以需要对int 型c进行强制类型转换:
x=(x-(a*pow(x,3)+b*pow(x,2)+pow(c,x)+d)/(3*a*pow(x,2)+2*b*x+pow(c,x)*log((float)c)));



Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问