Check whether the symbolic eigen value of a matrix is positive or negative
조회 수: 5 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
채택된 답변
David Goodmanson
2020년 7월 15일
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
David Goodmanson
2020년 7월 16일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Assumptions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!