牛顿迭代法
求方程 f(x0)=0 的根 设一初值x0,然后用牛顿迭代公式 x1=x0-f(x0)/f'(x0) 计算出下一个x,重复不断地用刚计算出的x取代上一个x值,
即 x(i+1)=xi-f(xi)/f'(xi)
例如求解 sqrt(2) 可以设sqrt(2)=x 即 x^2-2=0 则 f(x)=x^2-2 所以 f'(x)=2x 所以有迭代公式 x=1/2*(x0+2/x0)
代码如下:
double sqrt2(double x,int N)
{
int i;
double ret = x;
for(i = N;i>0; i--)
{
ret = ret - (ret*ret - x)/(2.0*ret);
}
return ret;
}
测试:
sqrt2(2,5) = 1.41421
sqrt2(3,5) = 1.73205
sqrt2(4,5) = 2
迭代运算次数基本上在5次就能满足精度要求
牛顿迭代法求平方根
最新推荐文章于 2022-02-13 00:47:31 发布