SymPy 玻色子量子算符模块 boson 完全指南:BosonOp、Fock 态与相干态

SymPy 玻色子量子算符模块 boson 完全指南:BosonOp、Fock 态与相干态 SymPy 玻色子量子算符模块 boson 完全指南BosonOp、Fock 态与相干态【免费下载链接】sympyA computer algebra system written in pure Python项目地址: https://gitcode.com/GitHub_Trending/sy/sympy本文围绕 SymPy 的量子物理子包sympy.physics.quantum.boson展开系统讲解玻色子产生/湮灭算符BosonOp、Fock 数态BosonFockKet/BosonFockBra与相干态BosonCoherentKet/BosonCoherentBra的构造方式、代数性质与作用规则。读者阅读后将掌握如何在 SymPy 中构建满足[a, a†] 1的玻色子算符代数、对 Fock 态与相干态执行算符作用qapply并计算内积可用于谐振子、量子光学、二次量子化等问题的符号推导。一、模块定位与文档来源本文所依据的官方 API 文档为 doc/src/modules/physics/quantum/boson.rst该文档本身是一个automodule指令存根通过 Sphinx 自动提取模块 docstring 生成 API 参考页 Boson .. automodule:: sympy.physics.quantum.boson :members:也就是说该文档页的实质内容完全来自模块源码 sympy/physics/quantum/boson.py 中各类的 docstring 与签名。模块头注释一句话点明了定位“Bosonic quantum operators.”玻色子量子算符并与姊妹模块sympy.physics.quantum.fermion费米子算符对应文档见 doc/src/modules/physics/quantum/fermion.rst共同构成二次量子化框架的基础。模块通过__all__暴露了 5 个公开符号见 boson.py符号类型含义BosonOp算符类玻色子产生/湮灭算符BosonFockKet态矢类Fock 数态右矢 |n⟩BosonFockBra态矢类Fock 数态左矢 ⟨n|BosonCoherentKet态矢类相干态右矢 |α⟩BosonCoherentBra态矢类相干态左矢 ⟨α|模块依赖的核心基础设施——Operator、Ket/Bra、HilbertSpace/FockSpace、Dagger、Commutator、qapply——均来自sympy.physics.quantum包见 sympy/physics/quantum/init.py 的__all__列表。二、BosonOp玻色子产生与湮灭算符BosonOp继承自量子算符基类Operator见 sympy/physics/quantum/operator.py是模块的核心类。其 docstring 给出了最根本的代数定义A bosonic operator that satisfies[a, Dagger(a)] 1.即它描述满足玻色子正则对易关系canonical commutation relation, CCR的算符。2.1 构造参数BosonOp的构造函数接受一到两个位置参数见 boson.py参数类型说明namestr玻色子模式的标签如a、bannihilationboolTrue默认表示湮灭算符False表示产生算符构造规则如下只传一个参数时自动补充annihilationTrue等价于BosonOp(a, True)传两个参数时第二个参数会被转换为Integer后随name一起存入args参数个数不为 1 或 2 时抛出ValueError1 or 2 parameters expected。对应的两个只读属性property def name(self): return self.args[0] property def is_annihilation(self): return bool(self.args[1])此外类方法default_args()返回(a, True)即默认构造的算符标签为a且为湮灭算符。2.2 基本用法 from sympy.physics.quantum import Dagger, Commutator from sympy.physics.quantum.boson import BosonOp a BosonOp(a) # 湮灭算符 a a.is_annihilation True Dagger(a) # 产生算符 a†同样是一个 BosonOp Dagger(a) Dagger(a).is_annihilation False Commutator(a, Dagger(a)).doit() # 正则对易关系 [a, a†] 1 1上面的示例直接来自 boson.py 的 docstring。Dagger是sympy.physics.quantum.dagger中定义的通用厄米共轭操作见 sympy/physics/quantum/dagger.py对矩阵等价于转置加复共轭对算符则调用其_eval_adjoint。2.3 源码级实现共轭、对易与反对易BosonOp通过一系列_eval_*钩子方法接入 SymPy 量子算符的分发机制dispatch method。Operator基类的_eval_commutator/_eval_anticommutator/_apply_operator会按操作数类型拼装方法名并分发调用见 sympy/physics/quantum/operator.pyBosonOp正是利用这一机制实现自动化简厄米共轭_eval_adjoint见 boson.pydef _eval_adjoint(self): return BosonOp(str(self.name), not self.is_annihilation)湮灭算符的共轭就是同名模式的产生算符反之亦然因此Dagger(a)仍是一个BosonOp且Dagger(Dagger(a)) a。对易关系_eval_commutator_BosonOp见 boson.pydef _eval_commutator_BosonOp(self, other, **hints): if self.name other.name: # [a†, a] -1 if not self.is_annihilation and other.is_annihilation: return S.NegativeOne elif independent in hints and hints[independent]: # [a, b] 0 return S.Zero return None逻辑要点同一模式[a†, a] -1等价于[a, a†] 1其他组合如[a, a]、[a†, a†]未显式写出返回None交由上层保持未化简形式不同模式只有传入independentTrue提示时才化简为 0。默认情况下不同模式算符的对易子保持展开形式例如测试用例中的Commutator(a, Dagger(b)).doit()结果是a*Dagger(b) - Dagger(b)*a见 sympy/physics/quantum/tests/test_boson.py。与费米子对易_eval_commutator_FermionOp见 boson.pydef _eval_commutator_FermionOp(self, other, **hints): return S.Zero玻色子算符与费米子算符恒对易即 [BosonOp, FermionOp] 0这是两种统计粒子可以共存于同一二次量子化框架的依据。反对易关系_eval_anticommutator_BosonOp见 boson.pydef _eval_anticommutator_BosonOp(self, other, **hints): if independent in hints and hints[independent]: # {a, b} 2 * a * b, because [a, b] 0 return 2 * self * other return None对于独立模式由[a, b] 0可推出{a, b} ab ba 2ab。2.4 打印与显示BosonOp针对字符串、LaTeX 与 pretty 打印分别实现见 boson.pystr 打印湮灭算符直接显示模式名如a产生算符显示为Dagger(a)LaTeX 打印湮灭算符为{a}产生算符渲染为带共轭角标的{a}^\daggerpretty 打印产生算符在模式名右上角加†Unicode DAGGER 字符适合终端/交互环境展示。此外由于BosonOp是普通 SymPy 表达式Dagger(exp(a)) exp(Dagger(a))这类指数算符关系也会被自动处理测试见 test_boson.py。三、Fock 数态BosonFockKet 与 BosonFockBraFock 态数态是玻色子模式占据数算符的本征态记为 |n⟩n 为非负整数。3.1 构造与属性from sympy.physics.quantum.boson import BosonFockKet, BosonFockBra ket BosonFockKet(3) # |3⟩ ket.n # 3 bra BosonFockBra(2) # ⟨2| bra.n # 2构造参数n是NumberFock 态占据数存入label[0]通过.n属性读取BosonFockKet.dual_class()返回BosonFockBraBosonFockBra.dual_class()返回BosonFockKet实现左右矢互相对偶二者所属希尔伯特空间均为FockSpace()见 boson.py即二次量子化框架下的无穷维Fock 空间——FockSpace的 docstring 指出它在数学上是单粒子希尔伯特空间的无穷直和直积其dimension属性为oo见 sympy/physics/quantum/hilbert.py。3.2 正交归一性Fock 态满足正交归一关系⟨n|m⟩ δ_{n,m}源码通过KroneckerDelta实现见 boson.pydef _eval_innerproduct_BosonFockBra(self, bra, **hints): return KroneckerDelta(self.n, bra.n)验证对应测试 test_boson.py (BosonFockBra(0) * BosonFockKet(1)).doit() 0 (BosonFockBra(1) * BosonFockKet(1)).doit() 13.3 产生/湮灭算符对 Fock 态的作用BosonFockKet通过_apply_from_right_to_BosonOp实现了算符对态的作用规则见 boson.pydef _apply_from_right_to_BosonOp(self, op, **options): if op.is_annihilation: return sqrt(self.n) * BosonFockKet(self.n - 1) else: return sqrt(self.n 1) * BosonFockKet(self.n 1)这正是量子力学中的标准规则湮灭a|n⟩ √n |n−1⟩n0 时给出√0 · |−1⟩的边界情形需在物理语境下取舍产生a†|n⟩ √(n1) |n1⟩。由这两条规则可进一步推得占据数算符N a†a满足N|n⟩ n|n⟩。算符作用的实际执行者是qapply它会把乘积中的算符逐个应用到态上分派顺序为优先尝试_apply_operator否则回退到_apply_from_right_to见 sympy/physics/quantum/qapply.py。典型实战示例——计算 ⟨n|(a†)ⁿ|0⟩ from sympy.physics.quantum import qapply n 3 qapply(BosonFockBra(n) * Dagger(a)**n * BosonFockKet(0)) sqrt(6)结果为√6 √(3!)即一般地⟨n|(a†)ⁿ|0⟩ √(n!)。这正是测试 test_boson.py 中用sqrt(prod(range(1, n1)))验证的结论。四、相干态BosonCoherentKet 与 BosonCoherentBra相干态 |α⟩ 是湮灭算符的本征态本征值为复数 α相干态振幅在量子光学中对应于经典相干光场。4.1 构造与属性from sympy.physics.quantum.boson import BosonCoherentKet, BosonCoherentBra ket BosonCoherentKet(alpha) # |α⟩alpha 可为 Number 或 Symbol ket.alpha # α bra BosonCoherentBra(alpha) # ⟨α|构造参数alpha为Number或Symbol通过.alpha属性读取二者互相对偶dual_class相互指向所属希尔伯特空间为抽象的HilbertSpace()见 boson.py对应 sympy/physics/quantum/hilbert.py 中定义的抽象希尔伯特空间。4.2 湮灭算符本征性质相干态的核心性质是a|α⟩ α|α⟩源码直接体现在_apply_from_right_to_BosonOp中见 boson.pydef _apply_from_right_to_BosonOp(self, op, **options): if op.is_annihilation: return self.alpha * self else: return None湮灭算符作用本征值 α 提出态不变产生算符作用不满足本征方程返回None不做化简。对应测试test_boson.py qapply(a * BosonCoherentKet(alpha1)) 1.2*|1.2左矢方向有对应的_apply_operator_BosonOp实现⟨α|a† α⟨α|见 boson.py。4.3 相干态的内积非正交性两个相干态的内积在源码中直接给出了闭式表达式见 boson.pydef _eval_innerproduct_BosonCoherentBra(self, bra, **hints): if self.alpha bra.alpha: return S.One else: return exp(-(abs(self.alpha)**2 abs(bra.alpha)**2 - 2 * conjugate(bra.alpha) * self.alpha)/2)即相同参数⟨α|α⟩ 1归一化不同参数⟨α|β⟩ exp(−(|α|² |β|² − 2β̄α)/2)其中β̄表示 β 的复共轭。注意该表达式恒不为零说明相干态彼此不正交非正交性这是相干态有别于 Fock 态的重要特征。对实数参数 α₁、α₂ 的特殊情形公式退化为exp(−(α₁−α₂)²/2)测试用例正是据此验证见 test_boson.py alpha1, alpha2 1.2, 4.3 (BosonCoherentBra(alpha1) * BosonCoherentKet(alpha1)).doit() 1 abs((BosonCoherentBra(alpha1) * BosonCoherentKet(alpha2)).doit() ... - exp((alpha1 - alpha2) ** 2 * Rational(-1, 2))) 1e-12 True五、与配套工具的协同使用boson模块不是孤立的它与sympy.physics.quantum中的通用工具深度协作这些工具均有对应的 API 文档页工具模块与玻色子模块的关系Daggersympy/physics/quantum/dagger.py产生算符的共轭操作入口文档见 doc/src/modules/physics/quantum/dagger.rstCommutator/AntiCommutatorsympy.physics.quantum.commutator/anticommutator触发BosonOp._eval_commutator_*的自动化简文档见 doc/src/modules/physics/quantum/commutator.rstqapplysympy/physics/quantum/qapply.py执行算符对态的作用文档见 doc/src/modules/physics/quantum/qapply.rstFockSpace/HilbertSpacesympy/physics/quantum/hilbert.pyFock 态与相干态各自所属的希尔伯特空间文档见 doc/src/modules/physics/quantum/hilbert.rstOperator/Ket/Brasympy.physics.quantum.operator/state算符与态矢的公共基类文档见 doc/src/modules/physics/quantum/operator.rst一次把上述工具串联起来的完整工作流示例from sympy.physics.quantum import Dagger, Commutator, qapply from sympy.physics.quantum.boson import (BosonOp, BosonFockKet, BosonFockBra, BosonCoherentKet) a BosonOp(a) n 3 # 1) 正则对易关系 assert Commutator(a, Dagger(a)).doit() 1 # 2) Fock 态产生算符逐级提升⟨3|(a†)^3|0⟩ √6 assert qapply(BosonFockBra(n) * Dagger(a)**n * BosonFockKet(0)) ** 2 6 # 3) 相干态湮灭算符本征方程 a|α⟩ α|α⟩ alpha 1.2 assert qapply(a * BosonCoherentKet(alpha)) alpha * BosonCoherentKet(alpha)六、源码结构与测试印证6.1 类实现清单boson.py类行号关键钩子方法BosonOpL23-L114_eval_commutator_BosonOp、_eval_commutator_FermionOp、_eval_anticommutator_BosonOp、_eval_adjointBosonFockKetL116-L150_eval_innerproduct_BosonFockBra、_apply_from_right_to_BosonOpBosonFockBraL152-L176_eval_hilbert_space、dual_classBosonCoherentKetL179-L215_eval_innerproduct_BosonCoherentBra、_apply_from_right_to_BosonOpBosonCoherentBraL218-L244_apply_operator_BosonOp、dual_class6.2 测试覆盖test_boson.py模块的全部核心行为都有对应测试test_bosonoperatorL13-L31验证BosonOp类型、is_annihilation标记、等值语义同模式同名、不同模式、不同升降标记均区分、正则对易关系[a, a†] 1、不同模式对易子保持未化简、Dagger(exp(a)) exp(Dagger(a))test_boson_statesL34-L51验证 Fock 态正交归一、⟨n|(a†)ⁿ|0⟩ √(n!)以及相干态归一化、两相干态重叠公式与湮灭本征方程。若要在本地运行这些测试可在仓库根目录执行python -m pytest sympy/physics/quantum/tests/test_boson.py -v七、总结与延伸sympy.physics.quantum.boson以极简的类层次实现了二次量子化中最常用的玻色子代数对象BosonOp内建正则对易关系[a, a†] 1与费米子对易关系BosonFockKet/BosonFockBra提供正交归一且携带a、a†作用规则√n、√(n1) 系数的 Fock 态BosonCoherentKet/BosonCoherentBra提供湮灭算符本征态及其非正交内积公式。所有行为都通过_eval_*分发钩子接入Dagger、Commutator、qapply等通用工具使其可以无缝参与更大的符号量子力学计算。进一步阅读费米子对应实现见 doc/src/modules/physics/quantum/fermion.rst算符与态的基础框架见 doc/src/modules/physics/quantum/operator.rst 与 doc/src/modules/physics/quantum/state.rst完整的量子物理模块导航见 doc/src/modules/physics/quantum/index.rst。【免费下载链接】sympyA computer algebra system written in pure Python项目地址: https://gitcode.com/GitHub_Trending/sy/sympy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考