11. Nonlinear Control Systems

11.1 Local Linearization of Nonlinear Systems

<< ControlSystems`

f = {x2, g - ((x3^2)/(M x1)), -((R x3)/L) + (e/L)}

h = x1

ball = 
      Linearize[f, {{x1, x10}, {x2, x20}, {x3, x30}}, {e, e0}]

Linearize[f, h, {{x1, x10}, {x2, x20}, {x3, x30}}, {e, e0}]

{x10 -> l0, x20 -> 0, x30 -> (Sqrt[M g l0])}

ball = ball /. %

StateFeedbackGains[ball, {p1, p2, p3}]

StateFeedbackConnect[ball, %] // Simplify

% /. {l0 ->  .1, M -> (10/(10^3)), 
          L -> 10. , R -> 100, g -> 9.8, p1 -> -1, 
          p2 -> -1 - I, 
          p3 -> -1 + I} // Chop

% // StandardForm

Insert[%, IdentityMatrix[3], -1]

SimulationPlot[%, - .01, {t, 5}, Sampled -> Period[ .1], 
        PlotStyle -> {Thickness[ .001], Dashing[{ .04,  .02}], 
            Dashing[{ .05,  .01,  .01,  .01}]}, 
        PlotLabel -> "Step Response"];

11.2 Rational Polynomial Approximations

h = (1/((10 s + 1) (50 s + 1)))

delay = Exp[-a s]

Needs["Calculus`Pade`"]

Pade[delay, {s, 0, 2, 2}]

TransferFunction[s, % h]