【发布时间】:2019-03-12 16:44:32
【问题描述】:
我正在上一门关于计算物理学的数值方法的课程。 我在下面有这个功能,它工作正常,但在第 12-13 次迭代后变得很慢。 我知道python很慢,但我从来不知道它这么慢。谁能告诉我这么慢的原因?
def fixpt(x0, es, imax):
g = lambda x: 3 * (x**3) + x - 3 + x
xr = x0
x = []
e = []
it = []
for i in range(imax):
xrold = xr
xr = g(xrold)
if xr != 0:
ea = abs((xr - xrold)/xr)*100
it.append(i)
x.append(xr)
e.append(ea)
if ea < es:
break
return it, x, e
【问题讨论】:
-
python 并不“慢”,它实际上对于大多数任务来说“足够快”。与其他一些语言相比,“慢”只是一个相对术语。通常,当您遇到速度瓶颈时,您需要询问是否有更好的方法来做某事。不要责怪语言,而是优化代码。
-
python 并不慢,你的代码是,你应该写你的函数应该做什么并提供基准
-
很抱歉没有提到它应该做什么,它基本上是一种称为“定点迭代”的寻根方法。我正在使用它来查找 3*x^3 + x - 3 的根。
-
@RockyLi 不是
2x - 3吗? -
@ParitoshSingh 是的。