Documentation |
On this page… |
---|
Simulink^{®} Control Design™ lets you linearize continuous-time nonlinear systems. The resulting linearized model is in state-space form.
In continuous time, the state space equations of a nonlinear system are:
$$\begin{array}{l}\dot{x}(t)=f\left(x(t),u(t),t\right)\\ y(t)=g\left(x(t),u(t),t\right)\end{array}$$
where x(t) are the system states, u(t) are the input signals, and y(t) are the output signals.
To describe the linearized model, define a new set of variables of the states, inputs, and outputs centered about the operating point:
$$\begin{array}{l}\delta x(t)=x(t)-{x}_{0}\\ \delta u(t)=u(t)-{u}_{0}\\ \delta y(t)=y(t)-{y}_{0}\end{array}$$
The output of the system at the operating point is y(t_{0})=g(x_{0},u_{0},t_{0})=y_{0}.
The linearized state-space equations in terms of δx(t), δu(t), and δy(t) are:
$$\begin{array}{l}\delta \dot{x}(t)=A\delta x(t)+B\delta u(t)\\ \delta y(t)=C\delta x(t)+D\delta u(t)\end{array}$$
where A, B, C, and D are constant coefficient matrices. These matrices are the Jacobians of the system, evaluated at the operating point:
$$\begin{array}{l}A={\frac{\partial f}{\partial x}|}_{{t}_{0},{x}_{0},{u}_{0}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}B={\frac{\partial f}{\partial u}|}_{{t}_{0},{x}_{0},{u}_{0}}\\ C={\frac{\partial g}{\partial x}|}_{{t}_{0},{x}_{0},{u}_{0}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}D={\frac{\partial g}{\partial u}|}_{{t}_{0},{x}_{0},{u}_{0}}\end{array}$$
This linear time-invariant approximation to the nonlinear system is valid in a region around the operating point at t=t_{0}, x(t_{0})=x_{0}, and u(t_{0})=u_{0}. In other words, if the values of the system states, x(t), and inputs, u(t), are close enough to the operating point, the system behaves approximately linearly.
The transfer function of the linearized model is the ratio of the Laplace transform of δy(t) and the Laplace transform of δu(t):
$${P}_{lin}(s)=\frac{\delta Y(s)}{\delta U(s)}$$
Simulink Control Design lets you linearize multirate nonlinear systems. The resulting linearized model is in state-space form.
Multirate models include states with different sampling rates. In multirate models, the state variables change values at different times and with different frequencies. Some of the variables might change continuously.
The general state-space equations of a nonlinear, multirate system are:
$$\begin{array}{ccc}\dot{x}\left(t\right)& =& f\left(x\left(t\right),{x}_{1}\left({k}_{1}\right),\dots ,{x}_{m}\left({k}_{m}\right),u\left(t\right),t\right)\\ {x}_{1}({k}_{1}+1)& =& {f}_{1}\left(x\left(t\right),{x}_{1}\left({k}_{1}\right),\dots ,{x}_{m}\left({k}_{m}\right),u\left(t\right),t\right)\\ \vdots & & \vdots \\ {x}_{m}({k}_{m}+1)& =& {f}_{i}\left(x\left(t\right),{x}_{1}\left({k}_{1}\right),\dots ,{x}_{m}\left({k}_{m}\right),u\left(t\right),t\right)\\ y\left(t\right)& =& g\left(x\left(t\right),{x}_{1}\left({k}_{1}\right),\dots ,{x}_{m}\left({k}_{m}\right),u\left(t\right),t\right)\end{array}$$
where k_{1},..., k_{m} are integer values and $${t}_{{k}_{1}}$$,...,$${t}_{{k}_{m}}$$ are discrete times.
The linearized equations that approximate this nonlinear system as a single-rate discrete model are:
$$\begin{array}{ccc}\delta {x}_{k+1}& \approx & A\text{\hspace{0.05em}}\delta {x}_{k}+\text{\hspace{0.05em}}B\text{\hspace{0.05em}}\delta {u}_{k}\\ \delta {y}_{k}& \approx & C\text{\hspace{0.05em}}\delta {x}_{k}+D\text{\hspace{0.05em}}\delta {u}_{k}\end{array}$$
The rate of the linearized model is typically the least common multiple of the sample times, which is usually the slowest sample time.
For more information, see Linearization of Multirate Models Linearization of Multirate Models .
Simulink Control Design linearizes blocks that do not have preprogrammed linearization using numerical perturbation. The software computes block linearization by numerically perturbing the states and inputs of the block about the operating point of the block.
The block perturbation algorithm introduces a small perturbation to the nonlinear block and measures the response to this perturbation. The default difference between the perturbed value and the operating point value is $${10}^{-5}\left(1+\left|x\right|\right)$$, where x is the operating point value. The software uses this perturbation and the resulting response to compute the linear state-space of this block.
In general, a continuous-time nonlinear Simulink block in state-space form is given by:
$$\begin{array}{l}\dot{x}(t)=f\left(x(t),u(t),t\right)\\ y(t)=g\left(x(t),u(t),t\right).\end{array}$$
In these equations, x(t) represents the states of the block, u(t) represents the inputs of the block, and y(t) represents the outputs of the block.
A linearized model of this system is valid in a small region around the operating point t=t_{0}, x(t_{0})=x_{0}, u(t_{0})=u_{0}, and y(t_{0})=g(x_{0},u_{0},t_{0})=y_{0}.
To describe the linearized block, define a new set of variables of the states, inputs, and outputs centered about the operating point:
$$\begin{array}{l}\delta x(t)=x(t)-{x}_{0}\\ \delta u(t)=u(t)-{u}_{0}\\ \delta y(t)=y(t)-{y}_{0}\end{array}$$
The linearized state-space equations in terms of these new variables are:
$$\begin{array}{l}\delta \dot{x}(t)=A\delta x(t)+B\delta u(t)\\ \delta y(t)=C\delta x(t)+D\delta u(t)\end{array}$$
A linear time-invariant approximation to the nonlinear system is valid in a region around the operating point.
The state-space matrices A, B, C, and D of this linearized model represent the Jacobians of the block.
To compute the state-space matrices during linearization, the software performs these operations:
Perturbs the states and inputs, one at a time, and measures the response of the system to this perturbation by computing $$\delta \dot{x}$$ and δy.
Computes the state-space matrices using the perturbation and the response.
where
x_{p,i} is the state vector whose ith component is perturbed from the operating point value.
x_{o} is the state vector at the operating point.
u_{p,i} is the input vector whose ith component is perturbed from the operating point value.
u_{o} is the input vector at the operating point.
$${\dot{x}|}_{{x}_{p,i}}$$ is the value of $$\dot{x}$$ at x_{p,i}, u_{o}.
$${\dot{x}|}_{{u}_{p,i}}$$ is the value of $$\dot{x}$$ at u_{p,i}, x_{o}.
$${\dot{x}}_{o}$$ is the value of $$\dot{x}$$ at the operating point.
$${y|}_{{x}_{p,i}}$$ is the value of $$y$$ at x_{p,i}, u_{o}.
$${y|}_{{u}_{p,i}}$$ is the value of $$y$$ at u_{p,i}, x_{o}.
y_{o} is the value of y at the operating point.
All user defined blocks such as S-Function and MATLAB Function blocks, are compatible with linearization. These blocks are linearized using numerical perturbation.
User-defined blocks do not linearize when these blocks use nondouble precision data types.
See Linearizing Blocks with Nondouble Precision Data Type Signals.