角动量代数还是挺常用的,今天本想自己写一个 python 的 CG 系数函数,又觉得可能已经有现成的包了。 google 搜了一下,第一条就是 sympy 官网的相关文档,快准爽。学习了一下官网文档,简单记在这。
1. 安装 sympy
我用的 pycharm,所以按照常规的模块安装方法,搜了一下 sympy,很快就装上了。
2. 使用 sympy 计算 Clebsch-Gorden 系数
代码如下
from sympy.physics.quantum.cg import CG
from sympy import S
cg = CG( S(3)/2, S(3)/2, S(1)/2, -S(1)/2, 1, 1 ).doit()
print("cg = ", cg )
2.1 S: SingletonRegistry
S(3): 表示整数 3,而且是 sympy 存在内存里的唯一的整数 3
S(3)/2: 表示有理数 3/2,而不是浮点数 1.5,前者是严格的,后者是有数值误差的。
2.2 doit: 计算值
python 里有些表达式不会马上计算其值,例如 Integral,和这里的 CG 函数。貌似解释器会先存着这个表达式,而不计算表达式的值,如果你想让它立即马上计算值,就让它“do it”,即加上 doit 函数。
2.3 运行结果
cg = sqrt(3)/2
我用我自己写的 c++ 版代码验证过了,是正确的。
3. 总结
python sympy 模块 可以很方便地计算 Clebsch-Gorden 系数。
另外我还翻了翻,sympy.physics 里面还有氢原子波函数,所以要画氢原子电子云的话,可以直接调用之。