- p. 35. Reference to (A.95) should be to (A.136).
- p.74, before eq. (3.41). It should say: ... and the smallest gain
for any input direction,
*excluding for the case with more inputs than outputs the ``wasted'' inputs in the nullspace of G,*is equal to the minimum singular value. (Without this restriction, we can always for a "fat" matrix choose a nonzero input d in the nullspace of G such that Gd=0). - p.84, eq. (3.64). The signs in the last column of V should be changed. The same applies to v_underbar two lines below.
- p.89, below eq. (3.71). It should say: We prefer ...
**RGA-numbers**... close to zero (and**not**close to 1). (But a RGA-number close to 0 requires the diagonal elements in the RGA-matrix to be close to 1; so we would like to "pair on"**RGA-elements**close to 1). - p. 111,
**Exercise 3.22**, part (c). The statement that the smallest singular value of the lower triangular matrix is less than 2^-m is not true. - p. 119
**MATLAB code in Table 4.1**. Replace`sqrt(R)`by the command`sqrtm(R)`(three places). - p. 124
**Example 4.5 on state controllability of tanks in series**. The responses in the states (Figure 4.1b) will remain within +- 1 (and not continue rising) after t=400 s when we set T0=0. Note 2 should therefore be modified to: Although the states (tank temperatures) are indeed at their desired values of +-1 at t=400s, it is not possible to hold them at these values, since at steady-state all the states must be equal. - p. 152, H2-norm (MISPRINTS). In the paragraph following (4.118), ||G(s)||^2 should be replaced by ||G(s)||_2 (i.e., subscipt 2 instead of superscript). Furthermore, eq. (4.119) should be deleted, as we should not take the max over impulses, but rather the sum as described in the paragraph above.
- p. 174,
**Section 5.6.1 on Inverse response for SISO system:**It is*not*generally true that the step response for a SISO system with n_z RHP-zeros crosses zero n_z times (counterexamples exist for systems with complex RHP-zeros), but it is true that a SISO system with n_z REAL RHP-zeros crosses zero AT LEAST n_z times. - p.196, line 3 in
**Example 5.8**: Replace \tau by \theta in the approximation for w_u (should be: \w_u \approx (\pi/2)/\theta). - p. 210,
**Exercise 5.8**: Disregard the hint. - p. 217, 6th line. It should say that B_p^{-1} and B_z^{-1} (i.e. the inverses ) are stable all-pass transfer matrices.
- p. 220,
**Exercise 6.1**: The elements of S are of magnitude 1/(k * theta + 2) (not k/(2 * k + theta)). - p. 225, top equation (unnumbered): G_90(s) has wrong sign.
- p. 232, line 3. Delete "or use of feedforward control" (since the input usage is the same with feedback or feedforward control).
- p.242,
**Example 6.7**: The worst-case peak computed using skewed-mu is 14.5 (and not 14.2). Also see the MATLAB file`Expl6_7.m` - p. 251,
**Exercise 6.15**: Interchange elements in last row of G(s), i.e. G = [c+(1/s) 1/s;1/s c+(1/s)]; (here c is a constant, e.g. c=1). - p. 311,
**Example 8.5**: The perturbation matrix in (8.72) should be Delta = [0.2 -0.1; 0.2 -0.1] (i.e. take the transposed) - p. 318,
**Exercise 8.17**: should be d = sqrt(|b|/|a|) instead of d = sqrt(|a|/|b|). - p. 318, Exercise 8.19. "Answers: Yes and No" should be "Answers: No and No"
- p. 368, eq. (9.49) should be reordered to: -F_inf (sI-A_inf)^(-1) Z_inf L_inf
- p. 376, four lines from bottom, change to: "to
*either*have the same number of unstable poles or the same number of unstable (RHP) zeros." - p. 382, below eq. (9.98), sign error: Replace Re(lambda[A+B*Fbar]) by Re(lambda[A-B*Fbar]).
- p. 389, Table 9.3. Change Matlab command sqrt to sqrtm (4 places)
- p. 431: Replace -0.54 by 0.54 (delete a minus-sign) in four places: line 10 (two places), line 13 and Eq.(10.35).
- p. 437. Theorem 10.3 is not correct (unfortunately). See p.510 below.
- p. 453, after (11.17). ... balanced
**residualization**preserves the steady-state gain... (not truncation). - p. 456, in line below (11.30): The term sigma_{k+1} should be deleted. That is, the correct is that delta is less than or equal to sigma_{k+l+1} + ... + sigma_n. This means that the H-infinity norm in (11.29) is bounded by "the tail" - with the first deleted singular value sigma_{k+1} counted only once (even when it is repeated (l>1)).
- p.466,
**Table 11.3**(MATLAB commands for unstable system). There is an error in the MATLAB command for the Hankel norm approx. of stable part. It should read:`[sysb,hsig]=sysbal(syss); sys1=hankmr(sysb,hsig,ks,'d');` - p. 493, line 23. y1(t)<=0.5 should be y2(t)<=0.5.
- p. 503 (
**SVD**), 6th line from the bottom: Should be V' = V S. (in words, the result says that we may rotate the phase of all elements in the input singular vector if we rotate the elements in corresponding output singular vector by the same amount; see also (A.53). In the**nonsquare case**, we may in addition rotate with a unitary matrix the space corresponding to the extra inputs or outputs. E.g. if A has two extra "inputs", so V has 2 extra columns, we may rotate with a 2x2 unitary matrix the two extra columns in V. In fact, if some of the singular values are zero we may "rotate" the entire nullspace; see (A.53)) - p. 510 and p. 437 (Thm. 10.3): it is
**not**correct that RGA(G)=I implies that G is triangular. As an counterexample consider the matrix >> g = [1 1 0 0; 0 1 1 1; 1 1 1 0; 0 0 1 1] which has RGA=I. (The counterexample is from Johnson and Shapiro (1986) and is based on discussion they had with Ed Bristol; thanks to Vinay Kariwala for pointing this counterexample out to us). One may think this is a constructed example that may never happen in practice, but (unfortunately) this is not the case as seen from a simple realistic process example that I have constructed. Here is a simulink-file for the process. - p. 511, (A.78): For a 4x4 matrix, the conjectured upper bound
||RGA||_sum +2 on the mimimized condition number cond*(G) is
**not**correct (thanks to Vinay Kariwala for pointing this out). This is clear from the results of Q.Liang ("Is the Relative Gain Array a Sensitivity Measure?", Proc. IFAC Workshop on interactions between process design and process control, London 1992, pp. 133-138). Liang provides the following counterexample: G = [1 -1 -1 1;1 1 1 1;1 1 -1 -1;1 -1 1 -1]*diag([20 19 2 1])*[1 1 1 -1;-1 1 1 1;1 -1 1 1; 1 1 -1 1]; which has cond*(G) = 20, but ||RGA||_sum = 19.05. Generally, Liang shows that the value of cond*(G) can be much larger than ||RGA||_sum +2 if the ratio of the 2nd and 3rd singular value of G is large. This give rise to the following counterexample which is even more striking: G = [1 -1 -1 1;1 1 1 1;1 1 -1 -1;1 -1 1 -1]*diag([k k 1 1])*[1 1 1 -1;-1 1 1 1;1 -1 1 1; 1 1 -1 1]; It has cond*(G) = k (which can be arbitrary large), but for any k all RGA-elements are 0.25 so ||RGA||_sum = 4.

- p. 23, last equation: Replace K by K_r.
- p. 34, Eq. (2.40): Replace > by >= (greater or equal)
- p. 85, 3rd line: Delete the transpose (T).
- p. 89, three lines below (3.71): Delete
*shaping,* - p. 96, 2nd line from bottom: Delete
*IndexRouth Hurwitz stability test*. - p. 134, in 4.6.2 item 1: Delete
*Kailath).and* - p. 148, Figure 4.8: Typical Nyquist plot of det(I+L) (NOT 1+detL)
- p. 151, in Remark 5: ... made
*following*Theorem 4.9... - p. 195, section 5.13.2, 2nd line: (G_d - r) should be (G_d d - r).
- p. 214, 2nd equation. The cos^-1 (arccos) should be taken on the "whole ting" including the denominator (as in A.113)
- p. 325, First equation, The hat on the singular value of Delta_P should be deleted
- p. 332 (Table 8.1) and p. 339 (Table 8.2): Change ydel to udel two places in the Matlab program (the program works OK as it is, but this gives consistency with Figure 8.1).
- p. 337, Remark 1. The implication in paranthesis should point to the left (and not to the right), that is, it should read: "The suffiency of (8.50) (\Leftarrow) also..."
- p. 339 (Matlab code in Table 8.2). Interchange ydel and udel.
- p. 343, last line. A12 should be A22.
- p. 347, eq. (8.151). Change last \beta_2 to \beta^2
- p. 347, 4 lines below eq. (8.153). Change F_l(N,Delta) to F_u(N,Delta).
- p. 365, Eq. (9.29) + line before (9.32). F(jw)F(jw)^T should be tr(F(jw)F(jw)^H).
- p. 387, 4 lines below (9.82). (3,3) block should be (3,2) block.
- p. 388, 3 lines above (9.88). Also replace rhoDs by rhoWoDs.
- p. 416, Delete the last part of eq. (10.21),i.e. delete r2=u1hat.
- p. 416-417. Replace u2 by u in Fig. 10.3(a), Fig. 10.4 and in eq. (10.21).
- p. 446, Figure 10.12: Labels y1 and y2 should be exchanged
- p. 484. Two places just before Remark: Max.singular value (sigma-overbar) should be min.singular value (sigma-underbar).
- p. 487, line 10. WpWaWb should be WpWaWg.
- p. 544, Paper by Postlethwaite, Samar,... (1995). Page reference should be 3881-3886.
- p. 546, Book by Stephanopoulos is from 1984 (not 1989).

- p.5 (Definition 1.1 of properness): To include time delays it would be better to replace s by jw in this definition and let w go to infinity (a pure delay should be semiproper and not strictly proper).
- p.30 (text for Fig. 2.10): The sum for the total variation (TV) is of course from i=1 to infinity.
- p. 83 (item 1 on
**selecting weight Wu for H-infinity control**): Since we usually require tight control at low frequencies, input usage is unavoidable at low frequencies. Therefore, there may be no reason to penalize the inputs at low frequencies, so we often use a weight of the form Wu = s/(s+w1), where the frequency w1 is adjustable. - p. 111 (
**Exercise 3.21**) Do the singular values bound the magnitude of the elements of the matrix? To help answering this question consider the matrix A=[3 2; 1 -1] (with singular values 3.62 and 1.38). - p. 218, in the proof of (6.18) (
**Sensitivity peak with combined RHP poles and zeros**). Actually, Boyd and Desoer (1985) did not prove (6.18), but rather a weaker version with the sine term deleted. Chen (1995) derives a formula which is improved compared to (6.18), but his additional factor involving Q(z) is a bit difficult to evaluate. - p. 267, Example 7.5 (
**Gain uncertainty kmin < k < kmax**). The mean gain and relative uncertainty in the gain are defined as

kbar = (kmax + kmin)/2;

rk = (kmax - kmin) / (kmax+kmin) - p. 316, eq. 8.94 (
**Mu-inequality**): To show that this inequality does not hold for any structure of Delta you may as a counterexample (see Exercise 8.21) consider A = [1 10; 0 1], B = [0 1; 10 1]. - p. 317 (
**Properties of mu**). Note that mu (a a a; b b b; c c c) = |a| + |b| + |c| for diagomal Delta.

Also note that for a diagonal Delta we may "move" any scalar from a column to the corrsponding row (or vice versa), see (8.84). - p. 333 (proof of (8.135)): The last two lines of the proof are difficult to follow; see Zhou et al. (1996) p. 293-295 for more details.
- Section 8.12 on Mu-synthesis using DK-iteration should probably be moved to the end of Chapter 9.
- p.422 (
**Partial control**). Measurement noise should be included in the feedback, i.e. write u_2 = K_2 (r_2 - y_2 - n_2). We should then replace r_2 in (10.30) by (r_2 - n_2). Also, we should include a block diagram of equations in (10.28) and (10.29) and the above feedback euqtion. - p. 422 (Section 10.7 on partial control).
The ordering in Chapter 10 is probably
not the best, and it would probably be better if
Section 10.2 on
**Measurement selection for indirect control**(pp. 406 - 408) was moved to the end of Section 10.7 (p. 431) as subsection**10.7.4 Indirect Control**. The results in (10.9) would then follow easily as a special case (10.32) provided we also take into account measurement noise on y_2, so that r_2 in (10.32) is replaced by (r_2 - n_2).

*Proof:*(10.9) is a special case of (10.32) if we do the following: Set z=y_1, z_r=r_1, y=y_2, e=-n_2 (control error caused be measurement error), and select r_2 such that r_1 = P_r r_2 (this implies that by controlling y_2=r_2 we achieve (indirectly) y_1=r_1 for the case when d=0 and n_2=0). Note that in (10.9) we should scale P_r with respect to the control error (n_2) and NOT with respect to r_2 (as we may do when considering true partial control). - p. 429 (
**true partial control**). For the case when G is square (and thus G_11 and G_22 are square), Eq. (10.33) may be generalized to the case with several (n_u) uncontrolled outputs and several (n_u) unused inputs (see Zhao, Ph.D. thesis, Norwegian Univ. of Science and Technology, 1996):

P_d = ( [G^-1]_{unused,uncontrolled )^-1 [G^-1 G_d]_{unused}

This may be derived from (10.32) by use of the Schur complement things in (A.7). - p. 439 (
**Pairing Rule 2**) Change to: FOR A STABLE PLANT avoid... (this is just to clarify since the whole section assumes stable plant) - p. 466 (
**Model reduction with MATLAB**). WARNING. Be careful with the command sysbal from the Mu-toolbox - it does not work on unstable systems - and usually provides no warnings. You may consider using ohklmr from the Robust control toolbox instead - it works for both stable and unstable systems. - p. 498 (before A.1.1 -
**Matrix square root**): A Hermitian matrix A is said to be*positive definite*if x^H A x > 0 for any nonzero vector x; this is denoted A > 0. Similarly, it is*positive semi-definite*(A >= 0) if x^H A x >= 0 for any nonzero vector x. For a positive semi-definite matrix A, we define the*matrix square root*as the positive semi-definite matrix A^(1/2) which satisfies A^(1/2) A^(1/2) = A. (Note that the term positive and the matrix square root are only defined for a Hermitian matrix). - p. 502 (
**Property 13 of eigenvalues**). A*Hermitian matrix (with A=A^H)*is positive definite if and only if all its eigenvalues are real and positive. (*Remark.*A prererquisite for classifying a matrix as positive or negative (definite), is that it is Hermitian so this is a clarification rather than a correction). - p. 509 (eq. (A.73) and (A.74): D_I is here actually the inverse of the D_I used in (A.69).