Main Content

This example shows how to enforce absolute stability when a linear time-invariant system is in feedback interconnection with a static nonlinearity that belongs to a conic sector.

Consider the feedback connection as shown in Figure 1.

**Figure 1: Feedback connection**

is a linear time invariant system, and is a static nonlinearity that belongs to a conic sector (where ); that is,

For this example, is the following discrete-time system.

addpath(fullfile(matlabroot,'examples','control','main')) % add example data A = [0.9995, 0.0100, 0.0001; -0.0020, 0.9995, 0.0106; 0, 0, 0.9978]; B = [0, 0.002, 0.04]'; C = [2.3948, 0.3303, 2.2726]; D = 0; G = ss(A,B,C,D,0.01);

In this example, the nonlinearity is the logarithmic quantizer, which is defined as follows:

where, . This quantizer belongs to a sector bound . For example, if , then the quantizer belongs to the conic sector [0.1818,1.8182].

% Quantizer parameter rho = 0.1; % Lower bound alpha = 2*rho/(1+rho) % Upper bound beta = 2/(1+rho)

alpha = 0.1818 beta = 1.8182

Plot the sector bounds for the quantizer.

PlotSectorBound(rho)

represents the quantization density, where . If is larger, then the quantized value is more accurate. For more details about this quantizer, see [1].

The conic sector matrix for the quantizer is given by

To guarantee stability of the feedback connection in Figure 1, the linear system needs to satisfy

where, and are the input and output of , respectively.

This condition can be verified by checking if the sector index, , is less than `1`

.

Define the conic sector matrix for a quantizer with .

Q = [1,-(alpha+beta)/2;-(alpha+beta)/2,alpha*beta];

Get the sector index for `Q`

and `G`

.

R = getSectorIndex([1;-G],-Q)

R = 1.8247

Since , the closed-loop system is not stable. To see this instability, use the following Simulink model.

```
mdl = 'DTQuantization';
open_system(mdl)
```

Run the Simulink model.

```
sim(mdl)
open_system('DTQuantization/output')
```

From the output trajectory, it can be seen that the closed-loop system is not stable. This is because the quantizer with is too coarse.

Increase the quantization density by letting . The quantizer belongs to the conic sector [0.4,1.6].

% Quantizer parameter rho = 0.25; % Lower bound alpha = 2*rho/(1+rho) % Upper bound beta = 2/(1+rho)

alpha = 0.4000 beta = 1.6000

Plot the sector bounds for the quantizer.

PlotSectorBound(rho)

Define the conic sector matrix for a quantizer with .

Q = [1,-(alpha+beta)/2;-(alpha+beta)/2,alpha*beta];

Get the sector index for `Q`

and `G`

.

R = getSectorIndex([1;-G],-Q)

R = 0.9702

The quantizer with satisfies the conic sector condition for stability of the feedback connection since .

Run the Simulink model with .

```
sim(mdl)
open_system('DTQuantization/output')
```

As indicated by the sector index, the closed-loop system is stable.

[1] M. Fu and L. Xie,"The sector bound approach to quantized feedback control," *IEEE Transactions on Automatic Control* 50(11), 2005, 1698-1711.

bdclose(mdl); rmpath(fullfile(matlabroot,'examples','control','main')) % remove example data