- #1
ColdFusion85
- 142
- 0
This is a MATLAB question. I am trying to find the eigenvalues of a matrix with both real and complex numbers. This is my session.
>> A=[1/sqrt(2),i/sqrt(2),0; -1/sqrt(2),i/sqrt(2),0; 0,0,1]
A =
0.7071, 0 + 0.7071i, 0
-0.7071, 0 + 0.7071i, 0
0, 0, 1.0000
>> eig(A)
ans =
0.9659 - 0.2588i
-0.2588 + 0.9659i
1.0000
However, matrix A is unitary, so [tex]|\lambda|[/tex] should equal 1. This is true for the third eigenvalue, but not for the other two. I even noticed that MATLAB fails to confirm A is unitary:
A =
0.7071, 0 + 0.7071i, 0
-0.7071, 0 + 0.7071i, 0
0, 0, 1.0000
>> B=[1/sqrt(2),-1/sqrt(2),0; i/sqrt(2),i/sqrt(2),0;0,0,1]
B =
0.7071, -0.7071, 0
0 + 0.7071i, 0 + 0.7071i, 0
0, 0, 1.0000
>> A*B
ans =
0, -1, 0
-1, 0, 0
0 , 0, 1
Why is MATLAB giving me incorrect answers? It was even doing this for me yesterday when I was dealing with real matricies. It was giving me eigenvalues with imaginary components when they were, in fact, all real. What's the deal?
>> A=[1/sqrt(2),i/sqrt(2),0; -1/sqrt(2),i/sqrt(2),0; 0,0,1]
A =
0.7071, 0 + 0.7071i, 0
-0.7071, 0 + 0.7071i, 0
0, 0, 1.0000
>> eig(A)
ans =
0.9659 - 0.2588i
-0.2588 + 0.9659i
1.0000
However, matrix A is unitary, so [tex]|\lambda|[/tex] should equal 1. This is true for the third eigenvalue, but not for the other two. I even noticed that MATLAB fails to confirm A is unitary:
A =
0.7071, 0 + 0.7071i, 0
-0.7071, 0 + 0.7071i, 0
0, 0, 1.0000
>> B=[1/sqrt(2),-1/sqrt(2),0; i/sqrt(2),i/sqrt(2),0;0,0,1]
B =
0.7071, -0.7071, 0
0 + 0.7071i, 0 + 0.7071i, 0
0, 0, 1.0000
>> A*B
ans =
0, -1, 0
-1, 0, 0
0 , 0, 1
Why is MATLAB giving me incorrect answers? It was even doing this for me yesterday when I was dealing with real matricies. It was giving me eigenvalues with imaginary components when they were, in fact, all real. What's the deal?