【发布时间】:2019-04-16 13:53:58
【问题描述】:
我需要创建一个函数,通过最小化卡方误差来优化参数 beta。
我的方程式是 error = vg(r) + (beta/3)*H/(1+z)rdelta(r)
我有 vg(r)、delta(r) 和 r 本身的数据。 H 和 z 是已知参数,我可以猜测为 beta,但我不知道如何在 python 中实现它。
我是 python 新手,需要一些帮助
我尝试过使用 scipy.optimize.minimize 函数,但似乎无法让它工作。
import numpy as np
from scipy import optimize as opt
import math
#parameters
z = 1.05352
bias = 1.85
h = 0.676
Om = 0.31
Ol = 1.-Om
pi = math.pi
H = 1.1
#beta = 0.47663662075855323
# ^this is a guess, I need this parameter optimized
def veldif(vr, delta):
model = -beta/3*H/(1+z)**delta
d = np.power((vr-model),2)
quotient = np.divide(d ,model)
chisquare = np.sum(quotient)
return chisquare
result = opt.minimize(veldif,beta)
预期结果:优化的 beta 值(标量)
实际结果:错误(似乎是通过“veldif”函数传递值的错误,以及“veldif”函数的语法。
【问题讨论】:
-
能把错误函数贴出来吗?
-
您应该分享您所面临的错误。
标签: python parameters minimization