Azzera filtri
Azzera filtri

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

86 visualizzazioni (ultimi 30 giorni)
How can we check the stability of this transfer function, using MATLAB? Using pole-zero method?

Risposte (1)

Mahesh Chilla
Mahesh Chilla il 30 Giu 2023
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 Commento
Paul
Paul il 1 Lug 2023
Modificato: Paul il 1 Lug 2023
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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by