【发布时间】:2016-12-29 12:01:22
【问题描述】:
我得到了一个函数(类似错误),我必须最小化并获得新参数 alpha 和 r:
#!/usr/bin/env python
import numpy as np
from scipy.integrate import quad
import scipy.optimize as opt
def integrand(t, alpha, r):
return np.exp(-alpha*(t-r))**2
def my_function(alpha, r):
return quad(integrand, 0, 5.0, args=(alpha, r))[0]
alpha = np.arange(1.0, 2.0, 0.1)
r = np.arange(1.0, 2.0, 0.1)
x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
res = opt.minimize(my_function, x0, args=(alpha, r), method='CG', tol=1.e-2, options={'gtol': 0.01, 'maxiter': 5})
我的第一个问题是我是否选择了正确的最小化方法。如果是这样,谁能详细说明我必须将哪些参数传递给最小化方法?
目前返回错误信息:
File "./test.py", line 15, in <module>
res = opt.minimize(my_function, x0, args=(alpha, r), method='CG', tol=1.e-2, options={'gtol': 0.01, 'maxiter': 5})
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/_minimize.py", line 439, in minimize
return _minimize_cg(fun, x0, args, jac, callback, **options)
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 1159, in _minimize_cg
gfk = myfprime(x0)
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 289, in function_wrapper
return function(*(wrapper_args + args))
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 622, in approx_fprime
return _approx_fprime_helper(xk, f, epsilon, args=args)
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 556, in _approx_fprime_helper
f0 = f(*((xk,) + args))
File "/usr/local/lib/python2.7/site-packages/scipy/optimize/optimize.py", line 289, in function_wrapper
return function(*(wrapper_args + args))
TypeError: my_function() takes exactly 2 arguments (3 given)
【问题讨论】:
-
我不确定传递了哪些参数,但您可以使用
my_function(*args, **kwargs): print(args, kwargs)查看您实际传递给函数的内容。