【发布时间】:2018-04-23 23:18:44
【问题描述】:
我正在尝试使用 2 个参数最小化一个函数:
def c_Gamma_gamma_fv(cf, cv):
return np.abs((4 * eta_gamma * charges**2 * a_q * cf).sum() + 4.* cf *a_tau/3. + a_w * cv)**2/Gamma_gamma
def mu_fv(cf, cv):
return np.array([cf**4, cf**2 * cv**2, cf**2 *
c_Gamma_gamma_fv(cf, cv), cv**2 * c_Gamma_gamma_fv(cf, cv), cf**4, cv**2 * cf**2, cf**2 * cv**2,
cv**4, cv**2 * cf**2, cv**4])
def chi_square_fv(cf, cv):
return ((mu_fv(cf, cv) - mu_data) @ inv_cov @ (mu_fv(cf, cv) - mu_data))
x0 = [1., 1.]
res_fv = minimize(chi_square_fv, x0)
但是,我收到错误“TypeError:chi_square_fv() 缺少 1 个必需的位置参数:'cv'”。但是,当我执行以下操作时:
print(chi_square_fv(1.,1.))
我得到了输出
38.8312698786
我不明白这一点,而且我是这种程序的新手。我该如何进行? OBS:Gamma_gamma 只是代码的一个常数。
【问题讨论】:
-
你试过
minimize(chi_square_fv, x0, args=(cv,)? (假设您有 cv;如果没有,您可能想准备函数以将 x 解压缩到所需的变量中;但这很难从您不完整的示例中读出:第一个参数 x 始终是决策变量的(平面)向量) -
是的,我试图最小化与 2 个参数相关的函数。将它们转换为向量解决了这个问题。非常感谢您的宝贵时间和帮助!