2016-08-07 29 views
1

我想用Scipy模塊在Python中繪製圖。據http://docs.scipy.org/doc/scipy/reference/special.html我寫代碼scipy.special.spherical_jn(n,x,0)Scipy - 使用球形貝塞爾函數時出現錯誤

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

from matplotlib import rcParams 
rcParams.update({'figure.autolayout': True}) 

def odrazTE(a,o,d): 
    temp1 = sp.spherical_jn[1,a,0] 
    temp2 = 1 
    return abs(temp1/temp2)**2 

t = np.arange(0.001, 2, 0.001) 
plt.plot(t,odrazTE(t,t,1),label='TE1') 
plt.show() 

雖然我編譯程序,我得到的是這樣的錯誤:

Traceback (most recent call last): 
    File "standing-sphere.py", line 33, in <module> 
    plt.plot(t,odrazTE(t,t,1),label='TE1') 
    File "standing-sphere.py", line 15, in odrazTE 
    temp1 = sp.spherical_jn[1,a,0] 
AttributeError: 'module' object has no attribute 'spherical_jn' 

有辦法如何與普通貝塞爾函數做貝塞爾函數和球形貝塞爾函數之間的關係,但我不喜歡這個解決方案,因爲sph.bess的派生。我需要的功能。

我是否有任何機會錯誤地設置了某些東西,並且它可以修復爲scipy.special.spherical_jn工作?

+2

那些在'spherical_jn'後面的方括號是什麼? – Carsten

+0

我的錯,但括號沒有變化。 –

回答

3

scipy.special.spherical_jn已於2016年7月25日發佈的scipy版本0.18.0中添加。我的猜測是您使用的是舊版本的scipy。檢查,運行

import scipy 
print(scipy.__version__) 
+0

謝謝,我有0.13.3,scipy的升級解決了我的問題。 :) –