MATLAB约当标准型,用MATLAB求其约当标准型状态空间表达式

系统的传递函数为

296c510c0a35e9454d70057b1bac89da.png

试用MATLAB求其约当标准型状态空间表达式。

>> num=[2,1];

>> den=[1 7 14 8];

>> [A,B,C,D]=tf2ss(num,den);

>> L=eig(A);

>> K1=L(1)*eye(3)-A;

>> syms p11 p12 p13

>> f=K1*[p11;p12;p13];

>> p11=1;

>> p12=solve(subs(f(2)));

>> p13=solve(subs(f(3)));

>> p1=[p11;p12;p13];

>> K2=L(2)*eye(3)-A;

>> syms p21 p22 p23

>> f=K2*[p21;p22;p23];

>> p21=1;

>> p22=solve(subs(f(2)));

>> p23=solve(subs(f(3)));

>> p2=[p21;p22;p23];

>> K3=L(3)*eye(3)-A;

>> syms p31 p32 p33

>> f=K3*[p31;p32;p33];

>> p31=1;

>> p32=solve(subs(f(2)));

>> p33=solve(subs(f(3)));

>> p3=[p31;p32;p33];

>> T=[p1,p2,p3];

>> A0=inv(T)*A*T

A0 =

[ -4, 0, 0]

[ 0, -2, 0]

[ 0, 0, -1]

>> B0=inv(T)*B

B0 =

8/3

-2

1/3

>> C0=C*T

C0 =

[ -7/16, -3/4, -1]

为什么我的c0不是[1,1,1]呢?可是验算K1*p1..K2*p2..K3*p3都是0啊..所以应该是没算错的..这题没有重根..难道这是不能化为约当标准型的原因吗??