如何在Maxima中将一些变量定义为非交换变量

时间:2011-09-06 13:30:53

标签: symbolic-math maxima

例如,我想将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的代码以及用于乘法的符号(例如*.)是什么?

1 个答案:

答案 0 :(得分:2)

您可以按照以下两个步骤以您想要的方式使用Maxima的可交换*和非交换.产品:

  1. 将符号ab声明为标量:

    declare([a, b], scalar)$

  2. 启用dotscrules

    dotscrules: true$

    这简化了涉及标量与交换产品的非交换产品(a.x变为a*x)。

  3. 现在你准备好了。例如,

    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
    

    (注意^^是非交换取幂运算符。)