实验六 离散系统状态方程的求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六 离散系统状态方程的求解
一、实验目的
(1)了解离散系统状态方程求解方法。
(2)了解离散系统信号流图化简的方法。
(3)了解函数ode45的调用方法。
二、实验原理
离散系统状态方程的一般形式为 x(k+1)=Ax(k)+Bf(k)
在些只对单输入的n 阶离散系统的状态议程求解。一般采用递推迭代的方式求解,由裙的条件x(0)和激励f(0)求出k=1时的x(1),然后依次迭代求得所要求的x(0),……,x(n)的值。
编程时应注意,MATLAB 中变量下标不允许为零,则裙点的下标只能取1,第n 步的x 的下标为n+1。
三、涉及的MATLAB 函数
zeros(2,1)
y=lsim(sys,f,[],x0)
for i=1:n end
clear all
采用函数ode45可以求解微分方程。其调用格式如下
[t,y]=ode45(odefun,tspan,y0)
其中,odefun 指状态方程的表达式,tspan 指状态方程对应的起止时间]t0,tf],y0指状态变量的初始状态。
四、实验内容与方法
1.验证性实验
采用MATLAB 语言编程,求解离散系统状态方程,并绘制状态变量的波形。
(1)已知离散系统的状态方程为 )(01)1()1(25.025.005.0)1()1(2121k f k x k x k x k x ⎥⎦
⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡++⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡++ 初始条件为x(0)=⎥⎦
⎤⎢⎣⎡-5.01,激励为f(k)=0.5ε(k),确定该状态方程x(k)前10步的解,并画出波形。
MATLAB 程序:
%离散系统状态求解
%A=input(‘系统矩阵 A=’)
%B=input(‘系数矩阵 B=’)
%x0=input(‘初始状态矩阵 x0=’)
%n=input(‘要求计算的步长n=’)
%f=input(‘输入信号f=’) %需求长度为n的数组
clear all
A=[0.5 0;0.25 0.25];
B=[1;0];
x0=[-1;0.5];
n=10;
f=[0 0.5*ones(1,n-1)];
x(:,1)=x0;
for i=1:n
x(:,i+1)=A*x(:,i)+B*f(i);
end
subplot(2,1,1);stem([0:n],x(1,:));
subplot(2,1,2);stem([0:n],x(2,:));
离散系统状态方程的求解结果如图6.1所示
图6-1 离散系统状态方程的求解(2)离散系统状态求解
MATLAB程序:
A=[0 1;-2 3];B=[0;1];
C=[1 1;2 -1];D=zeros(2,1);
x0=[1;-1];%初始条件
N=10;f=ones(1,N);
sys=ss(A,B,C,D,[]);
y=lsim(sys,f,[],x0);k=0:N-1;
subplot(2,1,1);
stem(k,y(:,1),'b');
subplot(2,1,2);stem(k,y(:,2),'b');
离散系统状态议程的求解结果如图6.2所示。
图6-2 离散系统状态方程的求解
2.程序设计实验
(1)离散系统状态方程为: x(k+1)=Ax(k)+Bf(k)
其中A=⎥⎦⎤⎢⎣⎡25.025.005.0,B=⎥⎦
⎤⎢⎣⎡01,初始状态⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡00)0()0(21x x ,激励f(k)=δ(k),确定该状态方程x(k)前10步的解,并画出波形。
MATLAB 程序:
%离散系统状态求解
%A=input(‘系统矩阵 A=’)
%B=input(‘系数矩阵 B=’)
%x0=input(‘初始状态矩阵 x0=’)
%n=input(‘要求计算的步长 n=’)
%f=input(‘输入信号 f=’) %需求长度为n 的数组
clear all
A=[0.5 0;0.25 0.25];
B=[1;0];
x0=[0;0];
n=10;
f=[1 zeros(1,n-1)];
x(:,1)=x0;
for i=1:n
x(:,i+1)=A*x(:,i)+B*f(i);
end
subplot(2,1,1);stem([0:n],x(1,:));
subplot(2,1,2);stem([0:n],x(2,:));
求解结果如图6.3所示:
图6-3 离散系统状态议程的求解
(2)描述离散时间系统的信号流图如图所示,确定该系统的系统函数(离散系统信号流图的形式与连续系统相同,只不过是变量s换为z,在此不再详述。)。
MATLAB程序:
syms z;
Q=[0 0 0 0 0 0;2 0 -3 0 -2 0;0 1/z 0 0 0 0;3 0 1 0 0 0;0 0 0 1/z 0 0;1 0 0 0 2 0];
B=[1;0;0;0;0;0];
I=eye(size(Q));
H=(I-Q)\B;
H6=H(6);
pretty(H6);
执行后得到结果:
2
24 + 9 z + z
-------------
2
z + 3 z + 2