c语言牛顿迭代法的问题
x1 为1
迭代公式 Xn+1=Xn-f(Xn)/f'(Xn)
当|Xn+1-Xn|<=1e-5时输出。
函数方程为
ax^3+bx^2+c^x+d=0
#include<stdio.h>
#include<math.h>
main()
{
double a,b,c,d,x,xi,ln,p,q;
printf("please input four integers : ");
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
x=1;
ln=log(c);
p=a*pow(x,3)+b*pow(x,2)+pow(c,x)+d;
q=3*a*pow(x,2)+2*b*x+(pow(c,x)*ln);
xi=x-p/q;
while(fabs(xi-x)>=(1e-5))
{
x=xi;
p=a*pow(x,3)+b*pow(x,2)+pow(c,x)+d;
q=3*a*pow(x,2)+2*b*x+(pow(c,x)*ln);
xi=x-p/q;
}
printf("%lf",xi);
system("pause");
}
输入1 3 5 2 的正确结果应该是 -0.546602
而我的程序运行结果是-3.196332