除了最后一行以外,一切正常。 我的目标是通过卡方检验来计算最佳拟合。leatsq函数的应用有问题。 z、 d和d\u err是给定长度的数组(实验数据)。在
def df(z,omega_m,omega_l):
return 1/(np.sqrt(omega_m*(1+z)**3+(1-omega_m-omega_l)*(1+z)**2+omega_l))
def DL(z,omega_m,omega_l,H_0): # checked with Hubble's law with low z, it is consistent
f,err_f=scipy.integrate.quad(df,0,z,args=(omega_m,omega_l)) # it's evident err_f it's irrelevant
if omega_m+omega_l==1:
return 299792./H_0*(1+z)*f
elif omega_m+omega_l<1:
fk=np.sin(np.sqrt(np.absolute(1-omega_l-omega_m))*f)
return 299792./H_0*(1+z)/np.sqrt(np.absolute(1-omega_m-omega_l))*fk
elif omega_m+omega_l>1:
fk=np.sinh(np.sqrt(np.absolute(1-omega_l-omega_m))*f)
return 299792./H_0*(1+z)/np.sqrt(np.absolute(1-omega_m-omega_l))*fk
params=(0.3,0.7,73) # starting values for minimization omega_m, omega_l, H_0
def chi(params,z,d,d_err): # checked, this function works
return (d-DL(z,params[0],params[1],params[2]))**2/d_err
minimization,minimization_cov=optimize.leastsq(chi,params,args=(z,d,d_err))
以下是完整的错误消息:
^{pr2}$
scipy.integrate.quad()
的第三个参数是上限,必须是浮点。您使用z
作为第三个参数,这是一个NumPy数组。在。。。在
相关问题 更多 >
编程相关推荐