如何针对特定参数最小化我的函数,并保持其他参数不变
How to minimize my function for a specific parameter, and holding others constant
所以我试图通过最小化卡方函数来计算参数 beta 的值。为此,我使用了 scipy.optimize.minimize() 函数。我似乎无法获得代码来做我想做的事。有没有办法做到这一点?我愿意接受其他解决问题的方法。
对于某些背景,变量vr、rms和delta都是相同长度的一维元组,zeff、H和beta是参数。我正在尝试计算优化的 beta 值。
def chisq(beta,vr, delta,rvs,rms,zeff,H):
c = -(H/(1+zeff))*(beta/3)
model = c*np.multiply(rms,delta)
q = (vr-model)**2
p = model**-1
ratio = np.multiply(p,q)
chisq = np.sum(ratio)
return chisq
initial_guess = 0.47663662075855323
res = opt.minimize(chisq,initial_guess,args = (beta,delta,rvs,rms,zeff,H))
我通常会收到一条错误消息,指出函数的维度与 minimize() 函数的语法不匹配。
在你的例子中 beta 是优化变量,所以你不需要将它作为额外参数传递给函数 chisq:
res = opt.minimize(chisq, x0=initial_guess, args=(vr, delta, rvs, rms, zeff, H))
所以我试图通过最小化卡方函数来计算参数 beta 的值。为此,我使用了 scipy.optimize.minimize() 函数。我似乎无法获得代码来做我想做的事。有没有办法做到这一点?我愿意接受其他解决问题的方法。
对于某些背景,变量vr、rms和delta都是相同长度的一维元组,zeff、H和beta是参数。我正在尝试计算优化的 beta 值。
def chisq(beta,vr, delta,rvs,rms,zeff,H):
c = -(H/(1+zeff))*(beta/3)
model = c*np.multiply(rms,delta)
q = (vr-model)**2
p = model**-1
ratio = np.multiply(p,q)
chisq = np.sum(ratio)
return chisq
initial_guess = 0.47663662075855323
res = opt.minimize(chisq,initial_guess,args = (beta,delta,rvs,rms,zeff,H))
我通常会收到一条错误消息,指出函数的维度与 minimize() 函数的语法不匹配。
在你的例子中 beta 是优化变量,所以你不需要将它作为额外参数传递给函数 chisq:
res = opt.minimize(chisq, x0=initial_guess, args=(vr, delta, rvs, rms, zeff, H))