lamename 2015-11-12 09:44 采纳率: 50%
浏览 1660

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条回答 默认 最新

  • ysuwood 2015-11-12 11:40
    关注
    
    
    

    由于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)));

    
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?