我需要编写一个函数来完全扩展非交换乘法而不是加法?
例如:
a **(b + c ^ 2)
会扩大到
a ** b + a ** c ^ 2
同样来自右边。
我正在使用ReplaceRepeated(.//)。由于我使用NonCommutativeMultiply而不是Times,因此Expand不起作用。我正在使用具有NCExpand的NCAlgebra包,但是当使用此包时,ReplaceRepeated不起作用(如NCAlgebra文档中所述...... argh)。
为了避免破坏ReplaceRepeated,我需要编写自己的NCExpand,它不会发生冲突。
欢迎所有想法,谢谢......
答案 0 :(得分:2)
尝试使用包含非交换扩展的this包以及为NC计算重写的其他函数。
从那个包中:
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
答案 1 :(得分:0)
最新版本的NCAlgebra支持ReplaceRepeated
到NCReplaceRepeated
。