Python薛定谔方程代码
时间: 2024-10-08 10:15:59 浏览: 51
在Python中,薛定谔方程是一个量子力学的基础方程,用于描述微观粒子的行为。由于它是偏微分方程,处理起来需要一些数学库的支持,比如NumPy和SciPy。下面是一个简单的示例,展示如何使用Python和`scipy.integrate.solve_ivp`函数求解一维薛定谔方程:
```python
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# 薛定谔方程的标准形式
def schrodinger_equation(t, psi, hbar, m, V):
# i代表虚数单位,dpsi_dt表示波函数对时间的一阶导数
return -1j * (hbar / 2m) * psi.diff(x) + V(x) * psi
# 定义势能函数V(x)
def potential(x):
return 0.5 * x**2 # 这里以简单的harmonic oscillator为例
# 参数设置
hbar = 1.0545718e-34 # 玻尔兹曼常数的约化值
m = 9.10938356e-31 # 氢原子的质量(kg)
x_min, x_max = -5, 5 # 考察区间
dx = 0.01 # 分点间隔
x_values = np.arange(x_min, x_max, dx)
# 初始化初始波函数
psi_0 = np.exp(-0.5 * x_values ** 2) # 选择一个简谐振子的初态
# 解决常微分方程
sol = solve_ivp(schrodinger_equation, (0, 10), psi_0, args=(hbar, m, potential))
# 绘制波函数随时间的变化
plt.plot(x_values, sol.y[0], label='t=0')
for t in [1, 2, 3]:
plt.plot(x_values, sol.sol(t)[0], label=f't={t:.1f}')
plt.xlabel('Position (x)')
plt.ylabel('Probability Density |ψ(x)|^2')
plt.legend()
plt.title('Time Evolution of a Simple Harmonic Oscillator')
plt.show()
阅读全文