MATLAB:三阶矩阵约当阵,能控,能观标准型转化

 主函数:

clear;
%三阶矩阵
A=[0,1,-1;-6,-11,6;-6,-11,5];
B=[0;0;1];
C=[1,0,0];
n=size(A,1);
Q1=zeros(n);
Q2=zeros(n);

J=jordan(A)%约当阵输出


%判断是否能控
for i=0:n-1
    Q1(:,i+1)=A^i*B;
end
    n1=rank(Q1);
  %判断是否能观测
    for j=0:n-1 
        Q2(j+1,:)=C*A^j;
    end
    n2=rank(Q2);
  
    %%转化成能控、能观标准型
    if n1==n
        [A1,B1,C1,T]=nengkong(A,B,C,n)
    end
    if n2==n
       [A2,B2,C2,K]=nengguan(A,B,C,n)
    end





能控标准型转换:

function [D,E,F,T] = nengkong(A,B,C,n)
%能控标准型转换
T=zeros(n,n);
T(:,1)=B;
%求其特征多项式
a=poly(A);

for i=2:n
    T(:,i)=A*T(:,i-1)+a(1,i)*T(:,1);
end
T=fliplr(T);
%得到新的A矩阵
D=inv(T)*A*T;
%得到新的B矩阵
E=inv(T)*B;
%得到新的C矩阵
F=C*T;
end


能观标准型转换:

function [D,E,F,T] = nengkong(A,B,C,n)
%能控标准型转换
T=zeros(n,n);
T(:,1)=B;
%求其特征多项式
a=poly(A);

for i=2:n
    T(:,i)=A*T(:,i-1)+a(1,i)*T(:,1);
end
T=fliplr(T);
%得到新的A矩阵
D=inv(T)*A*T;
%得到新的B矩阵
E=inv(T)*B;
%得到新的C矩阵
F=C*T;
end


 

  • 9
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值