【发布时间】:2010-10-18 00:24:17
【问题描述】:
简而言之,我有一个表达式,其中包含 p1、p2、q1 和 q2 之间的乘法,我想使用 [qi,pi]=ii*hb,其中 i={1,2} 使表达式对称形式(pi^a*qi^b+qi^b*pi^a)/2。
例如,对于p2*q2*p2^2,我使用简化和一些替换得到(p2*q2^3+q2^3*p2)/2 + 1/2*ii*p2^2*hb。但是我无法简化q2*q1^2*p2,尽管我已经指定了一条规则q2*p2-> (p2*q2+q2*p2)/2 +ii/2*hb,并且具有1s 和2s 通勤的变量。
更详细地说,here is the Mathematica code(我使用quantum package)。
该代码在索引为 1 或 2 时有效,但在同时使用两个索引时无效:
p2*q2*q1*q2 给出p2*q1*q2^2,p2*q2*q2 可以进一步简化,但由于有q1,Mathematica 不会这样做。
更详细地说:我正在尝试编写一个可以在appendix (eq. A2) in this paper 中获取方程式的 Mathematica 代码 和我正在使用的this is the code。后一个文件中的代码与上面的代码略有不同,因为我无法让上面的代码也运行,但它会很理想。
最后,我想将最终代码用于其他类型的哈密顿量,最高可达 4 次方甚至更高。
我很想知道如何学习如何编写一个可以为我进行有针对性的简化的包。
【问题讨论】:
-
我不得不说,Mathematica 不是你想要做的最好的工具。 Mathematica 本质上是一个巨大的搜索替换引擎,如果您不特别关心输出的格式,它的效果最好。也就是说,请参阅我的答案以获取有关如何解决此问题的一些提示。
标签: wolfram-mathematica symbolic-math