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
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ı:
"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? –
@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
Nedeni buldum ve aşağıda bir çözüm yolladım. –