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
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
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
2015년 10월 28일
A real matrix can have complex eigenvalues, that's fine. http://www.math.utk.edu/~freire/complex-eig2005.pdf
댓글 수: 0
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.
댓글 수: 0
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
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Particle & Nuclear Physics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!