牛顿迭代法应用

牛顿迭代法

牛顿迭代.png

使用

借助上述公式,理论上可以求任意次方根,假设要求a(假设非负)的n次方根,则有xn=a,令f(x)=xn-a,则只需求f(x)=0时x的值即可。由上述简单推导知,当f(x)=0时,xn+1=xn,因此把f(x)=xn-a 代入上述迭代式进行迭代直至xn+1=xn即可。

实际中xn+1=xn可能永远达不到,可以根据给定精度△,当|xn+1-xn|<△成立时即可停止迭代,此时的xn+1即为所求。

  1. 求平方根
    设待求算术平方根的数为a,其算术平方根为x,则x2=a,令f(x)=x2-a,代入上面的递推式有xn+1=xn-(xn2-a)/(2xn),整理得xn+1=(1/2)(xn+a/xn)
    function sqart(a) {
        let x1 = a
        let x2 = a/2
        let n = 0.0000001
        while(Math.abs(x1 - x2)>n) {
            x1 = x2
            x2 = 1/2 * (x1 + a/x1)
        }

        return x2
    }
  1. 求立方根

同理,令f(x)=x3-a,代入递推式有xn+1=xn-(xn3-a)/(3xn2),整理得xn+1=(1/3)(2xn+a/xn2)

代码如下:

function cubrt(a)
{
    let x1=a;
    let x2=a/2;
    while(Math.abs(x1-x2)>0.0000001)
    {
        //printf("%f\n",x2);
        x1=x2;
        x2=(2*x1+a/(x1*x1))/3.0;
    }
    return x2;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 欲求 a 的平方根, 首先要随便猜测一个值, 在这里我们其值 X₁ = a / 2 作为其平方根, 然后根据下...
    tingshuo123阅读 5,330评论 0 0
  • 最近复习关于Java的知识,想起一个有趣的问题:可以自己实现一个JDK吗? 随着最近的阅读源码,问题自然而然有了答...
    progressin_2240阅读 2,241评论 0 0
  • 因为不是科班出身,所以即使编程一段时间也时常感觉自身基础知识非常不扎实,于是在最近开始补习算法和计算机理论的基础知...
    Originalee阅读 12,700评论 2 4
  • 牛顿迭代法的作用是使用迭代法来求解函数方程的根,简单的说就是不断地求取切线的过程.对于形如f(x)=0的方程,首先...
    Joe_HUST阅读 7,732评论 0 1
  • 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method)。...
    xbinng阅读 7,568评论 0 0