[英]How do I fix a value error when using scipy.integrate odeint function?
[英]The quad function in scipy.integrate displays the absolute error of the integration, how do I disable that?
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.5237490400794864e-07,33929167.71015946,3.766894319818743e-07,45013959.614510655,4.997553439357666e-07,55986286.18601066,6.215726398696237e-07,66846147.42465983
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=()
更改為mp = 0
。
實際上,如果您要保存所有單獨的quad
結果,我建議使用類似
mp = []
for p_bar in pwf:
m_p = quad(mofp, p_bar, pres, args=(mu, Z))[0]
mp.append(m_p)
或更簡潔地說,具有列表理解:
mp = [quad(mofp, p_bar, pres, args=(mu, Z))[0] for p_bar in pwf]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.