Why does robstab return stable perturbation?
2 views (last 30 days)
With specific forms of parametric uncertainty, I am getting incorrect results when analyzing the stability using robstab in the Robust Control Toolbox. The destabilizing perturbation returned does not result in an unstable system. Additionally, the identified bounds are incorrect.
It seems the issue is limited to situations in which the ureal parameter does not have equal +/- percentages. An example is shown below of a 1st-order low-pass filter with uncertain time constant. This system should be unstable for negative tau, and stable for positive tau.
% Example code of incorrect robstab results
tau = ureal('tau',1,'Range',[0.75 1.5]);
G = tf(1,[tau 1]);
[STABMARG, WCU, INFO] = robstab(G,opts);
The resulting upper bound is 300% (I think it should be 400%) and I'm told tau = 1 is destabilizing (which is not).
Abhi Sundararaman on 2 Aug 2017
I agree that the values do not seem correct. In fact, strangely if you use the range [0.55, 1.5] with a nominal value of 1, then WCU will display the correct destabilizing value of tau (tau = 0). Furthermore, if you use a nominal value that is closer to the upper bound than the lower bound, then tau gets approximated to some value close to zero. I'm not sure why there is such an inconsistency in this function.
The issue seems to occur when the ureal parameter has an asymmetric range that is asymmetric past a certain degree, and occurs more often when the nominal value is closer to the lower bound than the upper bound.
I have notified the developers of this issue. Unfortunately, I suppose the only workaround for now is to use a symmetric range.