MATLAB Answers

Stable model, but results show instability

14 views (last 30 days)
Kiran Sagar
Kiran Sagar on 30 Dec 2012
i have recently made a simulink model of a mechanical system, though complex in nature, but basically it is a second order ODE.
i think that my plant model is stable statically, and neutrally stable dynamically. yet i am getting results showing dynamic instability. i am thinking about possible reasons for this.
kindly clarify whether numerical scheme can lead to dynamic instability of a neutrally stable plant.
configuration parameters: variable step, step size- auto, tolerances- auto.

Accepted Answer

Matt J
Matt J on 30 Dec 2012
Edited: Matt J on 30 Dec 2012
Because a neutrally stable system (as I know the term) is on the threshold of instability, it definitely makes sense that numerical inaccuracies in the implementation of the plant can render it unstable.
Consider a system that simply multiplies its input by some constant
For c=1, it is neutrally stable at all inputs, x, whereas for any c>1, it is unstable. If c was the output of approximate calculations, then even though c may supposed to be 1 (stable), imprecision in the calculations can make it >1, i.e., unstable.

More Answers (1)

Jan on 30 Dec 2012
Edited: Jan on 30 Dec 2012
Due to round-off errors and local discretization error the numerical and mathematical behavior is expected to be different. A simply example is the differential quotient as approximation of the derivative:
d = (f(x+h) - f(x)) / h;
If h is large, the linearization error is large. If h is small, the difference of the function evaluations can be such tiny, that the cancellation error dominates the result. Therefore the numerically determined derivative has a limited accuracy only, as a rule of thumb in the magnitude of sqrt(eps). Equivalent arguments appear for the two-sided differential quotient and any other scheme also.
Because all numerical ODE solvers are based on evaluating linearized derivatives, the limited accuracy is a fundamental effect, which cannot be avoided. Reducing the relative and absolute tolerances helps, but only until a certain limit, when the cancellation error dominates the linearization error and the accumulation of the round-off errors gets more important due to the higher number of steps.
However, an unexpected instability can be caused by a modelling error also. Did you validate the model exhaustively? How did you check the dynamic instability? Is the model continuously differentiable (I ask this, because in the past I saw so many users in this forum, who used integrands with discontinuities)?

Community Treasure Hunt

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

Start Hunting!

Translated by