dilate is used to derive affine dilations for polynomially parametrized uncertain SDPs. The dilated constraint can then be used for conservatively solving robust SDPs with polytopic uncertainty.

```
Fdilated = dilate(F,w)
[G,H,M] = dilate(X,w)
```

The robust SDP framework in YALMIP allows SDP constraints with affine dependence on the uncertainty, and a polynomial or possibly conic uncertainty description. However, it is not uncommon that the dependence with respect to the uncertainty is polynomial.

A recent approach to address this is matrix dilations, where the polynomial dependence is reduced to an affine dependence, at the cost of a larger SDP and possible conservatism. Note that the implementation in YALMIP uses a slightly alternative approach.

Consider the problem of finding an upper bound on a polynomial **f** in the range 0 to 1 (this example is taken from the reference above)

```
sdpvar t1 t2
f = -375*t1^4 + 800*t1^3-570*t1^2+144*t1-375*t2^4 + 800*t2^3-570*t2^2+144*t2
```

This can be formulated as a robustness problem; find the smallest possible **x** such that **x-f** is positive on the region of interest.

The expression **x-f** is not affine in the uncertainty **t1** and **t2**, hence the standard robust framework in YALMIP is not applicable. To get a robustness problem with affine dependence, we dilate the constraint

```
sdpvar x
Fdilated = dilate(x-f>=0,[t1 t2])
```

The dilated constraint is affine in the uncertainty, and we can apply standard robust programming.

```
F = [Fdilated, uncertain([t1 t2]), 0 <= [t1 t2] <= 1];
optimize(F,x)
```

The command can alternatively be called with an sdpvar object instead of aconstraint. The output arguments are then the matrices used in the dilation. The code above is equivalent to the following

```
[G,H,M] = dilate(x-f,[t1 t2])
W = sdpvar(size(G,1),size(H,2))
F = [G + W*H' + H*W' >= 0, uncertain([t1 t2]), 0 <= [t1 t2] <= 1]
optimize(F,x)
```