Math 如何简化或因子化非交换变量的表达式

Math 如何简化或因子化非交换变量的表达式,math,wolfram-mathematica,simplify,simplification,Math,Wolfram Mathematica,Simplify,Simplification,所以这个问题很可能很简单,我在这里也看到过类似的问题,但没有一个对我来说很有效。我是Mathematica的业余爱好者,因为我从来没有太多理由使用它,所以请不要假设我有太多的技术知识。我的问题相当简单,我试图简化六个表达式,它们涉及两个生成器x,y,它们肯定不会相互转换。实际上,yx=x^2y。我希望得到的是(x+…)(y+…)(…)或类似的形式,但每当我使用Mathematica(我一直在使用NCAlgebra包)时,我似乎无法使它工作。非常感谢您的帮助。在最新版本的中,您可以使用ncstro

所以这个问题很可能很简单,我在这里也看到过类似的问题,但没有一个对我来说很有效。我是Mathematica的业余爱好者,因为我从来没有太多理由使用它,所以请不要假设我有太多的技术知识。我的问题相当简单,我试图简化六个表达式,它们涉及两个生成器x,y,它们肯定不会相互转换。实际上,yx=x^2y。我希望得到的是(x+…)(y+…)(…)或类似的形式,但每当我使用Mathematica(我一直在使用NCAlgebra包)时,我似乎无法使它工作。非常感谢您的帮助。

在最新版本的中,您可以使用
ncstrong收集
NCCollect
生成以下内容:

<< NC`
<< NCAlgebra`
expr = x^3 + x ** y ** x
NCStrongCollect[expr, {x, y}]

在这种情况下会产生相同的结果


还有其他的“简化”工具,例如
NCSimplifyRational
。有关详细信息,请查看文档。

您能展示一下到目前为止您一直在尝试什么吗?这让帮助你变得容易多了。我还没走多远。我以前从来没有用过Mathematica,所以我边走边学。到目前为止,我一直在尝试使用NCSimplify[]和Factor[]命令分解或简化x^3+xxx之类的东西。
x ** (x + y) ** x
NCCollect[expr, {x, y}, ByTotalDegree -> True]