scipy.optimize: argsの付け方

方法1:inputにアスタリスクをつけてタプルで受け取れるようにする。

def func(x,*a):
    return np.sum((x-a)**2)+1
scipy.optimize.minimize(func,x0=np.array([7,10,3.]),method='SLSQP',args=(2.5, ))

方法2:関数自体を返す関数を作る。

def make_func():
    def func(x,a):
        return np.sum((x-a)**2)+1
    return func
scipy.optimize.minimize(func,x0=np.array([7,10,3.]),method='SLSQP',args=(2.5, ))

二つ目のやり方はclass内でselfを受け取る時に使える。

  def make_gmmobjg(self):
    def gmmobjg(theta2,...):
      .....
      return f
    return gmmobjg