Python 黄金分割比近似函数,在后继函数和前导函数之间有一个数字界要断开

Python 黄金分割比近似函数,在后继函数和前导函数之间有一个数字界要断开,python,Python,此函数应返回第一个黄金分割率近似值,即与前一个函数相比小于eps。 公式为:golden_ratio_approximation=1+1/前置,以获得下一个数字近似值 def approximation_of_golden_ratio(eps): first_k = 1 while True: next_k = 1 + 1/first_k if eps > (next_k - first_k): break

此函数应返回第一个黄金分割率近似值,即与前一个函数相比小于eps。 公式为:golden_ratio_approximation=1+1/前置,以获得下一个数字近似值

def approximation_of_golden_ratio(eps):
    first_k = 1
    while True:
        next_k = 1 + 1/first_k
        if eps > (next_k - first_k):
            break
        first_k = next_k
    return next_k
返回1.5而不是1.6


我看不出我的代码出了什么问题。

我发现了什么问题。我应该用绝对值来计算距离,而不是普通的减法

如果eps>abs(下一个-第一个):


next_k-first_k
不是当前值与实际值之间的差异,而是两个连续估计值之间的差异。一般来说,没有理由认为这个差值小于
eps
就意味着你小于
eps
偏离了确切的值。我发现了什么问题是的,它应该是绝对值。我还为任何可能需要解决类似问题的人回答了我自己的问题。我不知道在这个论坛上接受你自己的答案是如何被接受的。如果你认为这是最恰当的,我也可以删除整个问题。
approximation_of_golden_ratio(0.1)
def approximation_of_golden_ratio(eps):
first_k = 1
while True:
    next_k = 1 + 1/first_k
    if eps > abs(next_k - first_k):
        break
    first_k = next_k
return next_k