我正在尝试用python翻译我的一部分matlab代码。实际上,我正在寻找如何翻译fminsearch
,我在这个网站上找到了这个例子:
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])
我的第一个问题是如何同时返回fmin
的值?在
在我输入代码时:
^{pr2}$Python回答我:
Xu = scipy.optimize.fmin(func=banana, X)
SyntaxError: non-keyword arg after keyword arg
我不明白Python为什么告诉我,因为我要做的是最小化函数diff_norm
更改X
的值,所以我精确地说,X
是一个长度为10的数组。在
非常感谢你的帮助!在
Python告诉您,因为在Python中,关键字参数总是跟在非关键字(即位置)参数后面(关键字参数有一个指定的名称,如
fmin
调用中的func
)。函数调用应该如下所示:为了遵守Python's calling conventions。或者,根据function definition of ^{} ,您只能为这两个第一个参数提供位置参数:
^{pr2}$这将返回最小化函数的值,因此,只需调用提供以下参数的函数:
或者,您可以使用
full_output = True
调用fmin
,并获得元素的元组,该元组的第二个元素是最小值:现在
minval
包含了完整的输出。在相关问题 更多 >
编程相关推荐