# 牛顿迭代法与二分法计算平方根

```/**
* 牛顿迭代法求平方根
* @param  number   求值的数
* @param  accuracy 精度
* @return          Double
*/
public static double NewtonSqrt(double number, double accuracy) {
//第一个猜测值
double guess = number / 2;
int count = 0;
if (number < 0) {
return Double.NaN;
}
//当两个猜测的差值大于精度即return
while (Math.abs(guess - (number / guess)) > accuracy) {
//迭代公式推导而成
guess = (guess + (number / guess)) / 2;
count++;
System.out.printf("try count = %d, guess = %f\n", count, guess);
}
System.out.printf("final result = %f\n", guess);
return guess;
}```

```    public static double DichotomySqrt(double number, double accuracy) {
double higher = number;
double lower = 0.0;
double middle = (lower + higher) / 2;
double last_middle = 0.00;
int count = 0;
if (number < 0) {
return Double.NaN;
}
while (Math.abs(middle - last_middle) > accuracy) {
if (middle * middle > number) {
higher = middle;
} else {
lower = middle;
}
last_middle = middle;
middle = (lower + higher) / 2;
count++;
System.out.printf("Dichotomy try count = %d, guess = %f\n", count, last_middle);
}
System.out.printf("Dichotomy final result = %f\n", last_middle);
return last_middle;
}```

```    public static void main(String[] args) {
double result = NewtonSqrt(2,1e-3);
double dichotomyRes = DichotomySqrt(2,1e-3);
}```

```try count = 1 guess = 1.5
try count = 2 guess = 1.4166666666666665
try count = 3 guess = 1.4142156862745097
final result = 1.4142156862745097

Dichotomy try count = 1 guess = 1.0
Dichotomy try count = 2 guess = 1.5
Dichotomy try count = 3 guess = 1.25
Dichotomy try count = 4 guess = 1.375
Dichotomy try count = 5 guess = 1.4375
Dichotomy try count = 6 guess = 1.40625
Dichotomy try count = 7 guess = 1.421875
Dichotomy try count = 8 guess = 1.4140625
Dichotomy try count = 9 guess = 1.41796875
Dichotomy try count = 10 guess = 1.416015625
Dichotomy final result = 1.416015625```

```    public static void main(String[] args) {
double result = NewtonSqrt(2,1e-15);
double dichotomyRes = DichotomySqrt(2,1e-15);
}```
```try count = 1 guess = 1.5
try count = 2 guess = 1.4166666666666665
try count = 3 guess = 1.4142156862745097
try count = 4 guess = 1.4142135623746899
try count = 5 guess = 1.414213562373095
final result = 1.414213562373095

Dichotomy try count = 1 guess = 1.0
Dichotomy try count = 2 guess = 1.5
Dichotomy try count = 3 guess = 1.25
Dichotomy try count = 4 guess = 1.375
Dichotomy try count = 5 guess = 1.4375
Dichotomy try count = 6 guess = 1.40625
Dichotomy try count = 7 guess = 1.421875
Dichotomy try count = 8 guess = 1.4140625
Dichotomy try count = 9 guess = 1.41796875
Dichotomy try count = 10 guess = 1.416015625
Dichotomy try count = 11 guess = 1.4150390625
Dichotomy try count = 12 guess = 1.41455078125
Dichotomy try count = 13 guess = 1.414306640625
Dichotomy try count = 14 guess = 1.4141845703125
Dichotomy try count = 15 guess = 1.41424560546875
Dichotomy try count = 16 guess = 1.414215087890625
Dichotomy try count = 17 guess = 1.4141998291015625
Dichotomy try count = 18 guess = 1.4142074584960938
Dichotomy try count = 19 guess = 1.4142112731933594
Dichotomy try count = 20 guess = 1.4142131805419922
Dichotomy try count = 21 guess = 1.4142141342163086
Dichotomy try count = 22 guess = 1.4142136573791504
Dichotomy try count = 23 guess = 1.4142134189605713
Dichotomy try count = 24 guess = 1.4142135381698608
Dichotomy try count = 25 guess = 1.4142135977745056
Dichotomy try count = 26 guess = 1.4142135679721832
Dichotomy try count = 27 guess = 1.414213553071022
Dichotomy try count = 28 guess = 1.4142135605216026
Dichotomy try count = 29 guess = 1.414213564246893
Dichotomy try count = 30 guess = 1.4142135623842478
Dichotomy try count = 31 guess = 1.4142135614529252
Dichotomy try count = 32 guess = 1.4142135619185865
Dichotomy try count = 33 guess = 1.4142135621514171
Dichotomy try count = 34 guess = 1.4142135622678325
Dichotomy try count = 35 guess = 1.4142135623260401
Dichotomy try count = 36 guess = 1.414213562355144
Dichotomy try count = 37 guess = 1.4142135623696959
Dichotomy try count = 38 guess = 1.4142135623769718
Dichotomy try count = 39 guess = 1.4142135623733338
Dichotomy try count = 40 guess = 1.4142135623715149
Dichotomy try count = 41 guess = 1.4142135623724243
Dichotomy try count = 42 guess = 1.414213562372879
Dichotomy try count = 43 guess = 1.4142135623731065
Dichotomy try count = 44 guess = 1.4142135623729928
Dichotomy try count = 45 guess = 1.4142135623730496
Dichotomy try count = 46 guess = 1.414213562373078
Dichotomy try count = 47 guess = 1.4142135623730923
Dichotomy try count = 48 guess = 1.4142135623730994
Dichotomy try count = 49 guess = 1.4142135623730958
Dichotomy try count = 50 guess = 1.414213562373094
Dichotomy final result = 1.414213562373094```

0 条评论

• ### 数据结构——最大索引堆(C++和Java实现)

在上一篇博客中，记录了优先队列——堆这个数据结构的实现，并且关于堆的性质我也在上文中介绍过，堆能用来进行排序，堆排序具有快速(复杂度O(NlogN))，稳定的特...

• ### 服务器的Mysql初始化设置

继上篇博客记录了服务器的初始化安全设置之后，本篇文章会记录Mysql数据库的初始化安全设置。在操作mysql之前，最好先行备份，毕竟有“备”无患嘛。

• ### iOS开发——Debug CUICatalog: Invalid asset name supplied: (null)

今天看到了一个Xcode log出了一个错误 CUICatalog:Invalid asset name supplied: (null), Google了一下...

• ### CNN-RNN中文文本分类，基于TensorFlow 实现

http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tens...

• ### CentOS安装配置cmake

安装环境：CentOS-6.3 安装方式：源码编译安装  软件：cmake-2.8.10.2.tar.gz 下载地址：http://www.cmake....

• ### 你需要了解的Salesforce Lightning Editions

当Salesforce去年发布全新的Lightning Experience时候，这是一个大新闻，相信一定有很多人已经急于放弃原有的界面来使用Lightning...

• ### hibernate中对象的3种状态 瞬时态、持久态、脱管态

Hibernate的对象有3种状态，分别为：瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为P...

• ### AI + 3D！英伟达开源3D深度学习框架Kaolin

3D计算机视觉在医学影像、自动驾驶、机器人深度感知、视频游戏、虚拟和增强现实中有重要应用。

• ### [深度学习概念]·语音识别模型WaveNet介绍

这篇文章介绍了WaveNet，一种原始音频波形的深度生成模型。我们展示了WaveNets能够生成模仿任何人类语音的语音，并且听起来比现有的最佳文本语音系统更自然...