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

1 次查看(过去 30 天)
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 个评论
Torsten
Torsten 2015-10-28
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 2015-10-28
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.

请先登录,再进行评论。

回答(3 个)

Thorsten
Thorsten 2015-10-28
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 2015-10-28
编辑:John D'Errico 2015-10-28
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 2015-10-28
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

类别

Help CenterFile Exchange 中查找有关 Particle & Nuclear Physics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by