例如,我想将x和y定义为非交换,将a和b定义为可交换(通常)。换句话说,
x y ≠ y x, a x = x a, a b = b a .
此外,
(x + a y) (x - a y) = x^2 + a (y x - x y) - a^2 y^2
。
用于定义x和y的代码以及用于乘法的符号(例如*
和.
)是什么?
答案 0 :(得分:2)
您可以按照以下两个步骤以您想要的方式使用Maxima的可交换*
和非交换.
产品:
将符号a
和b
声明为标量:
declare([a, b], scalar)$
启用dotscrules
:
dotscrules: true$
这简化了涉及标量与交换产品的非交换产品(即,a.x
变为a*x
)。
现在你准备好了。例如,
expand((a*x + b*y) . (a*x - b*y))
返回
a*b*y.x - b^2*y^^2 - a*b*x.y + a^2*x^^2
(注意^^
是非交换取幂运算符。)