Python:优化.leastsq。 ValueError:具有多个元素的数组的真值不明确

标签 python scipy syntax-error least-squares ambiguous

除了最后一行,一切正常。 我的目标是通过卡方检验计算最佳拟合。 leastsq函数的应用有问题。 z,d 和 d_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))

这是错误的完整信息:

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()

最佳答案

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

Signature: scipy.integrate.quad(func, a, b, ...)

Integrate func from a to b (possibly infinite interval) using a technique from the Fortran library QUADPACK.

...

a : float

Lower limit of integration (use -numpy.inf for -infinity).

b : float

Upper limit of integration (use numpy.inf for +infinity).

关于Python:优化.leastsq。 ValueError:具有多个元素的数组的真值不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654986/

相关文章:

python - 3D Polar Plot - griddata 不允许三次插值,只有线性插值导致 "unsmooth"图

c# - 使用 C# 的先到先服务 (FCFS) CPU 调度错误

python - 如何将图像从 scikit-image 转换为 opencv2 和其他库?

python - Pyramid 框架能否在CGI服务器上运行

python - 在单元测试中使用 Flask 作为回调端点?

sql - ORA - 00936 错误,但无法找到第 2 行中缺少的内容

shell - Docker教程: Daemonized Container Closes - Syntax Error

python - 用于在 python 中排序多维数组的适当数据结构?

numpy - 如何将二维数组从较粗的分辨率插值到较精细的分辨率

python - 尝试优化 Lugre 动态摩擦模型中的参数