Check whether the symbolic eigen value of a matrix is positive or negative

10 views (last 30 days)
I am calculating the eigen value of 2x2 matrix symbolically, and checking whether the two eigen values are negative or not using isAlways, here is the code
clear all
close all
clc
syms a d g positive
Am =[(12*g)/(d*(7*d + 24*g)), (a*d^2 + 6*a*g*d + 144*g + 9*a*g)/(12*d*(7*d + 24*g));...
-(4*g*(3*d^2 + 14*d + 12*g))/(d^3*(7*d + 24*g)), -(672*d*g + a*d^4 + 36*a*g^2 + 144*d^2*g + 576*g^2 + 42*a*d*g + 18*a*d^2*g + 6*a*d^3*g)/(12*d^3*(7*d + 24*g))]
A1=eig(Am);
isAlways(real(A1(1))<0|A1(1)==0)
isAlways(real(A1(2))<0|A1(2)==0)
I am getting A1(1) to be positive and A1(2) to be negative.
When I am checking numerically by assiginig the value of a, d, g I am getting both the eigen values to be negative and the literature form where I took this expression says that for positive value of a, d, g the matrix Am has negative real eigen values.
Is there anything wrong with my code or is it the limition of isAlways command???
If suppose there are some parametric region where the eigen value are positive or say negative how to find out?
Any help please.
Thank You

Accepted Answer

David Goodmanson
David Goodmanson on 15 Jul 2020
Hello TS
with your definition of Am we have
simplify(trace(Am))
ans =
-(672*d*g + a*d^4 + 36*a*g^2 + 576*g^2 + 42*a*d*g + 18*a*d^2*g + 6*a*d^3*g)/(12*d^3*(7*d + 24*g))
simplify(A1(1)*A1(2))
ans =
(a*g*(2*d + 3*g))/(3*d^3*(7*d + 24*g))
Given that a,d,g are all positive we have two eigenvalues whose sum is negative and whose product is positive. So both eigenvalues are negative. Matlab does issue a warning about not being able to solve for the inequalilty, so I don't know what
isAlways(real(A1(1))<0|A1(1)==0) ans = 0
is on about.
[ in the second isAlways there is an error in what is supposed to be isAlways(real(A1(2))<0|A1(2)==0) ]
  2 Comments
T S Singh
T S Singh on 15 Jul 2020
Thanks David, I think this approach works fine for 2X2 matrix, what suppose if the matrix is large say 5X5. Can you suggest me any method?
David Goodmanson
David Goodmanson on 16 Jul 2020
That's not so easy in general. One result is that if a matrix is diagonally dominant and all its diagonal values are positive, then all the eigenvalues are positive.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!