EE611
Solution to Homework #27
1.a) Verify that the following system is deadbeat by finding xk in terms of x0 for k=1, 2, 3, and 4

b) ![]()
2.
» O = [C' A'*C' A'*A'*C' A'*A'*A'*C' A'*A'*A'*A'*C']
O =
1.0 1.0 1.0 -2.0 -2.0 0.25 4.0 4.0 0.06 -8.0 -8.0 0.015 16.0 16.0 0.004
1.0 2.0 0 -2.0 -1.75 0 4.0 4.06 0.00 -8.0 -7.98 0.0 16.0 16.04 0.00
0 1.0 1.0 0 0.25 0.25 0 0.06 0.06 0 0.015 0.015 0 0.004 0.004
1.0 1.0 0 -2.0 -2.0 0 4.0 4.0 0.00 -8.0 -8.0 0.0 16.0 16.0 0.00
1.0 1.0 1.0 -2.0 -2.0 0.25 4.0 4.0 0.06 -8.0 -8.0 0.015 16.0 16.0 0.004
» rank(O)
ans =
3
» Tocf = [O(:,1:3) [0;0;0;1;0] [0;0;0;0;1]]
Tocf =
|
1 |
1 |
1 |
0 |
0 |
|
1 |
2 |
0 |
0 |
0 |
|
0 |
1 |
1 |
0 |
0 |
|
1 |
1 |
0 |
1 |
0 |
|
1 |
1 |
1 |
0 |
1 |
» rank(Tocf)
ans =
5
» Aocf = inv(Tocf)*A'*Tocf
Aocf =
|
-2.0000 |
-2.2500 |
0 |
-0.4500 |
-0.4500 |
|
0 |
0.2500 |
0 |
0 |
0 |
|
0 |
0 |
0.2500 |
0 |
0 |
|
0 |
0.0000 |
0.0000 |
0.2500 |
0 |
|
0 |
0 |
0 |
0 |
0.2500 |
a) Observable eigenvalues:
» eig(Aocf(1:3,1:3))
ans =
-2.0000
0.2500
0.2500
» %These are the observable eigenvalues!!
b) Detectable?
» eig(Aocf(4:5,4:5))
ans =
0.2500
0.2500
» %All unobservable eigenvalues {0.25, 0.25} are stable!!
» %Therefore, system is detectable!!
c) For full-order observer, solve the dual controller problem to set eigenvalues of Ao-BoKo':
» Aocf = inv(Tocf)*A'*Tocf
Aocf =
|
-2.0000 |
-2.2500 |
0 |
-0.4500 |
-0.4500 |
|
0 |
0.2500 |
0 |
0 |
0 |
|
0 |
0 |
0.2500 |
0 |
0 |
|
0 |
0.0000 |
0.0000 |
0.2500 |
0 |
|
0 |
0 |
0 |
0 |
0.2500 |
» Bocf = inv(Tocf)*C'
Bocf =
|
1 |
0 |
0 |
||
|
0 |
1 |
0 |
||
|
0 |
0 |
1 |
||
|
0 |
0 |
0 |
||
|
0 |
0 |
0 |
» Ac = Aocf(1:3,1:3)
Ac =
|
-2.0000 |
-2.2500 |
0 |
||
|
0 |
0.2500 |
0 |
||
|
0 |
0 |
0.2500 |
» Bc = Bocf(1:3,:)
Bc =
|
1 |
0 |
0 |
||
|
0 |
1 |
0 |
||
|
0 |
0 |
1 |
» %set eigenvalues of Ac-BcKc to {0,0,0}:
» Kc = [-2 0 0;0 .25 0;0 0 .25]
Kc =
|
-2.0000 |
0 |
0 |
||
|
0 |
0.2500 |
0 |
||
|
0 |
0 |
0.2500 |
» eig(Ac-Bc*Kc)
ans =
0
0
0
» K = [Kc [0 0;0 0;0 0]]*inv(Tocf)
K =
|
-2.0000 |
0 |
2.0000 |
0 |
0 |
|
-0.1250 |
0.1250 |
0.1250 |
0 |
0 |
|
0.1250 |
-0.1250 |
0.1250 |
0 |
0 |
» Ko = K'
Ko =
|
-2.0000 |
-0.1250 |
0.1250 |
||
|
0 |
0.1250 |
-0.1250 |
||
|
2.0000 |
0.1250 |
0.1250 |
||
|
0 |
0 |
0 |
||
|
0 |
0 |
0 |
» eig(A-Ko*C)
ans =
0
0.0000
0.0000
0.2500
0.2500
d) Full-Order Observer/Controller Block Diagram

e) Design the Reduced-Order Observer:
» R = [0 0 0 1 0;0 0 0 0 1];
» Tro = inv([C;R])
Tro =
|
1.0000 |
-0.5000 |
0.5000 |
-0.5000 |
-1.0000 |
|
0 |
0.5000 |
-0.5000 |
-0.5000 |
0 |
|
-1.0000 |
0.5000 |
0.5000 |
0.5000 |
0 |
|
0 |
0 |
0 |
1.0000 |
0 |
|
0 |
0 |
0 |
0 |
1.0000 |
» inv(Tro)*A*Tro
ans =
|
-2.0000 |
0 |
0 |
0 |
0 |
|
-2.2500 |
0.2500 |
0 |
0 |
0 |
|
0.0000 |
0.0000 |
0.2500 |
0.0000 |
0.0000 |
|
-0.4500 |
0 |
0 |
0.2500 |
0 |
|
-0.4500 |
0 |
0 |
0 |
0.2500 |
» A11=ans(1:3,1:3)
A11 =
|
-2.0000 |
0 |
0 |
||
|
-2.2500 |
0.2500 |
0 |
||
|
0.0000 |
0.0000 |
0.2500 |
» A12=ans(1:3,4:5)
A12 = 1.0e-016 *
|
0 |
0 |
|||
|
0 |
0 |
|||
|
0.2776 |
0.5551 |
» A21=ans(4:5,1:3)
A21 =
|
-0.4500 |
0 |
0 |
||
|
-0.4500 |
0 |
0 |
» A22=ans(4:5,4:5)
A22 =
|
0.2500 |
0 |
|
0 |
0.2500 |
» inv(Tro)*B
ans =
|
1.0000 |
0.0000 |
|
2.0000 |
1.0000 |
0 0
0 -0.2000
0 -0.2000
» B1=ans(1:3,:)
B1 =
|
1.0000 |
0.0000 |
|
2.0000 |
1.0000 |
|
0 |
0 |
» B2=ans(4:5,:)
B2 =
|
0 |
-0.2000 |
|
0 |
-0.2000 |
» %set observable eigenvalues of A22-KroA12 to zero!!
» %let Ao = A22', Bo = A12', and solve the regulator problem!!
» Ao = A22'
Ao =
|
0.2500 |
0 |
|
0 |
0.2500 |
» Bo = A12'
Bo = 1.0e-016 *
|
0 |
0 |
0.2776 |
|
0 |
0 |
0.5551 |
» M=[1e16*Bo Ao*(1e16)*Bo]
M =
|
0 |
0 |
0.2776 |
0 |
0 |
0.0694 |
|
0 |
0 |
0.5551 |
0 |
0 |
0.1388 |
» rank(M)
ans =
1
» M=[Bo Ao*Bo]
M =
1.0e-016 *
0 0 only one eigenvalue is observable!!
» %Take 1 column of M, and pick another column
» %pick a number on the order of 1e-16, since
» %matlab will have a problem with round-off!!
» Tccf = [M(:,3) [1e-16;0]]
Tccf =
1.0e-016 *
|
0.2776 |
1.0000 |
||||
|
0.5551 |
0 |
» rank(Tccf)
ans =
2
» Accf = inv(Tccf)*Ao*Tccf
Accf =
|
0.2500 |
0 |
|
0 |
0.2500 |
» Bccf = inv(Tccf)*Bo
Bccf =
|
0 |
0 |
1 |
|
0 |
0 |
0 |
» Ac = Accf(1,1)
Ac =
0.2500
» Bc = Bccf(1,:)
Bc =
|
0 |
0 |
1 |
» Kc = [0;0;.25]
Kc =
0
0
0.2500
» eig(Ac-Bc*Kc)
ans =
0
» K = [Kc [0;0;0]]*inv(Tccf)
K =
1.0e+015 *
|
0 |
0 |
|
|
0 |
0 |
|
|
0 |
4.5036 |
» Kro = K'
Kro =
1.0e+015 *
|
0 |
0 |
0 |
|
0 |
0 |
4.5036 |
» %check:
» eig(A22-Kro*A12)
ans =
0
0.2500
» Aro = A22-Kro*A12
Aro =
|
0.2500 |
0 |
|
|
-0.1250 |
0 |
» Bro = B2-Kro*B1
Bro =
|
0 |
-0.2000 |
|
|
0 |
-0.2000 |
» Cro = Aro*Kro-Kro*A11+A21
Cro =
1.0e+015 *
|
0.0000 |
0 |
0 |
|
0.0000 |
0.0000 |
-1.1259 |
» Q1 = Tro(:,1:3)
Q1 =
|
1.0000 |
-0.5000 |
0.5000 |
|
0 |
0.5000 |
-0.5000 |
|
-1.0000 |
0.5000 |
0.5000 |
|
0 |
0 |
0 |
|
0 |
0 |
0 |
» Q2 = Tro(:,4:5)
Q2 =
|
-0.5000 |
-1.0000 |
|
|
-0.5000 |
0 |
|
|
0.5000 |
0 |
|
|
1.0000 |
0 |
|
|
0 |
1.0000 |
Block Diagram:
