数值分析-牛顿法迭代求方程的根

使用的方程为2x^3- 4 ^2+3x-7=0 选取的点为1.5
但是根据局部收敛性发现1.5在此处不是收敛的,但是却可以迭代出正确结果。
代码如下:
void initNewton(double x)
{
double newton1(double x);
double newton2(double x);
double result;
double e=0.00000001;
int k=0;
printf("—————————牛顿法的结果—————————\n");
result=newton1(x);
//printf(“请输入初值x”);
if(newton2(x)==0)
printf("%lf是奇异点",x);
else
{
while(fabs(result-x)>=e)
{
printf("%d\t%.8lf\n",k,result);
k++;
x=result;
result=newton1(x);
}
printf("%d\t%.8lf\n",k,result);
}
}
double newton1(double x)//牛顿法
{
double func1(double x);
double func2(double x);
double result;
result=x-func1(x)/func2(x);
return result;
}
double newton2(double x)//牛顿法的导数
{
double func1(double x);
double func2(double x);
double result;
result=12x-8;
return func1(x)result/pow(func2(x),2);
}
double func1(double x)//需要求根的方程
{
return 2
pow(x,3)-4
pow(x,2)+3x-7;
}
double func2(double x)//导数
{
return 6
pow(x,2)-8*x+3;

你可能感兴趣的:(数值分析)