牛顿迭代法计算平方根(Java,Python实现)

牛顿法的作用是使用迭代的方法来求解函数方程的根。简单地说,牛顿法就是不断求取切线的过程。更多见:iii.run

数学推导

假设c为原数,t为c的根数。

$$ t^2 \quad = \quad c$$
$$2t^2 \quad = \quad c + \quad t^2$$
$$2t \quad = \quad \frac{c}{t}+ \quad t$$
$$t \quad = \quad \frac{\frac{c}{t} + t}{2.0}$$

Java代码实现

package test;

import java.io.IOException;
import java.util.Scanner;

public class QuickFindUF {
    public static double sqrt (double c){
        if(c<0)
            return Double.NaN;
        double err = 1e-15;
        double t = c;
        while(Math.abs(t-c/t)>err)
            t = (c/t+t)/2.0;
        return t;
    }
    public static void main(String args[]) throws IOException{
        Scanner sc = new Scanner(System.in);
        double a = sqrt(sc.nextDouble());       
        System.out.println(a);
    }
}

Python代码实现

c = input()
err = 1e-15
t = c
while abs(t - c/t)>err:
    t = (c/t+t)/2.0
print(t)

Python代码真心简洁啊

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容