como multiplicar uma matriz pela sua transposta?

como multiplicar uma matriz pela sua transposta?

Quero multiplicar uma matriz pela sua transposta para saber se ela verifica Q t Q=I.

No entanto, quando calculo no matlab, recebo algo estranho usando um conceito que não conheço: conj(x).

  • Portanto, como multiplicar uma matriz pela sua transposta?

Aqui está o código que tentei:

>> 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)]

Responder1

Sei que esta é uma pergunta antiga, mas como o bot da comunidade pretende esbarrá-la, é melhor respondê-la.

A razão pela qual o MATLAB está fornecendo conja saída é porque você está usando o operador complexo de transposição conjugada '(também conhecido como ctranspose()).

Por se tratar de matemática simbólica, o MATLAB não faz nenhuma suposição se xé real ou complexo, portanto deve deixar conj()na saída - para real a função não faz nada, para complexo ela levará o conjugado.

Se você usar .', esta é a transposição regular da matriz (também conhecida como transpose()). Como resultado, o MATLAB não adiciona nenhuma chamada conjugada complexa à saída porque ignora o conteúdo do array ao fazer a transposição.

>> 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]

Nota: cos(x)^2 + sin(x)^2 == 1, então ans == [1 0;0 1] == I.

informação relacionada