Course materials · Control Engineering I

Comparing Stability and Performance Indices

English translation

Control Engineering I · Week 14

This week's goal · Distinguish poles, steady-state error, and finite-horizon performance indices.

Run: After signing in to MathWorks, open .mlx in your workspace. Click inside the code → Live Editor → Run Section to run one section at a time. Run runs everything. After changing a value, rerun the relevant section. Edit the text in ⟦enter here⟧ response fields; do not execute them. You can use Ctrl+Enter on Windows/Linux and ⌘+Enter on Mac.

1. First check whether the response is stable

BIBO stability means a bounded input produces a bounded output. For the continuous-time proper transfer functions in this exercise, check whether all poles have negative real parts after cancellation. Internal stability is a stronger condition that also considers hidden unstable modes.

First check whether the response is stable

Sign changes in the first column of a Routh table give the number of right-half-plane roots. Special cases with a first element of 0 or an entire row of 0 require separate handling and must not be automatically marked stable.

2. Define errors with nonunity feedback

T=GcG1+GcGHT=\frac{G_cG}{1+G_cGH} relates reference r to actual output y. The tracking error r−yr-y subtracts the actual output from the reference. Subtracting the sensor measurement Hy from the reference gives r−Hyr-Hy, which the controller receives. The two errors can differ if the sensor changes the signal magnitude or its variation over time. In this exercise, use r−yr-y to assess whether the actual output is close to the reference.

Define errors with nonunity feedback

Use K=4,G=1/(s+2),H=2/(s+4). Calculate 1−dcgain(T) and 1−H(0)dcgain(T) separately and check the difference.

3. Compare performance indices over the same time interval

Compare the magnitude and duration of error using a single number. ISE=∫e(t)2dt\mathrm{ISE}=\int e(t)^2\,dt weights large errors more heavily, while IAE=∫|e(t)|dt\mathrm{IAE}=\int|e(t)|\,dt sums error magnitudes directly. ITAE=∫t|e(t)|dt\mathrm{ITAE}=\int t|e(t)|\,dt assigns greater weight to an error of the same magnitude if it persists later. For KpK_p=1,2,4, use the same 0~20 seconds and time spacing for every model, and integrate with trapz.

Compare indices over the same time interval

If steady-state error is not 0, infinite-horizon ISE may diverge. The value calculated here reflects only error accumulated over 0~20 seconds. Comparing different automatically selected time axes is not a fair comparison.

4. Conditions for optimization and low-order approximation

Compare ISE(K3)=1K3+0.1K3\mathrm{ISE}(K_3)=\frac1{K_3}+0.1K_3 for K3>0. Compare the candidate found by differentiation with the grid search. Also compare the step responses of GH=11+11s/6+s2+s3/6G_H=\frac1{1+11s/6+s^2+s^3/6} and GL=11+1.615s+0.624s2G_L=\frac1{1+1.615s+0.624s^2}.

Conditions for optimization and reduced-order approximation

Optimization gives an optimum for the chosen index and allowed range. A reduced-order approximation does not match the original model for every input and frequency, so check both maximum error and final value.

Check your understanding

  1. What values should go into the code, and what does each row and column of the resulting array represent? If calculating physical quantities, have you also checked the units?
  2. Can you identify which parts to rerun when you change one condition?
  3. Do the results match your expectations? If they differ, can you explain why using the output values or plots?

Official MATLAB documentation · Control System Toolbox

Practice materials