开发者

Noncommutative Expand over addition in Mathematica

开发者 https://www.devze.com 2023-02-10 07:17 出处:网络
I need to write a func开发者_如何学Gotion(s) that completely expands noncommutative multiplication over addition?

I need to write a func开发者_如何学Gotion(s) that completely expands noncommutative multiplication over addition?

For example:

a ** (b + c^2) would expand to

a ** b + a ** c^2

and similarly from the right.

I am using ReplaceRepeated (.//). Since I am using NonCommutativeMultiply instead of Times, Expand does not work. I was using the NCAlgebra package which has NCExpand, however ReplaceRepeated does not work when using this package (as stated in the NCAlgebra documentation...argh).

To avoid breaking ReplaceRepeated , I need to code my own NCExpand that is not going to conflict.

All ideas are welcome, thanks...


Try this package which includes a noncommutative Expand as well as other functions rewritten for NC calculations.

From that package:

GExpand[a_, patt___] := Expand[a //. {x_NonCommutativeMultiply :> Distribute[x]}, patt];

In[1]  := GExpand[a ** (b + c^2)]
Out[1] := a ** b + a ** c^2

In[2]  := GExpand[a ** (b + c^2)] //. a -> foo
Out[2] := foo ** b + foo ** c^2


The newest version of NCAlgebra supports ReplaceRepeated through NCReplaceRepeated.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号