2014-01-28 4 views
0

Скажем, я даю что-то вроде AB + AB + BA в matlab (или mupad) и попрошу его упростить его. ответ должен быть: 2AB + BA. Можно ли это сделать в Matlab или mupad?Может ли matlab (или mupad) оценивать символические выражения, содержащие некоммутирующие операторы?

Edit:

Ok, это чувство смешно. Я пытаюсь сделать это либо в Matlab, либо в mulab, и ... это расстраивает, не зная, как делать то, что должно быть самым простым, и не в состоянии сразу найти ответы через google.

Я хочу расширить следующее, перемножать, как ряд Тейлора:

eq1 := exp(g*l*B): 
eq2 := exp(l*A): 
eq3 := exp((1-g)*l*B): 

г является гамма, л лямбда (не знаю, как представить любой из них в MATLAB или mulab). А и В не коммутируют. Я хочу умножить три экспоненты вместе, развернуть, выбрать все члены заданной мощности в лямбда и упростить результат. Есть ли простой способ сделать это? или я должен отказаться и пойти в другую систему, например клен?

+0

Все ли скаляры переменных? Когда вы говорите «' A' и 'B' не коммутируют», вы имеете в виду, кроме того, умножение, все? – horchler

+0

- это экспоненциальные операторы, которые будут работать с волновой функцией. А связан с лапласиан (вторая пространственная производная), В - потенциалом. это поможет? – juggler

ответ

1

Это MuPAD, не MatLab:

operator("x", _vector_product, Binary, 1999): 
A x B + A x B + B x A 

возвращает

2 A x B + B x A 

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

+0

ОК. Мне нужно будет переписать вопрос .. – juggler

+1

Ницца. Обратите внимание, однако, что [векторный продукт также не является ассоциативным] (http://en.wikipedia.org/wiki/Cross_product) - не уверен, чего хочет OP. @juggler: вы можете оценить это изнутри Matlab, используя 'evalin (symengine, ...)', например, 'evalin (symengine, 'operator (" x ", _vector_product, Binary, 1999)');' evalin (symengine 'AxB + AxB + BXA') '. – horchler