¿Cómo multiplicar una matriz por su transpuesta?

¿Cómo multiplicar una matriz por su transpuesta?

Quiero multiplicar una matriz por su transpuesta para saber si verifica Q t Q=I.

Sin embargo, cuando lo calculo en matlab obtengo algo extraño usando un concepto que no conozco: conj(x).

  • Por tanto, ¿cómo multiplicar una matriz por su transpuesta?

Aquí está el código que probé:

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

Respuesta1

Me doy cuenta de que esta es una vieja pregunta, pero dado que el robot de la comunidad tiene la intención de solucionarla, también podría responderla.

La razón por la que MATLAB le proporciona conjel resultado es porque está utilizando el operador de transposición conjugado complejo '(también conocido como ctranspose()).

Debido a que se trata de matemáticas simbólicas, MATLAB no hace ninguna suposición sobre si xes real o compleja, por lo que debe dejarlo conj()en la salida: para real la función no hace nada, para compleja tomará el conjugado.

Si usa .'en su lugar, esta es la transposición de matriz regular (también conocida como transpose()). Como resultado, MATLAB no agrega ninguna llamada conjugada compleja a la salida porque ignora el contenido de la matriz al realizar la transposición.

>> 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, entonces ans == [1 0;0 1] == I.

información relacionada