我的2015款macbook air在运行一个简单的while循环时出现问题,这正常吗?

2024-10-02 18:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

from math import cos 
x = 2
while x != cos(x):
    x = cos(x)
print (x)

这是我让我的基础水平2015年mac Air运行的代码。我等了大约30-40秒,这时我的笔记本电脑开始变成热盘。我没有得到答案。这正常吗?我没想到会花那么多精力来运行它,尤其是在读到人们如何轻松地在他们的节目中同时运行30多个标签、Xcode、电影流之后。在

如果有帮助的话,我用终端运行它。在

规格为4gb ram/128gb sdd/i5-5250u(?)在


Tags: 答案代码fromimportmac水平mathcos
2条回答

由于浮点运算是不精确的(尝试在解释器中执行0.1 + 0.2),所以很有可能永远得不到相等。即使是这样,是否需要大量的迭代才能得到一个精确的等式(它可能是一个无穷级数;我不知道)?你应该做的是检查差值是否大于某个非常小的数字,比如0.000000000001:

while abs(x - cos(x)) > 0.000000000001:

这将确保它最终停止。在

最好是这样:

from math import cos

def diff(lhs, rhs, delta):
    return abs(lhs - rhs) > delta

curr = 2.0
prev = 0.1    
while diff(curr, prev, 0.00000001):
    curr, prev = cos(curr), curr

这样,每个循环只计算一次cos()。在

相关问题 更多 >