问题描述
- 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;
}输出的 结果和正确答案不符,求助。。
解决方案
由于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)));
时间: 2024-10-11 14:43:01