scipy.integrate中的quad函数显示集成的绝对错误,如何禁用它?

时间:2016-11-21 22:17:14

标签: python python-3.x scipy

    def mofp(p,mu,Z):
        return 2*p/(mu*Z)
    mp=()
    for p_bar in pwf:
        m_p= quad(mofp,p_bar,pres,args=(mu,Z))
        mp=mp+m_p
    print(mp)

它显示集成值以及我不想要的集成错误

输出:

  

(0.0,0.0,11422187.902904231,1.268117600139921e-07,   22731910.472957242,2.537490400794864e-07,33392167.71015946,3.766894319818743e-07,45013959.614510655,4.997553439357666e-07,55986286.18601066,6.215726398696237e-07,66846147.42465983,.....)

1 个答案:

答案 0 :(得分:1)

scipy.integrate.quad返回包含两个值的元组。你不能禁用它,但你可以通过索引结果来忽略第二个值,只使用第一个值:

        m_p = quad(mofp, p_bar, pres, args=(mu, Z))[0]

另一种方法是解压缩赋值中的值:

        m_p, abserr = quad(mofp, p_bar, pres, args=(mu, Z))

如果您决定要检查错误估计值,那么可以使用abserr

我假设您要添加所有这些值,而不是将它们存储在元组中,因此您还需要将mp的初始化从mp=()更改为{{1} }。

如果您实际上想要保存所有单独的mp = 0结果,我建议您使用类似

的内容
quad

或更简洁,列表理解:

mp = []
for p_bar in pwf:
    m_p = quad(mofp, p_bar, pres, args=(mu, Z))[0]
    mp.append(m_p)