Спасибо,
Цитата:
Но тогда тоже все свойства придется прописывать
Это мне понятно, я хотел переопределить ** и убрать ассоциативность через SetAttributes[], но не нашел атрибута, который за это отвечает.
Код:
Unprotect[NonCommutativeMultiply];
(* SetAttributes[NonCommutativeMultiply, ?]*)
DIMENSIONS = 1;
COORDINATES =Table[{Subscript[X, i], Subscript[P, i]}, {i, 1, DIMENSIONS}] // Flatten;
x_ ** y_ := Sum[D[x, Subscript[X, i]] D[y, Subscript[P, i]] - D[x, Subscript[P, i]] D[y, Subscript[X, i]], {i, 1, DIMENSIONS}];
Проблема в том, что есть многочлены, например,
Код:
-(1/12) x ** y ** x + x ** y ** y/12
которые определяю не я, моя же задача -- правильно их вычислить, то есть, (используя, например, переопред. **), сделать так чтобы они вычислялись как
Код:
-(1/12) (x ** y) ** x + (x ** y) ** y/12
либо привести их к этому виду.
Эту задачу можно сформулировать так: найти такую
(вставить скобки так чтобы)
)