首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: optimize.leastsq。ValueError:包含多个元素的数组的真值是不明确的

Python: optimize.leastsq。ValueError:包含多个元素的数组的真值是不明确的
EN

Stack Overflow用户
提问于 2016-04-15 19:02:09
回答 1查看 878关注 0票数 2

除了最后一行外,一切正常。我的目标是通过x平方测试计算出最佳拟合值。最小二乘函数的应用是有问题的。z,d和d_err是相同长度的阵列(实验数据)。

代码语言:javascript
复制
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))

这是错误的完整信息:

代码语言:javascript
复制
File "C:\Python34\lib\site-packages\scipy\integrate\quadpack.py", line 360, in _quad
if (b != Inf and a != -Inf): ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-15 19:24:19

scipy.integrate.quad()的第三个参数是上限,必须是浮动。您使用z作为第三个参数,它是一个NumPy数组。

签名: scipy.integrate.quad(func,a,b,.) 使用Fortran库QUADPACK中的一种技术将func从a集成到b (可能是无限间隔)。

..。

A:浮动 集成的下限(使用-numpy.inf表示-infinity)。 B:浮子 积分的上限(使用numpy.inf表示+无穷大)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36654986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档