牛顿迭代法计算平方根(Java,Python实现)
2016-12-28 本文已影响652人
mmmwhy
牛顿法的作用是使用迭代的方法来求解函数方程的根。简单地说,牛顿法就是不断求取切线的过程。更多见:李飞阳
数学推导
假设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代码真心简洁啊