gpt4 book ai didi

wolfram-mathematica - 简化和重新排列 mathematica 中的非交换变量

转载 作者:行者123 更新时间:2023-12-04 08:07:18 25 4
gpt4 key购买 nike

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

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

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

我很想得到一个建议,我可以学习如何编写一个可以为我做有针对性的简化的包。

最佳答案

如果您只是使用规则来简化(我假设您的意思是使用 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 及其构造和评估过程的简短(ish)介绍。

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

编辑:额外的额外奖励(可能很简单) 解决方案:作为 rcollier指出SymmetricReduction[]可以很容易地做你想做的事。

还有一条路:当我不得不用非交换变量进行计算时
我用过 this包含 Grassmann 变量的代数和微积分的包。

关于wolfram-mathematica - 简化和重新排列 mathematica 中的非交换变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com