=1e-6);printf("%lf",x0);return 0;}double f1(double x){int a,b,c,d;return (a*x*x*x+b*x*x+c*x+d);}double f2(double x){int a,b,c,d;return (3*a*x*x+2*b*x+c);}为什么我求不到答案呢?" /> =1e-6);printf("%lf",x0);return 0;}double f1(double x){int a,b,c,d;return (a*x*x*x+b*x*x+c*x+d);}double f2(double x){int a,b,c,d;return (3*a*x*x+2*b*x+c);}为什么我求不到答案呢? - 作业答案大全" />

利用函数完成用牛顿迭代法求根.方程为ax3+bx2+cx+d=0,系数a、b、c、d的值依次为1,2,3,4,求x在1附近的一个实根#include#includeint main(){double f1(double x);double f2(double x);int a,b,c,d;double x1,x0=1,e,f,h;printf("请输入a,b,c,d");scanf("%d,%d,%d,%d",&a,&b,&c,&d);do{x1=x0;e=f1(x1);f=f2(x1);h=e/f;x0=x1-h;}while(fabs(x1-x0)>=1e-6);printf("%lf",x0);return 0;}double f1(double x){int a,b,c,d;return (a*x*x*x+b*x*x+c*x+d);}double f2(double x){int a,b,c,d;return (3*a*x*x+2*b*x+c);}为什么我求不到答案呢?

问题描述:

利用函数完成用牛顿迭代法求根.方程为ax3+bx2+cx+d=0,系数a、b、c、d的值依次为1,2,3,4,
求x在1附近的一个实根
#include
#include
int main()
{
double f1(double x);
double f2(double x);
int a,b,c,d;
double x1,x0=1,e,f,h;
printf("请输入a,b,c,d");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
do
{
x1=x0;
e=f1(x1);
f=f2(x1);
h=e/f;
x0=x1-h;
}
while(fabs(x1-x0)>=1e-6);
printf("%lf",x0);
return 0;
}
double f1(double x)
{
int a,b,c,d;
return (a*x*x*x+b*x*x+c*x+d);
}
double f2(double x)
{
int a,b,c,d;
return (3*a*x*x+2*b*x+c);
}
为什么我求不到答案呢?

同学,你的a b c是局部变量,它的值只能在main函数里面用
double f1(int a,int b,int c,int d,double x),同理f2.