Scipy fmin 参数传递
Scipy fmin argument passing
所以我对scipy.optimize.fmin如何接受参数感到有点困惑
假设我有两个功能:
def func_1(x, y):
return (x*x) + (y*y)
def func_2(x, y, a):
return ((x-a)*(x-a)) + ((y-a) *(y-a))
在 func_1 中我只想要 x 和 y 的最小值,而在 func_2 中我理想地想传递 a 的值,然后找到 x 和 y 的最小值y。我已经阅读了与此相关的其他一些问题,但仍然有些困惑。
尝试调用:fmin(fund_1, [1,1])
结果:fmin() takes at least 2 arguments (1 given)
非常感谢!
首先,将 func_1
和 func_2
的签名更改为:
def func_1(t):
x,y=t
return (x*x) + (y*y)
def func_2(t, a):
x,y=t
return ((x-a)*(x-a)) + ((y-a) *(y-a))
第一种情况,使用
from scipy.optimize import fmin
from numpy import array
fmin(func_1,array([1,1]))
在第二种情况下,您必须将参数 args=(a,)
传递给 fmin
。它会完全按照您的描述执行,
fmin(func_2,array([1,1]),args=(3,))
所以我对scipy.optimize.fmin如何接受参数感到有点困惑
假设我有两个功能:
def func_1(x, y):
return (x*x) + (y*y)
def func_2(x, y, a):
return ((x-a)*(x-a)) + ((y-a) *(y-a))
在 func_1 中我只想要 x 和 y 的最小值,而在 func_2 中我理想地想传递 a 的值,然后找到 x 和 y 的最小值y。我已经阅读了与此相关的其他一些问题,但仍然有些困惑。
尝试调用:fmin(fund_1, [1,1])
结果:fmin() takes at least 2 arguments (1 given)
非常感谢!
首先,将 func_1
和 func_2
的签名更改为:
def func_1(t):
x,y=t
return (x*x) + (y*y)
def func_2(t, a):
x,y=t
return ((x-a)*(x-a)) + ((y-a) *(y-a))
第一种情况,使用
from scipy.optimize import fmin
from numpy import array
fmin(func_1,array([1,1]))
在第二种情况下,您必须将参数 args=(a,)
传递给 fmin
。它会完全按照您的描述执行,
fmin(func_2,array([1,1]),args=(3,))