9

我怎样才能解出这个方程

x 3 + x - 1 = 0

使用定点迭代?

我可以在网上找到任何定点迭代代码(尤其是在 Python 中)吗?

4

2 回答 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

Python 代码定义fixed_point在 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'>

当前的fixed_point源代码可以通过转到文档页面并单击[source]链接在线找到。

于 2010-12-01T16:24:33.650 回答
2

试试SymPy库。这是一个相关的例子

>>> solve(x**3 + 2*x**2 + 4*x + 8, x)
[-2*I, 2*I, -2]

不过,我不确定 SymPy 使用哪种算法来求解方程。

于 2010-12-01T16:23:01.690 回答