7
A
回答
10
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的/優化/ 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'>
這裏是SciPy的0.7.0代碼:
def fixed_point(func, x0, args=(), xtol=1e-8, maxiter=500):
"""Find the point where func(x) == x
Given a function of one or more variables and a starting point, find a
fixed-point of the function: i.e. where func(x)=x.
Uses Steffensen's Method using Aitken's Del^2 convergence acceleration.
See Burden, Faires, "Numerical Analysis", 5th edition, pg. 80
Example
-------
>>> from numpy import sqrt, array
>>> from scipy.optimize import fixed_point
>>> def func(x, c1, c2):
return sqrt(c1/(x+c2))
>>> c1 = array([10,12.])
>>> c2 = array([3, 5.])
>>> fixed_point(func, [1.2, 1.3], args=(c1,c2))
array([ 1.4920333 , 1.37228132])
See also:
fmin, fmin_powell, fmin_cg,
fmin_bfgs, fmin_ncg -- multivariate local optimizers
leastsq -- nonlinear least squares minimizer
fmin_l_bfgs_b, fmin_tnc,
fmin_cobyla -- constrained multivariate optimizers
anneal, brute -- global optimizers
fminbound, brent, golden, bracket -- local scalar minimizers
fsolve -- n-dimenstional root-finding
brentq, brenth, ridder, bisect, newton -- one-dimensional root-finding
"""
if not isscalar(x0):
x0 = asarray(x0)
p0 = x0
for iter in range(maxiter):
p1 = func(p0, *args)
p2 = func(p1, *args)
d = p2 - 2.0 * p1 + p0
p = where(d == 0, p2, p0 - (p1 - p0)*(p1-p0)/d)
relerr = where(p0 == 0, p, (p-p0)/p0)
if all(relerr < xtol):
return p
p0 = p
else:
p0 = x0
for iter in range(maxiter):
p1 = func(p0, *args)
p2 = func(p1, *args)
d = p2 - 2.0 * p1 + p0
if d == 0.0:
return p2
else:
p = p0 - (p1 - p0)*(p1-p0)/d
if p0 == 0:
relerr = p
else:
relerr = (p-p0)/p0
if relerr < xtol:
return p
p0 = p
raise RuntimeError, "Failed to converge after %d iterations, value is %s" % (maxiter,p)
2
試試SymPy庫。這裏有一個relevant example:
>>> solve(x**3 + 2*x**2 + 4*x + 8, x)
[-2*I, 2*I, -2]
我不知道哪種算法SymPy用來解方程,雖然。
相關問題
- 1. 定點迭代
- 2. 用迭代迭代迭代求解矩陣行
- 3. 並行迭代算法用於求解線性方程組
- 4. 如何求解具有求和的方程?
- 5. 迭代固定次數的樹形圖
- 6. 解析帶有固定位置的令牌的程序代碼
- 7. 求解方程
- 8. 的forEach()迭代沒有定義方法
- 9. vba求解 - 爲迭代添加延遲
- 10. 用Matlab求解代數方程
- 11. 求解兩個在Java代數方程
- 12. 的Python/Sympy:求解方程具有不同值的
- 13. 求解具有時間延遲的耦合微分方程
- 14. 任何人都可以提出有效的迭代方法來求解線性方程嗎?
- 15. 瞭解迭代
- 16. SciPy.sparse迭代求解器:沒有稀疏的右側支持?
- 17. 迭代通過具有多個子節點的XML文檔
- 18. 該迭代有什麼不同?
- 19. 迭代和遞歸解決方案
- 20. 點迭代器的Wierd接口方法
- 21. 具有固定屬性的固定元素的XML模式?
- 22. 創建具有固定頭,固定側邊欄角
- 23. Eigen中的迭代求解器在每次迭代中分配內存嗎?
- 24. 具有子迭代的LoadRunner參數
- 25. 迭代嵌套JSON數組具有角
- 26. 迭代在具有json4s一個JSON
- 27. C++迭代器VS具有長度()方法對象
- 28. 瞭解在迭代
- 29. 使用初始猜測值迭代求解的Matlab代碼
- 30. 該人在特定代中具有的後代數量