why eigenvalue of 3x3 matrix is showing complex value when its a22 element was changed from 180 to 179.99?

1 view (last 30 days)
I am computing eigenvalues of a matrix
A=[-149 -50 -154; 537 180 546; -27 -9 -25 ]
by using eig(A) the result= [1.0000 2.0000 3.0000]' then i replaced a22 with 179.99 and compute the eigenvalues again but this time result has complex value D =[1.6642+1.0543i 1.6642-1.0543i 2.6616]'..why
  4 Comments
Torsten
Torsten on 28 Oct 2015
Seems that the roots of your polynomial are highly sensitive to small changes in its coefficients ...
You may want to calulate det(A-Lambda*I) to check the eigenvalue computation.
Best wishes
Torsten.
Steven Lord
Steven Lord on 28 Oct 2015
noaman naseer:
The equation x^2-0.05 = 0 has two real roots.
The equation x^2+0.05 = 0 has two complex roots.
A change of 0.1 in one of the coefficients can sometimes have that large an impact.

Sign in to comment.

Answers (3)

Thorsten
Thorsten on 28 Oct 2015
A real matrix can have complex eigenvalues, that's fine. http://www.math.utk.edu/~freire/complex-eig2005.pdf

John D'Errico
John D'Errico on 28 Oct 2015
Edited: John D'Errico on 28 Oct 2015
You might not believe it, but this can easily happen.
syms delta lambda
A=[-149 -50 -154; 537 180 546; -27 -9 -25 ];
A = sym(A);
A(2,2) = A(2,2) + delta
A =
[ -149, -50, -154]
[ 537, delta + 180, 546]
[ -27, -9, -25]
Here is your characteristic polynomial, as a function of delta and lambda.
poly = det(A - lambda*eye(3))
poly =
174*delta*lambda - 11*lambda - 433*delta + delta*lambda^2 + 6*lambda^2 - lambda^3 + 6
solve(subs(poly,delta,0))
ans =
1
2
3
Lets look at the polynomial, when delta==0.
ezplot(subs(poly,delta,0),[0,4])
grid on
Note however, the large coefficient in front of the terms with delta in them in poly above. Even a tiny value of delta can cause the roots to become complex.
solve(poly,lambda)
ans =
root(z^3 - z^2*(delta + 6) - z*(174*delta - 11) + 433*delta - 6, z, 1)
root(z^3 - z^2*(delta + 6) - z*(174*delta - 11) + 433*delta - 6, z, 2)
root(z^3 - z^2*(delta + 6) - z*(174*delta - 11) + 433*delta - 6, z, 3)
In fact, delta as large as -0.1 is huge here. It would be easy enough if you wish to play with the above expression to see how large delta must be to make the eigenvalues complex. I should leave that to the student to solve, but I have a few moments.
The trick is to employ Descartes rule of signs. For example, when delta is zero, we see three sign changes in the coefficients. The 4 coefficients alternate in sign. That indicates there will be three positive roots.
subs(poly,delta,0)
ans =
- lambda^3 + 6*lambda^2 - 11*lambda + 6
For non-zero delta however, look at the signs of those coefficients. Don't forget to consider the possibility that there may be negative real roots too.

Titus Edelhofer
Titus Edelhofer on 28 Oct 2015
Hi,
as Torsten commented, the eigenvalues are the roots of the characteristic polynomial. If you have e.g. a quadratic polynomial, a tiny offset in may move the parabola from crossing the x-axis (two real roots) to above x-axis (two complex roots):
>> p = [1 0 -0.0000001];
>> roots(p)
ans =
1.0e-03 *
0.3162
-0.3162
>> p(3) = p(3) + 0.0000002;
>> roots(p)
ans =
1.0e-03 *
0.0000 + 0.3162i
0.0000 - 0.3162i
Titus

Categories

Find more on Particle & Nuclear Physics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!