首页 > c 牛顿法求近似值问题 vc6.0 无error 但是不出结果 请问是哪里出了问题?

c 牛顿法求近似值问题 vc6.0 无error 但是不出结果 请问是哪里出了问题?

include"stdio.h"
include"math.h"
double rot(double x,double a,double b,double c,double d)
{
    double f,f1;
    do
    {
        f=a*x*x*x+b*x*x+c*x+d;
        f1=3*a*x*x+2*b*x+c;
        x=x-f/f1;
    }while(fabs(x-1)>1e-6);
    return x;
}
int main()
{
    double a,b,c,d;
    printf("输入a,b,c,d:\n");
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    printf("%f",rot(1.1,a,b,c,d));
    return 0;
}

卡在这里,无输出...本人新手


把fabs(x - 1) > 1e - 6 改成 x - 1 > 1e - 6就能出结果,因为迭代的时候收敛很快,很可能越过你给的范围.
另外,我想说一下,即使这么改,答案也不准确,因为你不能保证迭代的时候在x == 1时一定收敛。

【热门文章】
【热门文章】