牛顿迭代法计算平方根(Golang,Python实现)
Feb 6, 2018
题目:
- 牛顿法是通过选择一个初始点 z 然后重复这一过程求 Sqrt(x) 的近似值:
为了做到这个,只需要重复计算 10 次,并且观察不同的值(1,2,3,……)是如何逐步逼近结果的。 然后,修改循环条件,使得当值停止改变(或改变非常小)的时候退出循环。
牛顿迭代法的原理很简单,其实是根据f(x)在x0附近的值和斜率,估计f(x)和x轴的交点,看此动态图:
提示:定义并初始化一个浮点值,向其提供一个浮点语法或使用转换:
1 | z := float64(1) |
Golang实现
1 | package main |
Python实现
one:
1
2
3
4
5
6
7
8
9
10import math
def func(a):
if a < 1e-6:
return 0
last = a
c = a / 2
while math.fabs(c-last) > 1e-6:
last = c
c = (c + a / 2) / 2
return ctwo:
1
2
3
4
5
6c = 2
err = 1e-15
t = c
while abs(t - c/t)>err:
t = (c/t+t)/2.0
print(t)