Conjugate transpose in R

I am trying to compute the conjugate transpose in R.
Here I perform an eigendecomposition on an asymmetric matrix. I expect that the eigenvectors $U$ should be a unitary matrix and therefore the conjugate tranpose $U^*$ should equal its inverse $U^{-1}$. However, they are unequal.
I expect the issue is one of the following:

  1. My eigendecomposition code eigen(A, symmetric=F) is wrong
  2. There is a numerical precision issue
  3. I am incorrect in assuming this matrix should be unitary

Thanks in advance

#generate sample data
n <- 3
A <- matrix(runif(n^2), n)

eigen_A <- eigen(A, symmetric=F)

#get unitary matrix U from eigenbasis
U <- eigen_A$vectors

#compute conjugate tranpose of U
U_conjugate_transpose <- Conj(t.default(U))

#compute inverse of U
U_inverse <- solve(U)

#check equality
all.equal(U_conjugate_transpose, U_inverse)

I have read the documentation of the eigen function in R, and I think that my arguments are correct.
I expected that the inverse of U would equal its conjugate transpose

>Solution :

I think it’s #3 (i.e., you are incorrect in assuming the eigenvector matrix should be unitary in this case). The documentation for ALGLIB (a numerical analysis library) says

As opposed to the symmetric problem, the eigenvalues a of non-symmetric matrix do not form an orthogonal system

Going into a little more detail, these notes from a Stanford linear algebra course point out that the Schur decomposition A = Q^H T Q decomposes a square nonsymmetric matrix A into a quadratic form involving a unitary matrix Q and an upper-triangular matrix T "whose diagonal elements are the eigenvalues of A" …

However, for a general matrix A, there is no relation between Schur vectors of A and eigenvectors of A

Leave a Reply