使用scipy来最小化也采用非变分参数的函数

Mig*_*uel 3 python numpy mathematical-optimization minimization scipy

我想使用该scipy.optimize模块来最小化一个功能.假设我的功能是f(x,a):

def f(x,a):
 return a*x**2
Run Code Online (Sandbox Code Playgroud)

对于一个固定的a,我希望尽量减少f(x,a)关于x.

scipy我可以导入例如fmin功能(I有一个旧SciPy的:v.0.9.0),得到一个初始值x0,然后优化(文档):

from scipy.optimize import fmin
x0 = [1]
xopt = fmin(f, x0, xtol=1e-8)
Run Code Online (Sandbox Code Playgroud)

失败因为f有两个参数并且fmin只传递一个(实际上,我还没有定义a).如果我做:

from scipy.optimize import fmin
x0 = [1]
a = 1
xopt = fmin(f(x,a), x0, xtol=1e-8)
Run Code Online (Sandbox Code Playgroud)

计算也将失败,因为"x未定义".但是,如果我定义x那么没有要优化的变量参数.

如何在此处将非变分参数用作函数参数?

War*_*ser 7

阅读其docstring中的args参数fmin,并使用

a = 1
x0 = 1
xopt = fmin(f, x0, xtol=1e-8, args=(a,))
Run Code Online (Sandbox Code Playgroud)