如何将矩阵与其转置矩阵相乘?

如何将矩阵与其转置矩阵相乘?

我想将一个矩阵与其转置矩阵相乘,以便知道它是否验证 Q t Q=I。

然而,当我在 matlab 上计算它时,我使用一个我不知道的概念得到了一些奇怪的事情:conj(x)

  • 那么,如何将矩阵与其转置矩阵相乘呢?

这是我尝试过的代码:

>> syms x
>> A=[cos(x) -sin(x);
sin(x) cos(x)]

A =

[ cos(x), -sin(x)]
[ sin(x),  cos(x)]

>> A'*A

ans =

[ cos(conj(x))*cos(x) + sin(conj(x))*sin(x), sin(conj(x))*cos(x) - cos(conj(x))*sin(x)]
[ cos(conj(x))*sin(x) - sin(conj(x))*cos(x), cos(conj(x))*cos(x) + sin(conj(x))*sin(x)]

答案1

我意识到这是一个老问题,但考虑到社区机器人有意解决它,最好回答它。

conjMATLAB在输出中给出的原因是因为您使用了复共轭转置运算符'(又名ctranspose())。

因为这是符号数学,所以 MATLAB 不对是实数还是复数做出任何假设,因此它必须在输出中x保留- 对于实数,函数不执行任何操作,对于复数,它将取共轭。conj()

如果您使用.',则这是常规矩阵转置(又名transpose())。因此,MATLAB 不会向输出添加任何复杂的共轭调用,因为它在执行转置时会忽略数组的内容。

>> A'*A
 
ans =
 
[ cos(conj(x))*cos(x) + sin(conj(x))*sin(x), sin(conj(x))*cos(x) - cos(conj(x))*sin(x)]
[ cos(conj(x))*sin(x) - sin(conj(x))*cos(x), cos(conj(x))*cos(x) + sin(conj(x))*sin(x)]

>> A.'*A
 
ans =
 
[ cos(x)^2 + sin(x)^2,                   0]
[                   0, cos(x)^2 + sin(x)^2]

注:cos(x)^2 + sin(x)^2 == 1,所以ans == [1 0;0 1] == I

相关内容