Bug introduced in 12.3 or earlier, fixed in 13.0.
I'm getting contradictory behavior for eigenvectors of a matrix when using Conjugate, Transpose and ConjugateTranspose. I'll demonstrate using an example.
newmat = {{1, 2, 3 - I}, {4, 5 + 3 I, 6}, {7 - 2 I, 8, 9}}
{nval, nvec} = Eigensystem[newmat] // N // Chop;
Transpose[nvec[[1]]] == nvec[[1]] (* True *)
ConjugateTranspose[nvec[[1]]] == Conjugate[nvec[[1]]] (* False *)
ConjugateTranspose[nvec[[1]]] == Conjugate[Transpose[nvec[[1]]]] (* False *)
ConjugateTranspose[nvec[[1]]] == Transpose[Conjugate[nvec[[1]]]] (* False *)
Conjugate[Transpose[nvec[[1]]]] == Transpose[Conjugate[nvec[[1]]]] (* True *)
Transpose[Conjugate[nvec[[1]]]] == Conjugate[nvec[[1]]] (* True *)
I'm struggling to understand this behavior. I understand that transpose of the eigenvector is the same as the eigenvector because it is a list with no secondary dimension. However, if so, then shouldn't Conjugate of the vector be the same as it's ConjugateTranspose?
However, if I convert the array/list to a column vector i.e. (n,1) matrix then I get the expected properties.
nvec[[1]] = ArrayReshape[nvec[[1]], {Length[nvec[[1]]], 1}];
Transpose[nvec[[1]]] == nvec[[1]] (* False *)
ConjugateTranspose[nvec[[1]]] == Conjugate[nvec[[1]]] (* False *)
ConjugateTranspose[nvec[[1]]] == Conjugate[Transpose[nvec[[1]]]] (* True *)
ConjugateTranspose[nvec[[1]]] == Transpose[Conjugate[nvec[[1]]]] (* True *)
Conjugate[Transpose[nvec[[1]]]] == Transpose[Conjugate[nvec[[1]]]] (* True *)
Transpose[Conjugate[nvec[[1]]]] == Conjugate[nvec[[1]]] (* False *)
Kindly help me understand how these functions work in Mathematica. If it's relevant, I come from a physics background (maybe I'm making assumptions that are common for us while not so much for the code). Thanks!
Eigensystem
, in particular the part under "Details and Options". $\endgroup$Transpose
on a vector. With Mathematica 13.2, all the results of your first code block areTrue
. $\endgroup$