How can we check the stability of an equation using MATLAB?

조회 수: 116 (최근 30일)
Hind Aljallaf
Hind Aljallaf 2023년 4월 30일
편집: Paul 2023년 7월 1일
How can we check the stability of this transfer function, using MATLAB? Using pole-zero method?

답변 (1개)

Mahesh Chilla
Mahesh Chilla 2023년 6월 30일
Hi Hind Aljallaf!
To check the stability of a transfer function, we can analyze the real parts of the transfer function's poles. If all the real parts of the poles are negative, the transfer function is considered stable. If there are repeated poles on imaginary axis and no poles of right hand plane, the transfer function is considered marginally stable. If any pole has a non-negative real part, the transfer function is considered unstable. This is under the assumption that by pole-zero method, you wanted to check the poles and determine the stability.
The following code will determine the stability of a transfer function
num = [16]; % define the coefficients of numerator in the transfer function
den = [1, 1.6, 16]; % define the coefficients of denominator in the transfer function
sys = tf(num, den); % create the transfer function
poles = pole(sys); % to get the poles of the transfer function
% checks for stable, marginally stable and unstable
if all(real(poles) < 0)
disp('The transfer function is stable.');
elseif all(real(poles) <= 0) && any(real(poles) < 0)
disp('The transfer function is marginally stable.');
else
disp('The transfer function is unstable.');
end
The transfer function is stable.
To learn more about the functions used in the code, refer the MATLAB's documentation.
Hope this helps,
Thank you!!
  댓글 수: 1
Paul
Paul 2023년 7월 1일
편집: Paul 2023년 7월 1일
Hi Mahesh,
"If all the real parts of the poles are negative, the transfer function is considered stable."
What if there is a pole with positive real part that is cancelled by a zero, e.g., H(s) = (s-1)/(s+2)/(s-1)?
"If there are repeated poles on imaginary axis and no poles of right hand plane, the transfer function is considered marginally stable."
Why would the test for marginal stability require repeated poles on the imaginary axis? Wouldn't non-repeated poles on the imaginary axis (not cancelled by zeros) also yield a marginally stable system, which seemed to be what the code was testing for? But then shouldn't the test for this be
elseif all(real(poles) <= 0) && any(real(poles) == 0) % changed < to ==
" If any pole has a non-negative real part, the transfer function is considered unstable."
Doesn't a pole on the imaginary axis have a non-negative real part? Perhaps this should say "positive real part." But again, we have to consider the potential for right-half-plane pole/zero cancellation.
The pole/zero cancellation possibility only needs to be considered if we are testing for bounded-input-bounded-output (BIBO) stability. If asking about internal stability of a state space realization of that transfer fucnction, then only checking the pole locations is sufficient.
I understand the appeal of the concept of marginal stability. But if considering the formal definition of BIBO stability, then any pole on the imaginary axis, not cancelled by a zero, means the system in not BIBO stable.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Stability Analysis에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by