使用固定点迭代法解决此方程

9

我该如何用不动点迭代法解决这个方程:

x3 + x - 1 = 0

有没有可以在线找到的 不动点迭代 代码(尤其是 Python)?

2个回答

12

使用scipy.optimize.fixed_point

import scipy.optimize as optimize

def func(x):
    return -x**3+1

# This finds the value of x such that func(x) = x, that is, where
# -x**3 + 1 = x
print(optimize.fixed_point(func,0))
# 0.682327803828

定义fixed_point的Python代码在scipy/optimize/minpack.py中。确切的位置取决于scipy安装的位置。您可以通过键入以下内容找到该位置:

In [63]: import scipy.optimize

In [64]: scipy.optimize
Out[64]: <module 'scipy.optimize' from '/usr/lib/python2.6/dist-packages/scipy/optimize/__init__.pyc'>

您可以通过访问文档页面并点击[source]链接来在线查看当前的fixed_point源代码。


1
如果您打算使用此答案中的代码片段,请注意:标量情况下的scipy 0.7.0代码存在错误。该行 if relerr < xtol: 应更改为 abs(relerr) < xtol - Len Blokken
@LenBlokken:谢谢你提醒我。 - unutbu

2
尝试使用SymPy库。这里有一个相关示例
>>> solve(x**3 + 2*x**2 + 4*x + 8, x)
[-2*I, 2*I, -2]

我不确定 SymPy 使用哪种算法来解决这个方程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接