why eigenvalue of 3x3 matrix is showing complex value when its a22 element was changed from 180 to 179.99?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Torsten
el 28 de Oct. de 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
el 28 de Oct. de 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.
Respuestas (3)
Thorsten
el 28 de Oct. de 2015
A real matrix can have complex eigenvalues, that's fine. http://www.math.utk.edu/~freire/complex-eig2005.pdf
0 comentarios
John D'Errico
el 28 de Oct. de 2015
Editada: John D'Errico
el 28 de Oct. de 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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/178953/image.jpeg)
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.
0 comentarios
Titus Edelhofer
el 28 de Oct. de 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
0 comentarios
Ver también
Categorías
Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!