4
$\begingroup$

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!

$\endgroup$
4
  • $\begingroup$ Please read the manual for Eigensystem, in particular the part under "Details and Options". $\endgroup$ May 15, 2023 at 9:38
  • 1
    $\begingroup$ Hm. This might also be version dependent. I recall that some time ago it caused an error to call Transpose on a vector. With Mathematica 13.2, all the results of your first code block are True. $\endgroup$ May 15, 2023 at 9:42
  • $\begingroup$ @HenrikSchumacher yes, you're correct - the issue was with my version (12.3.1) which is from July 2021, this is crazy! $\endgroup$
    – Nitin
    May 15, 2023 at 9:56
  • $\begingroup$ @HenrikSchumacher can you please write your comment as an answer and I can accept it? $\endgroup$
    – Nitin
    May 15, 2023 at 9:56

1 Answer 1

7
$\begingroup$

Hm. This might also be version dependent. I recall that some time ago it caused an error to call Transpose on a vector. With Mathematica 13.2, all the results of your first code block are True.

$\endgroup$
2
  • $\begingroup$ "I recall that some time ago it caused an error to call Transpose on a vector. " I guess you mean the issue discussed here?: mathematica.stackexchange.com/q/244659/1871 <strike>I doubt if this is related… </strike> OK, they might have forgotten to tackle ConjugateTranspose after changing the behavior of Transpose. $\endgroup$
    – xzczd
    May 16, 2023 at 14:15
  • $\begingroup$ Yes, that's what I suspected, too. $\endgroup$ May 16, 2023 at 14:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.