1. (a) Multivariable Nyquist Plot (diagonal uncertainty case) dash=neg freq solid=pos freq 2.5 2 1.5 1.5 Im -.5-1 -1.5-2 -2.5 1 2 3 4 5 Re From the multivariable Nyquist plot, if 1/k < -.37 or 1/k > 5.36, or.19 < k < 2.7, then the closed loop system is stable. (b)-(i) 6 singular value plot 5 4 3 2 1 1-1 1 1 1 1 2 frequency (rad/sec) max singular value = 5.4379 bound on Delta =.1839 max (k 1, k 2 ) < 1/5.4379 =.184 (b)-(ii) bounds on (kl,k2): ++,+-,-+,-- ++: -2.4284, +-: -.24866, -+: -.93255, --: -.18649
Plots of Hermitian part of diag(k 1 +/-,k 2 +/- ) G(jw). (k 1 >,k 2 >) (k 1 >,k 2 <) minimum eigenvalue of (G(jw)+G T (-jw))/2: k1>,k2> minimum eigenvalue of (G(jw)+G T (-jw))/2: k1>,k2< -.5 -.5 -.1-1 -.15-1.5 -.2-2 -.25-2.5 -.3-3 -.35-3.5 -.4-4 -.45-4.5-1 1 2 1 1 1 1 1-1 1 1 1 1 2 frequency (rad/sec) frequency (rad/sec) (k 1 <,k 2 >) (k 1 <,k 2 <) minimum eigenvalue of (G(jw)+G T (-jw))/2: k1<,k2> minimum eigenvalue of (G(jw)+G T (-jw))/2: k1<,k2< -.2-1 -.4-2 -.6-3 -.8-4 -1-1.2-5 (b)-(iii) -1.4 1-1 1 1 1 1 2 frequency (rad/sec) -6 1-1 1 1 1 1 2 frequency (rad/sec) With k 1 in -.18,.18 and k 2 in -.18,.18, the following set of LMI s P (A+B diag(k 1 +,k 2 + )C) + (A+B diag(k 1 +,k 2 + )C) T P< P (A+B diag(k 1 +,k 2 - )C) + (A+B diag(k 1 +,k 2 - )C) T P< P (A+B diag(k 1 -,k 2 + )C) + (A+B diag(k 1 -,k 2 + )C) T P< P (A+B diag(k 1 -,k 2 - )C) + (A+B diag(k 1 -,k 2 - )C) T P< where (A,B,C,) is a realization of G(s), has a solution. Output of LMI solver: Iteration : Best value of t so far 1 -.1298 Result: best value of t: -.1298 f-radius saturation:. of R = 1.e+1 -.129 *** feasible! *** stability bound: k1: -.18,.18 k2: -.18,.18
(b)-(iv) ********* real mu *********... Mu upper bound (peak value): 5.372e+ Robust stability margin : 1.861e-1 ********* complex mu *********... Mu upper bound (peak value): 5.372e+ Robust stability margin : 1.861e-1 ********* Delta = unstructured (should be 1/H-infty norm of F) *********... Mu upper bound (peak value): 5.465e+ Robust stability margin : 1.83e-1 maximum real mu = 5.3723 maximum real bound for diag(k1,k2) =.18614 maximum complex mu = 5.3723 maximum complex bound for diag(k1,k2) =.18614 maximum bound for unstructured Delta =.18614 maximum spectral radius of F = 5.3723 maximum bound for k when Delta = k I (k complex) =.18614 (b)-(v) Closed loop characteristic polynomial: 2 s + (2 + k1 + 4 k2) s + 4 k2 + k1 + 1-2 k1 k2 Assume -k1max < k1 < k1max, -k2max < k2 < k2max, then the coefficients can be bounded by: 2 - k1max - 4 k2max < (2 + k1 + 4 k2) < 2 + k1max + 4 k2max - 4 k2max - k1max + 1 < 4 k2 + k1 + 1 < 4 k2max + k1max + 1 1-2 k1max k2max < 1-2 k1 k2 < 1 + k1max k2max all Kharitonov polynomials are stable when k1 <.18 k2 <.18 Solution Script (fin1.m) solution of problem 1 (Multivariable Final 22) clear all; close all; open loop plant
G=1 2;3 4*tf(1,1 1); aa,bb,cc,dd=ssdata(ss(g)); multivariable nyquist w=logspace(-4,4,5); sys=ss(aa,bb,cc,dd); sigmah1=mvarnyq(sys,w); diagonal uncertainty case k ; k -1/k<-.88-1/k>.75-13.3<k<11.4 figure(1); plot(real(sigmah1(1,:)),imag(sigmah1(1,:)),'-r',... real(sigmah1(1,:)),-imag(sigmah1(1,:)),'--r',... real(sigmah1(2,:)),imag(sigmah1(2,:)),'-b',... real(sigmah1(2,:)),-imag(sigmah1(2,:)),'--b'); title('multivariable Nyquist Plot (diagonal uncertainty case)',... ' dash=neg freq solid=pos freq') xlabel('re');ylabel('im');grid; axis equal small gain w=logspace(-1,2,2); sys=ss(aa,bb,cc,dd); sv=sigma(sys,w); figure(3);semilogx(w,sv);title('singular value plot'); xlabel('frequency (rad/sec)'); disp('max singular value = ',num2str(max(sv(1,:)))); disp('bound on Delta = ',num2str(1/max(sv(1,:)))); print -f3 -depsc smallgainexample.eps positive real realpartpp=pr(sys,w); figure(4);semilogx(w,realpartpp); title('minimum eigenvalue of (G(jw)+G^T(-jw))/2: k1>,k2>'); xlabel('frequency (rad/sec)'); realpartpn=pr(1 ; -1*sys,w); figure(5);semilogx(w,realpartpn); title('minimum eigenvalue of (G(jw)+G^T(-jw))/2: k1>,k2<'); xlabel('frequency (rad/sec)'); realpartnp=pr(-1 ; 1*sys,w); figure(6);semilogx(w,realpartnp); title('minimum eigenvalue of (G(jw)+G^T(-jw))/2: k1<,k2>'); xlabel('frequency (rad/sec)'); realpartnn=pr(-1 ; -1*sys,w); figure(7);semilogx(w,realpartnn); title('minimum eigenvalue of (G(jw)+G^T(-jw))/2: k1<,k2<'); xlabel('frequency (rad/sec)');
print -f4 -depsc prexample1.eps print -f5 -depsc prexample2.eps print -f6 -depsc prexample3.eps print -f7 -depsc prexample4.eps bpp=min(realpartpp); bpn=min(realpartpn); bnp=min(realpartnp); bnn=min(realpartnn); disp('bounds on (kl,k2): ++,+-,-+,--'); disp(sprintf('++:.5g, +-:.5g, -+:.5g, --:.5g\n',... 1/bpp,1/bpn,1/bnp,1/bnn)); LMI n=size(aa,1); L1=1 ; ; L2= ; 1; a1=-bb*l1*cc; a2=-bb*l2*cc; define lmi variable to be solved setlmis(); P,ndec,Pdec=lmivar(1,n 1); set up uncertain variable range k1=-1,1*.18 range of k1 k2=-1,1*.18; range of k2 k1a=k1(1);k1b=k1(2); k2a=k2(1);k2b=k2(2); set up LMI to be solved left hand side of first lmi: m1 1,1th block of the lmi: l1,l2 first argument = m1,l1,l2,p second/third a,b 's' to specify a*p*b+b'*p*a' lmiterm(1,1,1,p,(aa+k1a*a1+k2a*a2)',1,'s'); left hand side of second lmi: m1 1,1th block of the lmi: l1,l2 a*p*b first argument = m1,l1,l2,p second/third a,b lmiterm(2,1,1,p,(aa+k1b*a1+k2a*a2)',1,'s'); left hand side of third lmi: m1 1,1th block of the lmi: l1,l2 a*p*b
first argument = m1,l1,l2,p second/third a,b lmiterm(3,1,1,p,(aa+k1a*a1+k2b*a2)',1,'s'); left hand side of fourth lmi: m1 1,1th block of the lmi: l1,l2 a*p*b first argument = m1,l1,l2,p second/third a,b lmiterm(4,1,1,p,(aa+k1b*a1+k2b*a2)',1,'s'); example=getlmis; options=,1,-1,-1,; tmin,pfeas=feasp(example,options); disp(tmin) if tmin<; disp('*** feasible! ***'); disp('stability bound: '); disp('k1: ',num2str(k1a),',',num2str(k1b)); disp('k2: ',num2str(k2a),',',num2str(k2b)); else disp('*** no feasible solution (reduce uncertainty bound)! ***'); end mu sys1=ltisys(aa,bb,cc,dd,1); delta1=ublock(1,1,'ltisr'); delta2=ublock(1,1,'ltisr'); deltar=udiag(delta1,delta2); disp('********* real mu ********* '); marginr,peakf,fs,ds,gs = mustab(sys1,deltar); delta1=ublock(1,1,'ltisc'); delta2=ublock(1,1,'ltisc'); deltac=udiag(delta1,delta2); disp('********* complex mu ********* '); marginc,peakf,fs,ds,gs = mustab(sys1,deltac); deltaf=ublock(2,1,'ltifc'); disp('********* Delta = unstructured ',... '(should be 1/H-infty norm of F) ********* '); marginf,peakf,fs,ds,gs = mustab(sys1,deltaf); should be same as H- inf disp('maximum real mu = ',num2str(1/marginr)); disp('maximum real bound for diag(k1,k2) = ',num2str(marginr)); disp('maximum complex mu = ',num2str(1/marginc)); disp('maximum complex bound for diag(k1,k2) = ',num2str(marginc)); disp('maximum bound for unstructured Delta = ',num2str(marginc)); spectral radius rho_c=(max(abs(sigmah1))); disp('maximum spectral radius of F = ',... num2str(max(rho_c))); disp('maximum bound for k when Delta = k I (k complex) = ',... num2str(1/max(rho_c)));
Kharitonov syms s k1 k2 k1mx=.18;k2mx=.18; kk=k1 ; k2; charpoly=collect(simplify(det(s*eye(n,n)-(aa-bb*kk*cc))),s); pretty(charpoly); a1u=2+k1mx+4*k2mx; a1l=2-k1mx-4*k2mx; au=4*k2mx + k1mx + 1 + 2 *k1mx *k2mx; al=-4*k2mx - k1mx + 1-2 *k1mx *k2mx; poly1=1 a1l au; poly2=1 a1u al; poly3=1 a1l al; poly4=1 a1u au; r1=max(real(roots(poly1))); r2=max(real(roots(poly2))); r3=max(real(roots(poly3))); r4=max(real(roots(poly4))); if r1<&r2<&r3<&r4< disp('all Kharitonov polynomials are stable'); disp(' k1 <',num2str(k1mx),' ',' k2 <',num2str(k2mx)); else disp('not all Kharitonov polynomials are stable, reduce bounds!'); end
Problem 2. Given the state space representation of the plant Parameterize an n K -th order controller as ẋ = Ax + Bu y = Cx. ẋ K = A K x K + B K y = A K x K + B K Cx u = C K x K + D K y = C K x K + D K Cx. Substituting back into the plant state equation we have ẋ =(A + BD K C)x + BC K x K. Putting x and x K together, the closed loop system is described by ẋ A + BDK C BC = K x ẋ K B K C A K x K = A B AK B + K I x I C K D K C }{{}}{{}}{{}}{{} J A The closed loop system is stable if and only if there exists X cl > such that B C x K. X cl (A + BJC)+(A + BJC) T X cl <. (1) Define H = X cl A + A T X cl Q = B T X cl P = C. Then (1) becomes H + Q T JP + P T J T Q. (2) Note that with loss of generality we can assume B and C full rank, then Q and P are also full rank. Now apply Lemma 7.2, then we have (2) equivalent to N T QHN Q <, N T P HN P < (3) where R(N Q )=N (Q) and R(N P )=N (P ). In our case, N Q = X 1 cl N T c N P = No where R(N o )=N (C) and R(N T c )=N (B T ). 1
Let and write X X2 X cl = X2 T X 3 X 1 cl = Y Y2 Y2 T Y 3 By Lemma 7.9, X cl > if and only if X I X I and rank I Y I Y lasubsituting (4) (5) into (3) and simplify, we obtain Together with (6), this proves Theorem 5.8. No T (A T X + XA)N o < N c (AY + YA T )N c <. (4). (5) n + n K. (6) 2
(a) Let the input of G be denoted z and output w. Then from the block diagram we have z = K(Gz + w) = (I + KG) 1 Kw = K(I + GK) 1 w. Given a general interconnection between a system P (with input (w, u) and output (z,y)) and K (feedback from y to u), the closed loop transfer function is T zw = P 11 P 12 K(I + P 22 K) 1 P 21. Matching terms, it s clear that P 11 =, P 12 = I, P 21 = I, P 22 = G,or I P =. I G From the robust stability theorem, the closed loop system is stable for all G ν if and only if T zw H < 1/ν. (b) The condition T zw H < 1/ν is equivalent to T νz,w H < 1. A state space realization for T νz,w is ẋ = Ax + w + Bu = Ax + w +(B/ν)νu νz = x + w + I νu y = Cx + I w + νu. The H optimization requires the solution of X and Y.ForX, we have the Riccati Equation: A T X + X A + C T 1 C 1 + X (B 1 B T 1 B 2 B T 2 )X =. Since B 1 =, C 1 =, B 2 = B/ν,wehave Similarly, for Y (note that C 2 = C): A T X + X A ν 2 X BB T X =. = AY + Y A T + B1 T B 1 + Y (C1 T C 1 C2 T C 2 )Y = AY + Y A T Y C T CY. Let W c be the controllability grammian of ( A +,B + ) and W o be the observability grammian of (C +, A + ): W c ( A + ) T +( A + )W c + B+B T + = W o ( A + )+( A + ) T W o + C + C+ T =. Then it follows that X and Y given below satisfy the Riccati equations: W 1 c ν X = 2 W 1 o, Y =. 1
The condition ρ(x Y ) < 1 (ρ is the spectral radius) is equivalent to ρ(wc 1 This is further equivalent to ρ(w c W o ) >ν 2, which is the stated condition. The H optimal controller is of the form: ˆx = (A B 2 B T 2 X L C)ˆx + L y = (A B + B T +W 1 c L C)ˆx + L y L = (I Y X ) 1 Y C T =(I W 1 o Wc 1 ) 1 Wo 1 C+ T νu = B2 T X ˆx = BT + ν W c 1 ν 2ˆx = B+W T c 1 νˆx. The actual control signal is then u = B+W T c 1 ˆx. (c) Given g(s) =1/(s 1) 2. Choose, for example, the realization 1 1 A =, B =, C = 1, D =. 1 1 Then W c =.25.25.25.5, W o =.5.25.25.25. W 1 o )) < 1/nu 2. The supremum of ν is.136. For the controller design, choose something slightly smaller, e.g., at 95 value, ν =.984. The H controller is then s.423 K(s) = 337.16 (s +32.86)(s +4.76). The closed loop K(I + GK) 1 H is 1.2 which is 1/ν. The closed loop poles are ( 33.2, 1, 1,.42). MATLAB Code fin3c.m: solution of problem 3(c) (Multivariable Final 22) A=1 1; 1;B=;1;C=1 ;D=; sys=ss(-a,b,c,d); Wc=gram(sys, c ); Wo=gram(sys, o ); numax=sqrt(min(abs(eig(wc*wo)))); nu=.95*numax; disp(sprintf( numax = 5.3g,numax)); disp(sprintf( Choose nu = 5.3g,nu)); disp(sprintf( Theoretical achivable H-infinity norm = 1/nu = 5.3g,1/nu)); B2=B/nu; 2
Xinf=inv(Wc)*nuˆ2; Yinf=inv(Wo); Linf=inv(eye(2,2)-Yinf*Xinf)*Yinf*C ; AK=A-B2*B2 *Xinf-Linf*C; BK=Linf; CK=B2 *Xinf; DK=; K=ss(AK,BK,CK,DK)/nu; G=ss(A,B,C,D); Gcl=feedback(-K,G,1); a,b,c,d=ssdata(gcl); sysgcl=pck(a,b,c,d); out=hinfnorm(sysgcl); disp(sprintf( closed loop H-infinity norm in 5.3g,5.3g,... out(1),out(2))); disp(sprintf( tolerable additive uncertainty bound: 4.3g,4.3g,... 1/out(1),1/out(2))); figure(1);bode(gcl) disp( closed loop poles: ); disp(pole(gcl)); 3
(a) Let k(s) be stabilizing and k = y/x a stable coprime factorization such that xm yn =1. If k(s) is stable, then x(s) cannot have zeros in the open right half plane. Since x(s) varies continuously in s, x(z 1 ) and x(z 2 ) must have the same sign for any real and non-negative z 1 and z 2 (this is necessary but not sufficient). Let z 1 and z 2 be two consecutive open RHP zeros of g(s) (i.e., n(z 1 )=n(z 2 )=). Then from Bezout Identity, we have x(z 1 )m(z 1 )=x(z 2 )m(z 2 ). Since x(z 1 ) and x(z 2 ) have the same signs, m(z 1 ) and m(z 2 ) must also have the same signs. Each real pole of g(s) (i.e., zeros of m(s)) between z 1 and z 2 will cause a sign change in m(s) as s varies from z 1 to z 2. Therefore, there must be an even number of poles between z 1 and z 2 in order for m(z 1 ) and m(z 2 ) to have the same signs. (b) Consider g(s) =s/(s 2 1). Between the zeros at and +, there is one real pole, therefore, g does not satisfy PIP. Let n = s/(s +2) 2, m =(s 2 1)/(s +2) 2. Use the nominal controller k(s) = (s +4)/(s.5), then we can choose y = (s +4)/(s +2)and x =(s.5)/(s +2). Now calculate We can set δ(s) =m(s)x(s) n(s)y(s) = 1 2s 3 + s 2 +6s +1. 2 (s +2) 3 2(s +4)(s +2)2 y 1 = y/δ = 2s 3 + s 2 +6s +1 (2s 1)(s +2)2 x 1 = x/δ = 2s 3 + s 2 +6s +1 then (y 1,x 1 ) would satisfy the Bezout Identity. The complete parameterization of stabilizing controllers is given by k = y 1 mq x 1 nq where q is any RH function. The stability of k is determined by the zeros of d k = x 1 nq. Evaluate d k at and, we get d k () = 4 and d k ( ) =1. Since they are of different signs, d k (s) must cross zero for some positive and real s. 1