Привет, в настоящее время я работаю над проектом, для которого мне нужно использовать волновую теорию Шредингера для построения орбиталей
и при поиске в Интернете я столкнулся с препятствием, поскольку большинство из них просто моделируют его в программном обеспечении, таком как блендер и т. д. В то время как мне приходится сделайте это в чистом коде и не сможете правильно отобразить его с помощью matplot, код должен быть на Python, так как это мне удобнее всего.
это код, который я использовал для справки но у меня все еще есть проблемы
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 8))
ax1 = fig.add_subplot(231, projection='3d')
ax2 = fig.add_subplot(232, projection='3d')
ax3 = fig.add_subplot(233, projection='3d')
ax4 = fig.add_subplot(234, projection='3d')
ax5 = fig.add_subplot(235, projection='3d')
theta = np.linspace(0, 2*np.pi, 100)
phi = np.linspace(0, np.pi, 100)
theta, phi = np.meshgrid(theta, phi)
# Define the radial functions for each orbital
dx2_minus_y2 = np.sqrt(3/np.pi) * np.cos(phi)**2
dz2 = np.sqrt(5/16*np.pi) * (3*np.cos(phi)**2 - 1)
dyz = np.sqrt(15/np.pi) * np.sin(phi) * np.cos(phi) * np.exp(1j*theta)
dxz = np.sqrt(15/np.pi) * np.sin(phi) * np.cos(phi) * np.exp(1j*theta)
dxy = np.sqrt(15/np.pi) * np.sin(phi)**2 * np.exp(2j*theta)
# Convert spherical coordinates to Cartesian coordinates
x = np.sin(phi) * np.cos(theta)
y = np.sin(phi) * np.sin(theta)
z = np.cos(phi)
# colormap
colormap = plt.cm.viridis
# Plot the d-orbitals in separate subplots
ax1.plot_surface(x * (dx2_minus_y2 - y**2), y * (dx2_minus_y2 - y**2), z * (dx2_minus_y2 - y**2), cmap=colormap, alpha=0.8)
ax1.set_title('d_x^2 - y^2')
ax1.axis('off')
ax1.plot_wireframe(x * (dx2_minus_y2 - y**2), y * (dx2_minus_y2 - y**2) , z * (dx2_minus_y2 - y**2) , color='gray', linewidth=0.1)
ax2.plot_surface(x * dz2, y * dz2, z * dz2, cmap=colormap, alpha=0.8)
ax2.set_title('d_z^2')
ax2.axis('off')
ax2.plot_wireframe(x * dz2, y * dz2, z * dz2 , color='gray', linewidth=0.1)
ax3.plot_surface(x * dyz.real, y * dyz.real, z * dyz.real, cmap=colormap, alpha=0.8)
ax3.set_title('d_yz')
ax3.axis('off')
ax3.plot_wireframe(x * dyz.real, y * dyz.real, z * dyz.real , color='gray', linewidth=0.1)
ax4.plot_surface(x * dxz.real, y * dxz.real, z * dxz.real, cmap=colormap, alpha=0.8)
ax4.set_title('d_xz')
ax4.axis('off')
ax4.plot_wireframe(x * dxz.real, y * dxz.real, z * dxz.real, color='gray', linewidth=0.1)
ax5.plot_surface(x * dxy.real, y * dxy.real, z * dxy.real, cmap=colormap, alpha=0.8)
ax5.set_title('d_xy')
ax5.axis('off')
ax5.plot_wireframe(x * dxy.real, y * dxy.real, z * dxy.real, color='gray', linewidth=0.1)
fig.suptitle('Spatial Orientation of d-Orbitals with XYZ Axes', y=1.02)
plt.tight_layout()
plt.show()
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python