matlab disolve,matlab程序解现代控制理论与工程中的状态方程

2023-05-16

41528d3028836879cd698677c3999917.gifmatlab程序解现代控制理论与工程中的状态方程

用矩阵指数法解状态方程的 MATLAB 函数 vslove1: 函数 vslove1:求解线性定常连续系统状态方程的解 function [Phit,PhitBu]=vsolves1(A,B,ut) %vsolves1 求线性连续系统状态方程 X’=AX+Bu 的解 %[Phit,phitBu]=vsolves1(A,B,ut) %A,B 系数矩阵 %ut 控制输入,必须为时域信号的符号表达式,符号变量为 t %Phit——输出 Phi(t) %PhitBu——输出 phi(t-tao)*B*u(tao) 在区间(0,t)的积分 syms t tao %定义符号变量 t,tao Phit=expm(A*t); % 求矩阵指数 exp(At) if (B==0)B=zeros(size(A,l),l); % 重构系数矩阵 B end phi=sub(Phit,’t’,’t-tao’); %求 exp[A(t-tao)] PhitBu=int(phi*B*ut,’tao’,’0’,’t’); % 求 exp[A(t-tao)]*B*u(tao)在 0~t 区间的积分 用拉氏变换法解状态方程的 MATLAB 函数 vslove2: 函数 vslove2:求解线性定常连续系统状态方程的解 function [sl_A,sl_ABu]=vsolves1(A,B,us) %vsolves2 求线性连续系统状态方程 X’=AX+Bu 的解 %[sl_A,sl_ABu]=vsolves1(A,B,ut) %A,B 系数矩阵 %us 控制输入,必须为拉氏变换后的符号表达式,符号变量为 s %sl_A——输出矩阵(sl-A)^(-1)拉式反变换的结果 %sl_ABu——输出(sl-A)^(-1)*B*u(s)拉式反变换后的结果 syms s % 定义符号变量 t,tao AA=s*eye(size(A))-A; %求 sI-A invAA=inv(AA); %求(sI-A)矩阵的逆 intAA tAA=ilaplace(intAA) ; %求 intAA 的拉氏反变换 sI_A=simplify; % 简化拉式反变换的结果 if (B==0)B=zeros(size(A,l),l); % 重构系数矩阵 B end tAB=ilaplace(intAA*B*us) ; % 求 intAA*B*us 的拉氏反变换 sI_ABu=simplify(tAB); % 化简拉式反变换的结果 求解时变系统状态方程的 MATLAB 函数 tslove:函数 tslove:求解线性时变连续系统状态方程的解 function [Phi,PhiBu]=tsolves(A,B,u,x,a,n) %tsolves 求时变系统状态方程 %[Phi,phiBu]=vsolves1(A,B,u,x,a,n) %A,B 时变系数矩阵 %Phi——状态转移矩阵计算结果 %PhiBu——受控解分量 %u——控制输入向量,时域形式 %x——符号变量,指明矩阵 A 中的时变参数,通常为时间 t %a—— 积分下限 %n——时变状态转移矩阵中计算重积分的最大项数,n=0 时无重积分项 % n=1 时包含二重积分项,. Phi=transmtx(A,x,a,n); % 计算状态转移矩阵 Phitao=subs(Phi,x,’tao’); % 求 Phi(tao) if (B==0)Btao=zeros(size(A,l),l); % 求 B(tao) end utao=subs(u,x,’tao’); %求 u(tao) PhiBu=simple(int(Phitao*Btao*utao,’tao’,a,x)); % 计算受控分量 求解时变系统转移矩阵的 MATLAB 函数 transmtx: 函数 transmtx:求解线性时变系统状态转移矩阵 function Phi=transmtx(A,x,a,n) %transmtx 计算时变系统状态转移矩阵 %Phi=transmtx(A,x,a,n) %Phi——状态转移矩阵计算结果 %A 时变系数矩阵 %x——符号变量,指明矩阵 A 中的时变参数,通常为时间 t %a—— 积分下限 %n——时变状态转移矩阵中计算重积分的最大项数,n=0 时无重积分项 % n=1 时包含二重积分项,. Phi=eye(size(A)); % 初始化 Phi=I for lop=0:nAA=A;for i=1:lopif (AA==0)break;endAtemp=subs(AA,x,’taoi’);AA=simplify(A*int(Atemp,’tao’,a,x)); endif (AA==0)break;endAtemp=subs(AA,x,’taoi’);AA=simplify(A*int(Atemp,’tao’,a,x)); % 计算重积分Phi=simplify(Phi+AA); % 修正 Phi end 求解线性定常离散系统状态方程的 MATLAB 函数 disolve: 函数 disolve:求解线性定常离散系统状态方程的解 function [Ak,AkBu]=disolve(A,B,uz) %disolve 求线性离散系统状态方程 x(k+1)=Ax(k)+Bu(k)的解 %[Ak,AkBu]=disolve(A,B,uz) %A,B 系数矩阵 %uz 控制输入,必须为 Z 变换后的符号表达式,符号变量为 z %Ak——输出矩阵[((zI-A)^(-1)z]Z 反变换后的结果 %AkBu——输出矩阵[((zI-A)^(-1)*B*u(z)]Z 反变换后的结果 syms z %定义符号变量 z AA=z*eye(size(A))-A; % 求 zI-A invAA=inv(AA); %求(zI-A )矩阵的逆 intAA tAA=iztrans(intAA*z) ; %求 intAA*z 的 Z 反变换 Ak=simple(tAA); %简化 Z 反变换的结果 if (B==0)B=zeros(size(A,l),l); %重构系数矩阵 B end tAB=iztrans(intAA*B*uz) ; %

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab disolve,matlab程序解现代控制理论与工程中的状态方程 的相关文章

随机推荐