我试图通过使用此处描述的牛顿方法来完成这项工作:wiki使用以下代码,但问题是它只能给出精确的结果,最多小数点后 16 位。我试图增加迭代次数,结果还是一样。我从 1 的初始猜测开始。那么我怎样才能提高答案的准确性(最多 100 位或更多小数位)?谢谢。代码:
double x0,x1;
#define n 2
double f(double x0)
{
return ((x0*x0)-n);
}
double firstDerv(double x0)
{
return 2.0*x0;
}
int main()
{
x0 = n/2.0;
int i;
for(i=0;i<40000;i++)
{
x1=x0-(f(x0)/((firstDerv(x0))));
x0=x1;
}
printf("%.100lf\n",x1);
return 0;
}