2016-08-07 40 views
1

Ich versuche, Diagramme in Python mit Scipy-Modul zu zeichnen. Nach http://docs.scipy.org/doc/scipy/reference/special.html schrieb ich Code mit scipy.special.spherical_jn(n,x,0):Scipy - Fehler bei der Verwendung von sphärischen Bessel-Funktionen

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

Während ich das Programm bin kompilieren, alles, was ich bekommen diese Fehler ist:

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' 

Es gibt Art und Weise, wie es zu tun mit regelmäßigen Bessel-Funktion und Beziehung zwischen Bessel und sphärische Bessel-Funktion, aber ich mag diese Lösung wegen der Ableitung von sph.bess nicht. Funktion, die ich auch brauche.

Gibt es eine Chance, dass ich etwas falsch gesetzt habe und es kann auf scipy.special.spherical_jn Arbeit behoben werden?

+2

Was sind diese eckigen Klammern nach 'spherical_jn' tun? – Carsten

+0

Meine Schuld, aber nichts ändert sich mit Klammern. –

Antwort

3

scipy.special.spherical_jn wurde in scipy Version 0.18.0 hinzugefügt, die am 25. Juli 2016 veröffentlicht wurde. Meine Vermutung ist, dass Sie eine ältere Version von scipy verwenden. Um zu überprüfen, führen Sie

import scipy 
print(scipy.__version__) 
+0

Danke, ich habe 0.13.3, upgrade von scipy löst mein Problem dann. :) –