1
votes

I'm looking at the numerics of some matrices that depends on a parameter x. The matrix has real eigenvalues for certain values x, but for other values I have a degeneracy in both eigenvalues and eigenvectors (the occurrence of exceptional points).

One of the simplest examples to get an exceptional point is with the matrix:

julia> h=[1 1im; 1im -1]
2×2 Array{Complex{Int64},2}:
1+0im   0+1im
0+1im  -1+0im

The eigenvalues are zero, as they should be

2-element Array{Complex{Float64},1}:
-2.22045e-16+0.0im
0.0+0.0im

However, I would like to know why Julia give me the eigenvectors:

julia> b[2][:,1]
2-element Array{Complex{Float64},1}:
-0.0-0.707107im
0.707107+0.0im     

julia> b[2][:,2]
2-element Array{Complex{Float64},1}:
0.707107+0.0im     
0.0+0.707107im

Since in this case the eigenvalue is zero, I think it doesn't really matter what is the associated eigenvector. But if the eigenvalues coalesce somewhere in the complex plane, do I really get two equal eigenvectors?

Is there an specific way to treat this cases in Julia?

1

1 Answers

2
votes

The kernel of your matrix consists of multiples of (1,i)', which is what you get. As the matrix is not the zero matrix, it has rank 1 and thus also co-rank 1, the eigenspace has dimension 1. The generalized eigenspace is the full space, you get A*(1,0)' = (1,i)' so that in that basis ((1,i)',(1,0)') the linear operator has the matrix [[0,1],[0,0]], its Jordan normal form.