如何让MuPAD停止使用矩阵元素的占位符?

时间:2014-03-18 02:10:04

标签: matlab matrix symbolic-math mupad

我正在尝试评估MuPAD中的一些矩阵乘法。输出使用sigma作为矩阵元素的占位符,因为它们是长表达式(我认为这是原因)。有没有办法让MuPAD将各个矩阵元素显示为(在我的情况下)它们实际上的指数函数,而不管表达式的长度是多少?

以下是MuPAD使用sigma而不是实际指数函数的示例。我希望能够看到TotT^4的各个矩阵元素到底是什么。

example MuPAD equation

我在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

1 个答案:

答案 0 :(得分:0)

您的变量类可以通过type(totT)Dom::Matrix获取。您可能需要查看文档中的many methods of this class。据我所知,这个问题与班级print method的漂亮印刷有关。其他类显示相同的替换,因此它可能是重载print的函数。我无法通过调整setPrintMaxSizePRETTYPRINTTEXTWIDTHprint的任何可选参数来更改行为。您可能仍会尝试自己,因为有许多排列。

我也尝试过使用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是个好问题。