2016-03-20 8 views
0

Matplotlib ile H-atomu için dalga fonksiyonlarının olasılık yoğunluğunu çizmeye çalışıyorum. Bunu kartezyen koordinatlarda yapmayı başardım, fakat daha sonra hesaplamalar için kutupsal koordinatlarda psi'yi seçersem daha iyi olur. Şimdi ben arsa çalışmasını yapmaya çalışıyorum, ama yanlış sonuçlar verir (parsellerin eksen çizgileri kartezyen koordinatlar olmalıdır). Bunu düzeltmek için bir fikrin var mı?pcolormesh

import numpy as np 
from matplotlib import pyplot as plt 
import matplotlib.cm as cm 
from scipy import integrate 


Z = 1 
a_0 = 1 
pi = np.pi 


n = 300 
r = np.linspace(-10, 10, n) 
theta = np.linspace(0, 2*pi, n) 
R, Theta = np.meshgrid(r, theta) 


def psi(r,theta): 
    return 1/(4*sqrt(2*pi))*(Z/a_0)**(3/2) * Z*r/a_0*np.exp(-Z*r/(2*a_0))*np.cos(theta) 


X1 = R*np.cos(Theta) 
X2 = R*np.sin(Theta) 

plt.pcolormesh(X1,X2,psi(R,Theta)**2) 
plt.axis('equal') 
plt.show() 

Yanlış çıkışı: Ben Kartezyen koordinatlarda ölçümü yaparken

Incorrect output

Ben istediğimi elde:

import numpy as np 
from matplotlib import pyplot as plt 
import matplotlib.cm as cm 
from scipy import integrate 


Z = 1 
a_0 = 1 
pi = np.pi 


n = 300 
x1 = np.linspace(-10, 10, n) 
x2 = np.linspace(-10,10, n) 
X1, X2 = np.meshgrid(x1,x2) 


def r(x,y): 
    return sqrt(x**2 + y**2) 

def psi(x,y): 
    return 1/(4*sqrt(2*pi))*(Z/a_0)**(3/2) * Z*r(x,y)/a_0*np.exp(-Z*r(x,y)/(2*a_0))*x/r(x,y) 



plt.pcolormesh(X1,X2,psi(X1,X2)**2) 

plt.axis('equal') 
plt.show() 

Çıktı:

correct output

+0

"Yanlış sonuç" ile ne demek istediğini açıklayabilir misiniz? 'Fig = plt.figure(); ax = fig.add_subplot (111, projection = 'polar'); ax.pocolormesh (R, Theta, psi (R, Theta) ** 2) kullanarak yeni bir polar eksen ekleyebilirsiniz.) '. Farklı satırlarda '' 'ile ayrılan tüm ifadeleri yazabilirsiniz. Gerçekten istediğin bu mu? –

+0

@ChristophTerasa: Belki de yorumunuz doğru yöndedir, ancak kodunuzda eklediğimden beri sadece boş polar eksenler verdiğinden emin değilim. Orijinal yazımda, "doğru sonuç" ile ne demek istediğimi açıklığa kavuşturmaya çalıştım. – student

+0

Nedeni buldum ve aşağıda bir çözüm yolladım. –

cevap

1

Kutupsal koordinatlardaki yarıçap yanlıştır, çünkü negatiftir ve bu da psi hesaplamanızı kutupsal koordinatlarda başarısız yapar. Basitçe sorunu çözmek için

r = np.linspace(0, 10, n) 

için

r = np.linspace(-10, 10, n) 

değiştirin.