# System Dynamics Specifications

This example shows how to constrain the poles of a control system tuned with `systune` or `looptune`.

### Background

The `systune` and `looptune` commands tune the parameters of fixed-structure control systems subject to a variety of time- and frequency-domain requirements. The `TuningGoal` package is the repository for such design requirements.

### Closed-Loop Poles

The `TuningGoal.Poles` goal constrains the location of the closed-loop poles. You can enforce some minimum decay rate

`$Re\left(s\right)<-\alpha ,$`

impose some minimum damping ratio

`$Re\left(s\right)<-\zeta |s|,$`

or constrain the pole magnitude to

`$|s|<{\omega }_{max}.$`

For example

```MinDecay = 0.5; MinDamping = 0.7; MaxFrequency = 10; R = TuningGoal.Poles(MinDecay,MinDamping,MaxFrequency);```

constrains the closed-loop poles to lie in the white region below.

`viewGoal(R)`

Increasing the `MinDecay` value results in faster transients. Increasing the `MinDamping` value results in better damped transients. Decreasing the `MaxFrequency` value prevents fast dynamics.

### Controller Poles

The `TuningGoal.ControllerPoles` goal constrains the pole locations for tuned elements such as filters and compensators. The tuning algorithm may produce unstable compensators for unstable plants. To prevent this, use the `TuningGoal.ControllerPoles` goal to keep the compensator poles in the left-half plane. For example, if your compensator is parameterized as a second-order transfer function,

`C = tunableTF('C',1,2);`

you can force it to have stable dynamics by adding the requirement

```MinDecay = 0; R = TuningGoal.ControllerPoles('C',MinDecay);```