当前位置: 首页 > news >正文

用Python入门量子力学

文章目录

    • 求解薛定谔方程
    • 谐振子模型
    • 氢原子波函数

求解薛定谔方程

无限深方势阱是量子力学中非常经典的一个模型,其特点是,在势阱内势能为0,而势阱外,势能为无穷大。对应其薛定谔方程及边界条件为

[ − ℏ 2 2 m d 2 d x 2 + V ( x ) ] ψ ( x ) = E ψ ( x ) V ( x ) = { 0 , x ∈ [ 0 , L ] ∞ , others ⁡ \begin{aligned} &\left[-\frac{\hbar^2}{2m} \frac{\mathrm{d}^2}{\mathrm{d}x^2} + V(x)\right]\psi(x) = E\psi(x)\\ &V(x)=\left\{\begin{aligned} 0,&\quad x\in[0, L]\\ \infty,& \quad \operatorname{others} \end{aligned}\right. \end{aligned} [2m2dx2d2+V(x)]ψ(x)=Eψ(x)V(x)={0,,x[0,L]others

其中 ψ ( x ) \psi(x) ψ(x)为波函数, E E E为能量本征值,若只考虑 V ( x ) = 0 V(x)=0 V(x)=0时的情况,则波函数的通解为

ψ ( x ) = C 1 e − 2 m x − E ℏ + C 2 e 2 m x − E ℏ \psi{\left(x \right)} = C_{1} e^{- \frac{\sqrt{2} \sqrt{m} x \sqrt{- E}}{\hbar}} + C_{2} e^{\frac{\sqrt{2} \sqrt{m} x \sqrt{- E}}{\hbar}} ψ(x)=C1e2 m xE +C2e2 m xE

代码如下

from sympy import symbols, Function, Eq, diff, dsolve
from sympy import print_latexx = symbols('x')  # 空间坐标
L = symbols('L', positive=True)  # 势阱宽度
E = symbols('E')  # 能量
m = symbols('m', positive=True)  # 质量
hbar = symbols('hbar', positive=True)  # 普朗克常数
psi = Function('psi')  # 波函数
V = symbols('V')V = 0  # 无限深势阱内势能为 0
s = Eq(-hbar**2 / (2 * m) * diff(psi(x), x, 2) + V * psi(x), E * psi(x))res = dsolve(s, psi(x))
print_latex(res)

下面考虑边界条件,令 ψ ( 0 ) = 0 , ψ ( L ) = 0 \psi(0)=0, \psi(L)=0 ψ(0)=0,ψ(L)=0,则薛定谔方程的波函数和本征能量分别为

ψ n ( x ) = C 1 sin ⁡ ( π n x L ) , E n = π 2 ℏ 2 n 2 2 L 2 m \psi_n(x)=C_1 \sin{\left(\frac{\pi n x}{L} \right)}, \quad E_n=\frac{\pi^{2} \hbar^{2} n^{2}}{2 L^{2} m} ψn(x)=C1sin(Lπnx),En=2L2mπ22n2

由于波函数 ψ n ( x ) \psi_n(x) ψn(x)受到本征值的影响,sympy在计算时,会默认选择一个最简单的数值,若不事先设置 E n E_n En,则最终得到的 ψ ( x ) \psi(x) ψ(x)将为0,故而其代码为

from sympy import pin = symbols('n', integer=True, positive=True)
hbar = symbols('hbar', positive=True)
E = n**2 * pi**2 * hbar**2 / (2 * m * L**2)schrodinger_eq = Eq(-hbar**2 / (2 * m) * psi(x).diff(x, 2), E * psi(x))res = dsolve(schrodinger_eq, psi(x), ics={psi(0): 0, psi(L): 0})
print_latex(res)

谐振子模型

一维谐振子用经典的眼光来看就是可以沿着一个方向振动的弹簧,其薛定谔方程为

− ℏ 2 2 m d 2 ψ ( x ) d x 2 + 1 2 m ω 2 x 2 ψ ( x ) = E ψ ( x ) -\frac{\hbar^2}{2m} \frac{\mathrm{d}^2 \psi(x)}{\mathrm{d}x^2} + \frac{1}{2}m\omega^2x^2\psi(x) = E\psi(x) 2m2dx2d2ψ(x)+21mω2x2ψ(x)=Eψ(x)

其哈密顿算符可表示为

H ^ = − ℏ 2 2 m d 2 d x 2 + 1 2 m ω 2 x 2 \hat H=-\frac{\hbar^2}{2m}\frac{\text d^2}{\text dx^2}+\frac{1}{2}m\omega^2x^2 H^=2m2dx2d2+21mω2x2

其本征态的能级可表示为

E n = ( n + 1 2 ) ℏ ω E_n=(n+\frac{1}{2})\hbar\omega En=(n+21)ω

n = 0 n=0 n=0时,仍有 1 2 ℏ ω \frac{1}{2}\hbar\omega 21ω,体现了量子力学与经典力学的差别。

由于谐振子模型的通解中存在埃尔米特多项式,故而无法简单地通过dsolve推导出来,但sympy中提供了【qho_1d】模块,封装了谐振子的一些特性

from sympy import print_latex
from sympy.abc import m, x, omega
from sympy.physics.qho_1d import E_n, psi_n
print_latex(E_n(x, omega))
print_latex(psi_n(0, x, m, omega))

其中,【E_n】函数即为一维谐振子能量。【psi_n】则返回波函数 ψ n \psi_n ψn,其输入四个参数分别是 n n n,坐标 x x x,质量 m m m以及角频率 ω \omega ω,示例代码的输出结果为

m ω 4 e − m ω x 2 2 ℏ ℏ 4 π 4 \frac{\sqrt[4]{m \omega} e^{- \frac{m \omega x^{2}}{2 \hbar}}}{\sqrt[4]{\hbar} \sqrt[4]{\pi}} 4 4π 4 e2ℏx2

sympy中海提供了三维谐振子模块【sho】,其中【E_nl】函数可返回谐振子能量,【R_nl】函数可返回谐振子波函数,这两个函数的前两个参数均为 n , l n,l n,l表示主量子数和轨道量子数,示例如下

from sympy.physics.sho import R_nl, E_nl
from sympy.abc import r, nu, l
print_latex(E_nl(0, 0, 1))
print_latex(R_nl(0, 0, 1, r))

氢原子波函数

作为量子力学第一个成功的应用,氢原子的数学本质,是薛定谔方程在中心立场中的解,薛定谔方程和中心力场的势能 V ( r ) V(r) V(r)表示如下

− ℏ 2 2 μ ∇ 2 ψ + V ( r ) ψ = E ψ , V ( r ) = − e 2 r π ϵ 0 r -\frac{\hbar^2}{2\mu}\nabla^2\psi+V(r)\psi=E\psi,\quad V(r)=-\frac{e^2}{r\pi\epsilon_0r} 2μ22ψ+V(r)ψ=Eψ,V(r)=rπϵ0re2

使用球坐标,将Laplace算子展开

− ℏ 2 2 μ r 2 { ∂ ∂ r ( r 2 ∂ ∂ r ) + 1 sin ⁡ 2 θ [ sin ⁡ θ ∂ ∂ θ ( sin ⁡ θ ∂ ∂ θ ) + ∂ 2 ∂ ϕ 2 ] } ψ − e 2 r π ϵ 0 r = E ψ -\frac{\hbar^2}{2\mu r^2}\{\frac{\partial}{\partial r}(r^2\frac{\partial}{\partial r})+\frac{1}{\sin^2\theta}[\sin\theta\frac{\partial}{\partial\theta}(\sin\theta\frac{\partial}{\partial\theta})+\frac{\partial^2}{\partial\phi^2}]\}\psi-\frac{e^2}{r\pi\epsilon_0r}=E\psi 2μr22{r(r2r)+sin2θ1[sinθθ(sinθθ)+ϕ22]}ψrπϵ0re2=Eψ

其解为径向函数和球谐函数的乘积

ψ ( r , θ , ϕ ) = R n l ( r ) Y l m ( θ , ϕ ) \psi(r,\theta,\phi)=R_{nl}(r)Y_{lm}(\theta,\phi) ψ(r,θ,ϕ)=Rnl(r)Ylm(θ,ϕ)

Y l m Y_{lm} Ylm是球谐函数,其定义为

Y n m ( θ , ϕ ) = 2 n + 1 4 π ( n − m ) ! ( n + m ) ! e i m θ P n m ( cos ⁡ ϕ ) Y^m_n(\theta,\phi)=\sqrt{\frac{2n+1}{4\pi}\frac{(n-m)!}{(n+m)!}}e^{im\theta}P^m_n(\cos\phi) Ynm(θ,ϕ)=4π2n+1(n+m)!(nm)! eimθPnm(cosϕ)

其中 P n m P^m_n Pnm是连带勒让德多项式,定义为

P n m = ( − 1 ) m ( 1 − x 2 ) m / 2 d m d x m P n ( x ) P n ( x ) = ∑ k = 0 ∞ ( − n ) k ( n + 1 ) k ( k ! ) 2 ( 1 + x 2 ) k n k = { 1 k = 0 n ( n + 1 ) ⋯ ( n + k − 1 ) k > 1 P^m_n=(-1)^m(1-x^2)^{m/2}\frac{\text d^m}{\text dx^m}P_n(x)\\ P_n(x)=\sum^\infty_{k=0}\frac{(-n)_k(n+1)_k}{(k!)^2}(\frac{1+x}{2})^k\\ n_k=\left\{\begin{aligned} &1\quad&k=0\\ &n(n+1)\cdots(n+k-1)&\quad k>1 \end{aligned}\right. Pnm=(1)m(1x2)m/2dxmdmPn(x)Pn(x)=k=0(k!)2(n)k(n+1)k(21+x)knk={1n(n+1)(n+k1)k=0k>1

R n l R_{nl} Rnl可以继续展开为

R n l = ( 2 n a ) 3 ( n − l − 1 ) ! 2 n [ ( n + l ) ! ] 3 e − r n a ( 2 r n a ) l L n − l − 1 2 l + 1 ( 2 r n a ) R_{nl}=\sqrt{(\frac{2}{na})^3\frac{(n-l-1)!}{2n[(n+l)!]^3}}e^{-\frac{r}{na}}(\frac{2r}{na})^lL^{2l+1}_{n-l-1}(\frac{2r}{na}) Rnl=(na2)32n[(n+l)!]3(nl1)! enar(na2r)lLnl12l+1(na2r)

在上面两个公式中,主要出现了两个特殊函数,在scipy中均有实现。其中 Y l m Y_{lm} Ylm是球谐函数,对应【sph_harm】函数; L n − l − 1 2 l + 1 L^{2l+1}_{n-l-1} Lnl12l+1是拉盖尔多项式,对应【assoc_laguerre】函数。

刨除这两个令人费解的符号之后,波函数表达式中就只剩下一些数值变量了,其中 a a a是玻尔半径0.53 A ˚ \text{\r{A}} A˚,在写代码是带入0.53,表示整个模型以埃米为单位。

n , l , m n, l, m n,l,m则为不同本征函数的本征值,一般在物理学中被称为量子数

  • n n n 主量子数,为正整数,表示电子能级或其所处壳层。
  • l l l 角量子数,取值范围是 0 ∼ n − 1 0\sim n-1 0n1的整数,决定电子云的形状
  • m m m 磁量子数,取值范围是 − l ∼ l -l\sim l ll,代表电子在特定亚壳层中的具体轨道。

【hydrogen】模块提供了与氢原子相关的函数

  • E_nl(n) 返回Hatree能量
  • E_nl_dirac(n, l) 相对论修正后的Hatree能量。
  • R_nl(n, l, r) 氢原子的径向波函数
  • Psi_nlm(n, l, m, r, phi, theta) 氢原子波函数 ∣ n , l , m > |n,l,m\big> n,l,m

这三个函数都有一个默认参数Z=1,表示原子个数;r, phi, theta为空间坐标。

E_nl_dirac另有两个变量,spin_up为自旋,默认为True,表示 ⟨ ↑ ∣ \bra{\uparrow} False即为 ∣ ↓ ⟩ \ket{\downarrow} c为原子单位制下的光速,默认为精细结构常数的倒数 137.036 137.036 137.036。原子物理中常用Hatree作为能量单位, 1 E h = 4.3597 × 1 0 − 18 J 1E_h=4.3597\times10^{-18}J 1Eh=4.3597×1018J,约等于基态氢原子的电子势能。

通过下面的代码,可以打印出不同能级下电子的波函数

from sympy.physics.hydrogen import Psi_nlmr, phi, theta = symbols("r phi theta", positive=True)
Z=Symbol("Z", positive=True, integer=True, nonzero=True)print("|$nlm$|$\|\psi_{nlm}\\big>$|")
print("|:-|:-|")
for n in range(6):for l in range(n):for m in range(-l,l+1):md = latex(Psi_nlm(n,l,m,r,phi,theta,Z))print(f"|$\\psi_{{{n},{l},{m}}}$|${md}$", )

部分常见波函数的电子云如图所示。

在这里插入图片描述

相关文章:

  • 多种尝试解决Pycharm无法粘贴外部文本【本人问题已解决】
  • 数字智慧方案5870丨智慧交通顶层设计方案(89页PPT)(文末有下载方式)
  • Linux操作系统--进程间通信(中)(命名管道)
  • 数据库索引优化实战: 如何设计高效的数据库索引
  • 如何在纯C中实现类、继承和多态(小白友好版)
  • Go-web开发之帖子功能
  • 数值与字典解决方案第二十六讲:FILTER函数在去除数据的方法
  • 旧版本NotionNext图片失效最小改动解决思路
  • 对第三方软件开展安全测评,如何保障其安全使用?
  • AimRT从入门到精通 - 04RPC客户端和服务器
  • 【网络安全实验】SSL协议的应用
  • 【AI提示词】系统分析员
  • react + antd 实现后台管理系统
  • 计算机视觉的未来发展趋势
  • 【学习笔记】深入理解Java虚拟机学习笔记——第1章 走进Java
  • python实现基于Windows系统计算器程序
  • 复刻低成本机械臂 SO-ARM100 舵机配置篇(WSL)
  • FastAPI 与数据库交互示例
  • QGraphicsView QGraphicsScene QGraphicsItem 的关系
  • 文本中地理位置提取方法—正则和NLP模型
  • 一周文化讲座|那些年的年青人
  • “国宝探索记”增强亲子连接,国宝成了生活想象的一部分
  • 山西太原一小区发生爆炸,造成1人遇难21人受伤2人失联
  • 五一去哪儿| 追着花期去旅行,“赏花经济”绽放文旅新活力
  • 中老铁路跨境国际旅客突破50万人次
  • 我国将开展市场准入壁垒清理整治行动