牛顿迭代法计算平方根(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代码真心简洁啊

    原文作者:mmmwhy
    原文地址: https://www.jianshu.com/p/dd2174a911da
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞