python求解薛定谔方程_用python学量子力学(1)

华中师范大学 hahakity

在网上看到一个使用 Matlab 教量子力学的文章,很有意思。这里用 python 语言实现一遍, 让同学们对量子力学,对偏微分方程的差分近似解法有一个更直观的理解。

学习目标:理解量子力学的波函数表示与矩阵表示的等价性

学会用向量表示函数,用矩阵表示算符(一阶微分,二阶微分)

学会数值求解任意势阱下定态薛定谔方程的能级与波函数

预备知识:微分的差分近似

量子力学基础(薛定谔方程)

波函数的向量表示

在用 python 画图时,我们一般先将区间离散化,计算出离散坐标上的函数值,然后画折线图。比如对于函数

, 使用如下代码画图,

# np.linspace 将区间 [-2, 2] 离散化为 100 个坐标点

x = np.linspace(-2, 2, 100)

# 计算 100 个坐标点上的函数值 f

f = np.sin(x) / x

plt.plot(x, f)

将波函数表示为离散坐标点上的实数或复数,写为列向量

变得非常容易理解。

回忆微分的有限差分近似,对于一阶微分,

对于二阶微分,

对区间 [a, b] 所有离散坐标上的 f(x) 微分和二阶微分可以矩阵化,

算符的矩阵表示

当 f(x) 用列向量

表示时,就可以用矩阵来表示微分算子。

因此波动力学与矩阵力学统一。

一阶微分

可以用微分算子矩阵 D 点乘

计算。

二阶微分

可以用微分算子矩阵 D 从左边连续作用两次到

上,也可以使用差分格式直接构造拉普拉斯矩阵,由

计算。

对于随便给定的函数

, 可以看到上述有限差分矩阵作用在离散的

上的结果与解析解非常一致。

解定态薛定谔方程

的任务转化为求哈密顿矩阵 H 的本征值 E 和本征向量

注意在量子力学里,动能项里的动量 p 换成了微分算符,进一步用 Laplacian 矩阵表示,势能 U(x) 在区间离散化后,填充在矩阵的对角元上。

如果是多粒子系统,比如考虑多个电子两两之间的库伦相互作用,则两粒子势能

会带来非对角元。

定态薛定谔方程的数值解

这里我用 python 把一维定

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值