2016-11-10 38 views
0
return sp.integrate.quad(int_jean, R, 10)/R 
TypeError: unsupported operand type(s) for /: 'tuple' and 'int' 

1/R似乎是導致錯誤,但我看不出爲什麼。它應該被一個浮動分開。我繪製了被積函數,它看起來沒問題。在Python中進行看似正常的劃分時出現類型錯誤

import matplotlib.pyplot as plt 
import scipy as sp 
import numpy as np 

def nu(r): 
    return 1/r 

def int_jean(r): 
    return nu(r)/r**2 

def rms(R): 
    return sp.sqrt(3 * sp.integrate.quad(int_jean, R, 10)/R 


print(rms(5)) 

t1 = np.arange(0.1, 10.0, 0.01) 
m = list(map(int_jean, t1)) 
print(m) 
plt.plot(t1, m) 
plt.show() 
+0

的類型錯誤是相當明確的有關問題...'quad'是返回一個元組 – donkopotamus

回答

1

quad返回一個元組。你不能用浮點數來劃分整個元組。也許你的意思是劃分積分的價值。你只需要抓住這回元素,第一個成員:

return sp.integrate.quad(int_jean, R, 10)[0]/R 
0

在文件粗略地看一眼告訴我們,scipy.integrate.quad返回積分的元組和絕對錯誤的估計。

想必,你想要做的事:

def rms(R): 
    return sp.sqrt(3 * sp.integrate.quad(int_jean, R, 10)[0]/R) 

(請注意,你缺少你的原始代碼的支架)

相關問題