所以我对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() takes at least 2 arguments (1 given)

非常感谢!

最佳答案

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


在第二种情况下,必须将fmin参数传递给args=(a,)。它将完全按照您的描述进行操作,

fmin(func_2,array([1,1]),args=(3,))

关于python - Scipy FMIN参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27857828/

10-11 03:47