Sal*_*ali 16 python matlab numpy scipy
我正在使用numpy将一些Matlab代码转换为python .一切都很顺利,但最近我遇到了fminsearch功能.
所以,简而言之:是否有一种简单的方法可以在python中制作这样的东西:
banana = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;
[x,fval] = fminsearch(banana,[-1.2, 1])
Run Code Online (Sandbox Code Playgroud)
将返回
x = 1.0000 1.0000
fval = 8.1777e-010
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到任何看起来类似于numpy的东西.我发现的唯一相似之处是scipy.optimize.fmin.根据它的定义
使用下坡单纯形算法最小化函数.
但是现在我找不到使用这个函数编写上面提到的Matlab代码
pco*_*ing 19
这只是从Matlab语法到python语法的直接转换:
import scipy.optimize
banana = lambda x: 100*(x[1]-x[0]**2)**2+(1-x[0])**2
xopt = scipy.optimize.fmin(func=banana, x0=[-1.2,1])
Run Code Online (Sandbox Code Playgroud)
输出:
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 85
Function evaluations: 159
array([ 1.00002202, 1.00004222])
Run Code Online (Sandbox Code Playgroud)
fminsearch实现Nelder-Mead方法,请参阅Matlab文档:http://www.mathworks.com/help/matlab/ref/fminsearch.html.在参考部分.
要找到它的等价物scipy,您只需要检查提供的方法的doc字符串scipy.optimize.请参阅:http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin.html#scipy.optimize.fmin.fmin还实现了Nelder-Mead方法.
名称并不总是直接转换matlab为scipy,有时甚至是误导.例如,布伦特的方法实现fminbnd的Matlab,但optimize.brentq在scipy.因此,检查doc字符串总是一个好主意.
| 归档时间: |
|
| 查看次数: |
13260 次 |
| 最近记录: |