Как определить некоторые переменные как некоммутативные в Maxima - PullRequest
4 голосов
/ 06 сентября 2011

Например, я бы хотел определить 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 и символ для умножения (например,1009 * и .)?

1 Ответ

2 голосов
/ 06 сентября 2011

Вы можете работать с коммутативными * и некоммутативными . продуктами Maxima так, как вам нужно, выполнив следующие два шага:

  1. Объявите символы a и b как скаляры:

    declare([a, b], scalar)$

  2. Включить 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

(обратите внимание, что ^^ является некоммутативным оператором возведения в степень).

...