我正在尝试使用符号包在Octave中进行一些符号计算,但是当涉及到简化时(我为什么要使用它),我似乎搁浅了。例如,它适用于简单表达式,但对于更复杂的矩阵运算,它似乎失败了。这里出了什么问题:
pkg load symbolic
syms a b d t
A = cos(t/2)*exp(i*(a - b/2 - d/2))
B = -sin(t/2)*exp(i*(a-b/2+d/2))
C = sin(t/2)*exp(i*(a + b/2 - d/2))
D = cos(t/2)*exp(i*(a+b/2+d/2))
U = [A, B; C, D]
simplify(expand(conj(U.')*U))
我尝试使用简化而不扩展。但是我应该得到itentity矩阵,而是获得一个表达式 - 正确但不简化。有没有办法让这项工作成功?
答案 0 :(得分:1)
至少在Matlab中,默认情况下,符号变量被假定为复杂的。看起来您可能要求a
,b
,d
和t
成为现实。如果是这样,您需要将它们定义为这样,以便您的表达式可以按预期简化:
syms a b d t real
然后simplify
的结果(至少在Matlab R2017a中)将是一个符号单位矩阵。
有关详情,请参阅syms
和/或sym
的文档。您可能还希望阅读有关符号变量假设的更多信息:sym/assumptions
和sym/assume
。