# How could I verify the stability of a real system with non-linearities?

For a closed loop system, I could do the stability margin analysis using linear method like bode diagram, but in reality there are non-linear elements in the system like saturation/rate limits inside the control loop, so is the computed stability margin using the linear method still applicable? How could I verify the margins meet the design goal on the real system?

• My comment to this important question is that the customer's desire to for performance or efficiency will make them want to operate systems at saturation and/or rate limit more often than not. So the simple answer to stay in the "small-signal" regime is not too realistic, IMO. Probably due to my own ignorance, I have used an analytic approach only to "small signal" part of the problem, which usually gets solved quickly. I've attacked the "large-signal" cases empirically or with simulation. However for systems with more than a couple of dimensions, that approach probably wouldn't work Oct 11 '21 at 14:39

Simple answer: tune the controller such that it avoids saturation / rate limits at all cost, then use standard stability analysis techniques.

Complex answer: Stability techniques like bode and nyquist are more or less a Rule-Of-Thumb method. Actual stability guarantees are based upon the logic that the energy in the system stays finite. The most broadly usable stability check is to prove the Lyapunov Stability criterion. This works as follows: $$\dot{x} = f(x(t)), ~~ x(0) = x_0$$ has an equilibruim at $$x_e$$, i.e. $$f(x_e)=0$$. Now, for every $$\epsilon>0$$ there exist a $$\delta>0$$ such that $$\|x_0 - x_e\|<\delta$$, then for every $$t\geq0$$ we have $$\|x(t) - x_e\|<\epsilon$$.

This statement does not imply that $$\delta > \epsilon$$, it simply shows that if the energy of the system at $$x_0$$ is finite, the energy stays finite for all $$t$$. Asymptotical stability can be proven by $$\lim_{t\rightarrow \infty}\|x(t) - x_e\|=0$$.

Note that the function you need to assess is no the plant, but the entire closed loop. As your nonlinearity are discontinuous, I highly recommend doing the simple answer. You can try this by trial and error, and tune the controller to be more conservative. Or use alternative control strategies such as MPC or $$H_\infty$$ control, but these are a bit more complex to design and to implement.

• Thanks and actually I added the limits/rate limits to the controller output command by intention for envelop protection and smooth response of the controlled object, so I can linearize the control loop by removing these limits and using the simple stability analysis method you mentioned to tell if I have any stable issues?
– LHX
Oct 11 '21 at 7:27

To add a little to Petrus' answer, for systems with constituitive nonlinearities, the effects of those nonlinear terms become significant at large amplitudes and in general shift the system resonances to higher frequencies.

Therefore, you can get a satisfactory approximation by assuming small amplitudes throughout- and remember, in putting together a dynamic system model you can always replace constant coefficients with ones that depend on the system state variables and use lookup tables instead to change the coefficients as the amplitudes get big.