EE611


Solution to HW#18


1a)

» a=[-2 0 3 3 0; 0 -.5 0 -1.5 0;0 1.5 1 1.5 0;0 -1.5 0 -.5 0;0 0 -3 -3 -2]

a =
-2.00000 3.00003.0000 0
0-0.5000 0-1.5000 0
01.5000 1.00001.5000 0
0-1.5000 0-0.5000 0
00 -3.0000-3.0000 -2.0000

» A=[-2 0 3 3 0; 0 -.5 0 -1.5 0;0 1.5 1 1.5 0;0 -1.5 0 -.5 0;0 0 -3 -3 -2]

A =
-2.00000 3.00003.0000 0
0-0.5000 0-1.5000 0
01.5000 1.00001.5000 0
0-1.5000 0-0.5000 0
00 -3.0000-3.0000 -2.0000

» B=[0 1;-.5 -.5;-.5 .5;.5 .5;0 -1]

B =
01.0000
-0.5000-0.5000
-0.50000.5000
0.50000.5000
0-1.0000

» C=[4 8 0 0 0;0 0 -4 -4 0]

C =
48 00 0
00 -4-4 0

» M=[B A*B A*A*B A*A*A*B A*A*A*A*B]

M =
01.0000 01.0000 01.0000 01.0000 01.0000
-0.5000-0.5000 -0.5000-0.5000 -0.5000-0.5000 -0.5000-0.5000 -0.5000-0.5000
-0.50000.5000 -0.50000.5000 -0.50000.5000 -0.50000.5000 -0.50000.5000
0.50000.5000 0.50000.5000 0.50000.5000 0.50000.5000 0.50000.5000
0-1.0000 0-1.0000 0-1.0000 0-1.0000 0-1.0000

» rank(M)

ans =

2

» Tccf = [M(:,1:2) [1;0;0;0;0] [0;1;0;0;0] [0;0;1;0;0]]

Tccf =
01.0000 1.00000 0
-0.5000-0.5000 01.0000 0
-0.50000.5000 00 1.0000
0.50000.5000 00 0
0-1.0000 00 0

» rank(Tccf)

ans =

5

» Accf = inv(Tccf)*A*Tccf

Accf =
10 0-3 -3
01 00 3
00 -20 0
00 0-2 0
00 00 -2

» Ac = [1 0;0 1]

Ac =
10
01

» Ac_bar = [-2 0 0;0 -2 0;0 0 -2]

Ac_bar =
-20 0
0-2 0
00 -2

» eig(Ac_bar)

ans =

-2

-2

-2

» %ALL uncontrollable eigenvalues are stable!!

» %Therefore, system is stabilizable!!


b)

» Bccf = inv(Tccf)*B

Bccf =
10
01
00
00
00

» Bc = [1 0;0 1]

Bc =
10
01

» %want eigenvalues : {-5, -5}

» %This is a trivial problem since Ac and Bc are identity matrices!!

» Kc = [6 0; 0 6]

Kc =
60
06

» %check:

» eig(Ac-Bc*Kc)

ans =
-5
-5

» K = [Kc [0 0 0; 0 0 0]] * inv(Tccf)

K =
00 012 6
00 00 -6

» %check eigenvalues of entire system:

» eig(A-B*K)

ans =

-2.0000

-5.0000

-2.0000

-5.0000

-2.0000


c)

» yref = [10;-4]

yref =

10

-4

» inv([C [0 0;0 0];A B])*[eye(2);zeros(5,2)]

ans =
0-0.2500
0.12500.1250
0.1250-0.1250
-0.1250-0.1250
00.2500
0.25000
00.2500

» Nx = ans(1:5,:)

Nx =
0-0.2500
0.12500.1250
0.1250-0.1250
-0.1250-0.1250
00.2500

» Nu = ans(6:7,:)

Nu =
0.25000
00.2500


d)

» %settling time:

» ts = -4/(-2)

ts =

2


e)

» Ao = A'

Ao =
-2.00000 00 0
0-0.5000 1.5000-1.5000 0
3.00000 1.00000 -3.0000
3.0000-1.5000 1.5000-0.5000 -3.0000
00 00 -2.0000

» Bo = C'

Bo =
40
80
0-4
0-4
00

» O = [Bo Ao*Bo Ao*Ao*Bo Ao*Ao*Ao*Bo Ao*Ao*Ao*Ao*Bo]

O =
40 -80 160 -320 640
80 -40 200 -280 680
0-4 12-4 -12-4 36-4 -60-4
0-4 0-4 0-4 0-4 0-4
00 00 00 00 00

» rank(O)

ans =

3

» Tccf = [O(:,1:3) [1;0;0;0;0] [0;0;0;0;1]]

Tccf =
40 -81 0
80 -40 0
0-4 120 0
0-4 00 0
00 00 1

» rank(Tccf)

ans =

5

» Accf = inv(Tccf)*Ao*Tccf

Accf =
0.00000 2.00000 0
01.0000 0-0.7500 0.7500
1.00000 -1.00000 0
00 0-2.0000 0
00 00 -2.0000

» Ac = [0 0 2; 0 1 0;1 0 -1]

Ac =
00 2
01 0
10 -1

» Ac_bar = [-2 0;0 -2]

Ac_bar =
-20
0-2

» %All unobservable eigenvalues are in LHP

» %Therefore, system is detectable!!

» Bccf = inv(Tccf)*Bo

Bccf =
10
01
00
00
00

» Bc = [1 0;0 1;0 0]

Bc =
10
01
00

» eig(Ac)

ans =

1

-2

1

» %Ac is not cyclic!! Pick Kf:

» Kf = [1 1 1;1 1 1];

» eig(Ac-Bc*Kf)

ans =

-2.0000

1.0000

-1.0000

» Anew = Ac-Bc*Kf;

» %pick Ks:

» ks = [0;1];

» bs = Bc*ks

bs =

0

1

0

» Ms = [bs Anew*bs Anew*Anew*bs];

» rank(Ms)

ans =

3

» poly(Anew)

ans =
1.00002.0000 -1.0000-2.0000

» Apv = [0 1 0;0 0 1;2 1 -2]

Apv =
01 0
00 1
21 -2

» bpv = [0;0;1]

bpv =

0

0

1

» poly([-10 -10 -10])

ans =
130 3001000

» Kpv = [1000+Apv(3,1) , 300+Apv(3,2) , 30+Apv(3,3)]

Kpv =

1002

30128

» eig(Apv-bpv*Kpv)

ans =

-9.9999

-10.0000 + 0.0001i

-10.0000 - 0.0001i

» Tpv_inverse = [bpv Apv*bpv Apv*Apv*bpv]*inv(Ms)

Tpv_inverse =
00 -1
-10 1
21 -2

» Kc = Kf + ks * Kpv * Tpv_inverse

Kc =
11 1

-244 29 -756

» eig(Ac-Bc*Kc)

ans =

-10.0000 + 0.0001i

-10.0000 - 0.0001i

-9.9999

» K = [Kc [0 0; 0 0]] * inv(Tccf)

K =
00.1250 0.1250-0.3750 0
0-30.5000 -73.166765.9167 0

» Ko = K'

Ko =
00
0.1250-30.5000
0.1250-73.1667
-0.375065.9167
00

» %check:

» eig(Ao - Bo*Ko')

ans =

-10.0001 + 0.0002i

-10.0001 - 0.0002i

-9.9998

-2.0000

-2.0000