Python Scipy-fmin参数传递

Python Scipy-fmin参数传递,python,scipy,mathematical-optimization,Python,Scipy,Mathematical Optimization,所以我对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的最小值。我已经阅读了其他一些与此相关的问题,但仍然有点困惑 尝试调用:fmin(fund_1[1

所以我对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的最小值。我已经阅读了其他一些与此相关的问题,但仍然有点困惑

尝试调用:
fmin(fund_1[1,1])
结果:
fmin()至少接受2个参数(1个给定)


非常感谢

首先,将
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,))

第一个呢?我一直试图传递:fmin(func_1[1,1]),并接收fmin()至少接受2个参数(给定1个)。这让Meahh很困惑,好吧,那么fmin优化了一个向量?也就是说,我试图求解的任何参数都必须包含在数组中?是的。
func_1/func_2
的第一个参数是向量,上面是
t
func_2
signature中出现的所有其他参数,在本例中仅为
a
,都是必须通过
args=(a,)
作为元组传递给
fmin
的附加参数。非常感谢。最后一个问题,我保证。所以,我让func_1运行,但是x和y都应该是0,但是我得到了返回:[-2.10235293e-05 2.54845649e-05],当我继续调用这些值的func_1时,我没有收到预期的作为fund_1最小值的0。这是我这边的错误,还是scipy的错误?这是一个数值解,然后会受到数值错误的影响。所以这不是谁的错。如果您可以通过更改
xtol
ftol
的值来询问
fmin
以获得更好的数值精度。看。