一、題目
編寫程序求一個整數的平方根,精確到小數點后三位
二、解法
1) 采用 牛頓迭代法。
2)牛頓迭代法簡介
假設方程 在
附近有一個根,那么用以下迭代式子:
依次計算、
、
、……,那么序列將無限逼近方程的根。
牛頓迭代法的原理很簡單,其實是根據f(x)在x0附近的值和斜率,估計f(x)和x軸的交點,看下面的動態圖:
3)用牛頓迭代法開平方
令:
所以f(x)的一次導是 :
牛頓迭代式:
隨便一個迭代的初始值,例如,代入上面的式子迭代。
例如計算,即a=2:
4)代碼

import java.text.DecimalFormat; import java.util.Scanner; /** * 求平方根 */ public class Sqr { public static void main(String[] args) { // TODO 自動生成的方法存根 Scanner scan = new Scanner(System.in); DecimalFormat df = new DecimalFormat("#.000"); int sc = scan.nextInt(); System.out.print(sc + "的算術平方根是:"); System.out.println(df.format(SQR(sc))); } public static double SQR(int a) { double x1 = 1, x2; x2 = x1 / 2.0 + a / (2 * x1);//牛頓迭代公式 while (Math.abs(x2 - x1) > 1e-4) { x1 = x2; x2 = x1 / 2.0 + a / (2 * x1); } return x2; } }
參考鏈接:
http://www.guokr.com/question/461510/
http://blog.csdn.net/guozhenqiang19921021/article/details/51284928