Heron's method生成一个数字序列,表示√n的更好和更好的近似值。序列中的第一个数字是任意猜测的;序列中的每个其他数量从使用公式先前数分组获得:Python中的Heron方法
(1/2)*(prev+n/prev)
我应该写一个函数heron()
其作为输入两个数字:Ñ和错误。该函数应该以初始猜测1.0为√n开始,然后重复生成更好的近似值,直到连续近似值之间的差值(更确切地说,差值的绝对值)最大为误差。
usage:
>>> heron(4.0, 0.5)
2.05
>>> heron(4.0, 0.1)
2.000609756097561
这是一个有点棘手,但我需要保持四个变量的轨迹:
# n, error, prev and current
我还需要一个while循环与条件:
((current - prev) > error):
的一般规则,而循环是:
# old current goes into new prev
所以这是我走到这一步,这不是多,因为下手我不知道如何把而循环下“如果”声明。
def heron(n, error):
guess = 1
current = 1
prev = 0
while (current - prev) > error:
previous==1/2*(guess+n/guess):
print (previous) # just a simple print statement
# in order to see what i have so far
有人可以给我正确的方向几个指针吗?
谢谢
请具体说明您的问题。你需要什么? –
好吧,它很难,我想我需要找到一种方法让while循环应用公式以及它在前一个循环中产生的结果。 所以让说,在第一循环中的结果是3,和让我们假设n是5 那么新的式shouls看起来像这样: 二分之一*(3 + 5/3) 其中= 2.3333333333333335这个数字现在进入下一个循环的公式,直到条件不再满足为止。 我只是不能让while循环来运行。 – Snarre
相关:[用Python中的任意精度计算平方根](http://stackoverflow.com/a/1623677/4279) – jfs