If you want the set of left and right eigenvectors, we see in the help for eig...
[V,D,W] = eig(A) also produces a full matrix W whose columns are the
corresponding left eigenvectors so that W'*A = D*W'.
Note this is not the case for the symbolic version of eig. Oh well. But you are converting everything to a double in the end. So why in the name of god and little green apples did you need to start with a symbolic form, and then immediately substiture floating point numbers for all variables?
So zero to within floating point trash. How about the other set of eigenvectors? Eig states this form should hold for the left eigenvectors.
W'*A = D*W'
Again, zero, to within floating point trash.
So what did you do wrong? You computed RIGHT eigenvectors of M'. (M is real, so the .' is irrelevant.) This time I will do it in symbolic form, using the sym/eig code to compute the left eigenvectors.
So we must have this be true, for the RIGHT eigenvectors of M'.
M' * W - W * D
But in the form of left eigenvectors of M', we can transpose that, to get
W' * M - D' * W'
Lets try it out.
[ -2.522900868286734e-23, 1.025703959565754e-22, 0]
[- 2.9778502051909e-23 + 3.639594695233322e-23i, 9.926167350636332e-23 - 2.827406731282818e-22i, 0]
[- 2.9778502051909e-23 - 3.639594695233322e-23i, 9.926167350636332e-23 + 2.827406731282818e-22i, 0]
Do you see that is zero, again to within floating point trash?
What did you do wrong? You assumed that D' was equal to D.
Is D complex? YES. Was your assumption correct? NO.