我正在尝试评估MuPAD中的一些矩阵乘法。输出使用sigma作为矩阵元素的占位符,因为它们是长表达式(我认为这是原因)。有没有办法让MuPAD将各个矩阵元素显示为(在我的情况下)它们实际上的指数函数,而不管表达式的长度是多少?
以下是MuPAD使用sigma而不是实际指数函数的示例。我希望能够看到TotT^4
的各个矩阵元素到底是什么。
我在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
答案 0 :(得分:0)
您的变量类可以通过type(totT)
:Dom::Matrix
获取。您可能需要查看文档中的many methods of this class。据我所知,这个问题与班级print
method的漂亮印刷有关。其他类显示相同的替换,因此它可能是重载print
的函数。我无法通过调整setPrintMaxSize
,PRETTYPRINT
,TEXTWIDTH
或print
的任何可选参数来更改行为。您可能仍会尝试自己,因为有许多排列。
我也尝试过使用expand
功能。 expand(TotT,IgnoreAnalyticConstraints)
几乎可以工作,但如果事情扩展得太多,在某些情况下会产生不良影响。调用simplify
确实摆脱了替换,但它也通过简化改变了一些条目的性质。这可能也不是解决这个问题的一般方法。
一种有效但又难看的方法是使用expr2text
method,它将结果作为字符串返回:
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提出要求或提交service request是个好问题。