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时一定收敛。