【问题标题】:simplifying and rearranging non-commutative variables in mathematica简化和重新排列mathematica中的非交换变量
【发布时间】:2010-10-18 00:24:17
【问题描述】:

简而言之,我有一个表达式,其中包含 p1p2q1q2 之间的乘法,我想使用 [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^2p2*q2*q2 可以进一步简化,但由于有q1,Mathematica 不会这样做。

更详细地说:我正在尝试编写一个可以在appendix (eq. A2) in this paper 中获取方程式的 Mathematica 代码 和我正在使用的this is the code。后一个文件中的代码与上面的代码略有不同,因为我无法让上面的代码也运行,但它会很理想。

最后,我想将最终代码用于其他类型的哈密顿量,最高可达 4 次方甚至更高。

我很想知道如何学习如何编写一个可以为我进行有针对性的简化的包。

【问题讨论】:

  • 我不得不说,Mathematica 不是你想要做的最好的工具。 Mathematica 本质上是一个巨大的搜索替换引擎,如果您不特别关心输出的格式,它的效果最好。也就是说,请参阅我的答案以获取有关如何解决此问题的一些提示。

标签: wolfram-mathematica symbolic-math


【解决方案1】:

如果您只是使用规则来简化(我假设您的意思是您使用Replace[]),那么如果您要替换的模式存在但不是完全正确的形式,则可能会出现问题。例如,您的 Replace[q2*q1^2*p2,q2*p2->(p2*q2+q2*p2)/2] 示例在这种情况下不会执行任何操作(请注意,编写 q2*p2*q1^2 也无济于事,因为 Mathematica 在开始评估之前会对所有输入进行排序。

我过去在 Mathematica 中遇到过类似的简化问题,有两种策略取得了相当大的成功。很抱歉我不能给你一个具体的解决方案,希望这些能帮助你解决。

解决方案 1:您必须编写自己的 ReplaceUnordered[form,rule] 函数,该函数解析 form 的所有不同顺序,以了解 rule 的可能应用。这可以通过Permutations[]HoldForm[] 来完成。

解决方案 2:使用Simplify[]。具体使用选项ComplexityFunction 使非对称表达式更“昂贵”,并使用选项TransformationFunctions 指定您自己的简化规则。

Here (pdf) 是对 Mathematica 及其构造和评估过程的简短介绍。

额外奖励解决方案:使用FORM,这是一种专门为解决您遇到的问题而编写的语言。

编辑:额外的额外奖励(可能非常简单)解决方案:正如rcollier 指出的那样,SymmetricReduction[] 可能会很容易地做你想做的事。

还有一个问题:当我不得不使用非交换变量进行计算时 我使用了 this 包,其中包含 Grassmann 变量的代数和微积分。



【讨论】:

  • +1,用于ComplexityFunctionTransformationFunctions。我已经使用 Mathematica 多年了,直到最近 2 年我才发现这两个选项的用处。
  • 谢谢,是的,如果您知道如何使用这两个,Simplify 非常好,我会(形象地)支持的另一件事是 Simplify 支持levelspec 之类的定位。
  • 只是指出,Simplify 文档在TransformationFunctions 中给出了使用PolynomialReduce 的示例。对于 OP 的问题,SymmetricReduction 很可能会给出他们正在寻找的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2017-06-01
相关资源
最近更新 更多