Как заставить MuPAD перестать использовать заполнители для матричных элементов?

Я пытаюсь оценить некоторые матричные умножения в MuPAD. На выходе используются сигмы в качестве заполнителей для элементов матрицы, поскольку они представляют собой длинные выражения (я предполагаю, что причина в этом). Есть ли способ заставить MuPAD отображать отдельные элементы матрицы как (в моем случае) экспоненциальные функции, которыми они действительно являются, независимо от длины выражения?

Ниже приведен пример случая, когда MuPAD использует сигмы вместо фактических экспоненциальных функций. Я хотел бы иметь возможность увидеть, что на самом деле представляют собой отдельные матричные элементы TotT^4.

пример уравнения MuPAD

Команды, которые я выполнил в интерфейсе MuPAD, ведущие к TotT^4:

T1 := matrix([[exp((J+B/2)/T),exp(-(J+B/6)/T)],[exp((-J+B/6)/T),exp((J-B/2)/T)]])
T2 := matrix([[exp((J1+B/2)/T),exp(-(J1+B/6)/T)],[exp((-J1+B/6)/T),exp((J1-B/2)/T)]])
T1d := linalg::transpose(T1)
TotT := T1d*T2

person Julien    schedule 18.03.2014    source источник
comment
Было бы полезно, если бы вы предоставили код MuPAD, который сгенерировал TotT, или простой небольшой исполняемый пример.   -  person horchler    schedule 18.03.2014


Ответы (1)


Класс вашей переменной можно получить через type(totT): Dom::Matrix. Вы можете просмотреть множество методов этого класса в документации. Насколько я могу судить, эта проблема как-то связана с красивой печатью класса print метод. Другие классы демонстрируют такую ​​же замену, так что это может быть функцией перегруженного print. Мне не удалось изменить поведение, изменив setPrintMaxSize, PRETTYPRINT, < a href="http://www.mathworks.com/help/symbolic/mupad_ref/textwidth.html" rel="nofollow">TEXTWIDTH или любой из необязательных аргументов print. Вы все еще можете попробовать сами, так как есть много перестановок.

Я также пытался использовать функцию expand. expand(TotT,IgnoreAnalyticConstraints) почти работает, хотя в некоторых случаях это может иметь нежелательные последствия, если все будет слишком расширено. Вызов simplify избавляет от подстановок, но также меняет природу некоторых записей путем упрощения. Это, вероятно, также не является общим решением этого вопроса.

Один из способов, который работает, но некрасиво, — использовать expr2text метод, который возвращает результат в виде строки:

expr2text(TotT)

который возвращает

"matrix([[exp((B/6 - J)/T)*exp((B/6 - J1)/T) + exp((B/2 + J)/T)*exp((B/2 + J1)/T), ...
          exp(-(B/2 - J1)/T)*exp((B/6 - J)/T) + exp((B/2 + J)/T)*exp(-(B/6 + J1)/T)], ...
         [exp(-(B/2 - J)/T)*exp((B/6 - J1)/T) + exp((B/2 + J1)/T)*exp(-(B/6 + J)/T), ...
          exp(-(B/2 - J)/T)*exp(-(B/2 - J1)/T) + exp(-(B/6 + J)/T)*exp(-(B/6 + J1)/T)]])"

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

person horchler    schedule 18.03.2014