3.5 离散系统的差分方程表示及求解
3.5.1 离散系统与差分方程
线性常系数差分方程提供了一种描述离散LTI系统的输入输出关系的方法,其一般形式为
其中ak, bk是与时间无关的常数,x(n), y(n)是系统在时刻n的输入和输出。差分方程的阶数分别是N, M,代表系统中储存器件的数目,通常有N≥M,并只用N来表示阶数。
可以很容易地将差分方程写成递归的形式:
这样就可以根据系统现在和过去的输入与过去的输出来计算现在的输出。
考虑如下一个二阶差分方程:
为了求得能在时刻0开始这个递归的计算过程,必须知道输出中两个最靠近0时刻的过去输出值,即y(n-1), y(n-2),这些值称为初始条件或初始值。
3.5.2 差分方程的求解
对于差分方程(3.5)来说,它的求解可由两部分相加而成。第一部分就是齐次差分方程
的解y1(n)。另一部分是满足
的一个离散函数y2(n),即一个特解。于是差分方程(3.5)的解y(n)即为y1(n)+y2(n)。
(1)首先考虑齐次解y1(n),对于离散时间系统,齐次方程
的解为
其中ri是离散时间系统特征方程
的N个根,Ci(i =1, 2, …, N)为任意一组常数。
当特征方程的特征根有重根时,齐次解的形式稍有变化。如果rj是p重根,那么在(3.6)中,rj的p重根对应的项应分别写成rjn, nrjn, …, np-1rjn。
(2)对于特解y2(n),其为满足差分方程(3.5)的任意一个解,一般通过待定系数法,即假定输出为与输入相同的一般函数形式来求得。例如:若离散时间系统的输入为x(n)= an,则假定其特解具有y2(n)= can的形式,然后代入方程(3.5)确定出系统差分方程的系数c。假定输入与输出相同的函数形式符合我们对系统的输出直接与输入相联系的设想。当然,在实际计算中,通过观察、尝试一般也可以求得一个y2(n)。
(3)通过上面两步的计算,我们就得到差分方程(3.5)的解为
y(n)= y1(n)+y2(n).
然后再利用初始条件,求得函数y1(n)中的系数Ci(i = 1, 2, …, N),进而求出解y(n)。
3.5.3 MATLAB中差分方程的模拟
在MATLAB中,命令函数filter可以用来对差分方程进行模拟。定义向量:
a =[a0, a1, …, aN] ;
b =[b0, b1, …, bM] ;
它们代表式(3.5)中的差分方程的系数,则命令
y = filter(b, a, x)
将产生一个代表系统强迫响应的向量y,y的维数取决于输入x的维数。若初始条件不为0,则使用命令
y = filter(b, a, x, zs)
其中zs代表filter需要的初始条件。但zs并不是真正的过去输出值,而是从过去的输出值出发,利用
y = filtic(b, a, ys)
得到的,其中ys是由[y[-1] , y[-2] , …, y[-N] ]顺序排列的初始条件的向量。
例3.15 设一个系统满足
求系统在初始条件y(-1)=1,y(-2)=2下的自然响应。
在MATLAB中输入下述命令:
得到输出y(n)的图像如图3-17所示。
例3.16 下面这个程序可以用来计算一个因果有限维离散系统的自然相应。要求输入以下参数:自然响应的长度、系数向量a和b。这个程序将画出所得到的自然响应序列。我们利用下面的一个因果LTI系统来描述它的应用。这里取要求自然响应的长度为41。
图3-17 例3.15自然响应结果图
得到自然响应的图像如图3-18所示。
另外,MATLAB中的另一个命令impz可计算由差分方程描述的系统的冲激响应。其使用方法为
[h, t]= impz(b, a, n)其中b和a为差分方程的系数,n为一个正整数,输出的结果中h为冲激响应的值,t为响应的时间序号,该函数用于计算系统的冲激响应的n个值。
图3-18 例3.16自然响应结果图
习题
3.1 给定序列
(1)利用MATLAB,画出序列x(n)的图像。
(2)令x1(n)=2x(n-1),利用MATLAB画出x1(n)的图像。
(3)令x2(n)=2x(1-n),利用MATLAB画出x2(n)的图像。
3.2 判断下列各系统是否为线性时不变系统:
(1)T(x(n))= g(n)x(n);
(2)T(x(n))=
(3)T(x(n))=
(4)T(x(n))= ex(n);
(5)T(x(n))= x(n-n0).
3.3 计算下列序列对的卷积和:
(1)x1(n)=(0.25)nu(n),x2(n)=(0.5)nu(n);
(2)x1(n)=(0.5)nu(n),x2(n)= u(n)-u(n-10);
(3)x1(n)= u(-n-1),x2(n)=(0.5)nu(n).
3.4 设因果系统的差分方程为
利用递推法求系统的单位抽样响应。
3.5 (1)一个线性微分方程的解如下:
x(t)=10e-t-5e-0.5t,
使用MATLAB,对于t =0:0.01:5,画出x(t)。
(2)对于x(t)=10e-t+5e-0.5t,重复(1)的工作。
3.6 一个指数衰减正弦信号定义如下:
其中指数a是可变的,取系列值a =500, 750, 1000。使用MATLAB,在-2≤t ≤2的范围内,观察a的变化对信号x(t)的影响。
3.7 写一组MATLAB命令画出下列连续时间信号的波形:
(1)幅度为5 V,基本周期为20 Hz,占空比为0.6的方波;
(2)幅度为5 V,基频为20 Hz的锯齿波。
画出每个波形的5个周期。
3.8 一个升余弦序列由下式定义:
对于F =0.1,使用MATLAB画出W(n)。
3.9 一个矩形脉冲由下式定义:
分别使用一对时移的阶跃信号和一个M文件产生x(t)。
3.10 系统冲激响应为
h(n)=0.9n(u(n-2)-u(n-1)),
输入为
x(n)=2(u(n+2)-u(n-12)),
求其输出,利用MATLAB求解这个问题。
3.11 某离散时间LTI系统的冲激响应h(n)满足:
利用线性和非时变性求系统的输出y(n),设输入如下:
(1)x(n)=3δ(n)-2δ(n-1);
(2)x(n)= u(n+1)-u(n-3);
(3)x(n)=
3.12 计算下列离散时间信号的卷积和:
(1)y(n)= u(n+3)* u(n-3);
(2)y(n)=3nu(-n+3)* u(n-2);
(3)y(n)=u(n)* u(n+2);
(4)y(n)= u(n)* u(n-1);
(5)y(n)=(-1)n* 2nu(2-n);
(6)y(n)=u(n-2);
(7)y(n)= βnu(n)* u(n-3),<1;
(8)y(n)= βnu(n)* αnu(n-10),<1,<1;
(9)y(n)=(u(n+10)-2u(n)+u(n-4))* u(n-2);
(10)y(n)=(u(n+10)-2u(n)+u(n-4))* βnu(n-2),<1;
(11)y(n)=(u(n+10)-2u(n+5)+u(n-6))* ;
(12)y(n)= u(n)*(n-4p);
(13)y(n)= βnu(n)*(n-4p),<1.
3.13 利用卷积和的定义推导下列特性:
(1)分配率:x(n)*(h(n)+g(n))= x(n)* h(n)+x(n)* g(n);
(2)结合律:x(n)*(h(n)* g(n))=(x(n)* h(n))* g(n);
(3)交换律:x(n)* h(n)= h(n)* x(n).
3.14 求下列差分方程的齐次解:
(1)y(n)-αy(n-1)=2x(n);
(2)y(n)-y(n-1)-y(n-2)= x(n)+x(n-1);
(3)y(n)+y(n-2)= x(n-1);
(4)y(n)+y(n-1)+y(n-2)= x(n)+2x(n-1).
3.15 对于给定的输入,求下列微分方程的一个特解:
(1)y(n)-y(n-1)=2x(n),
(a)x(n)=2u(n),(b)x(n)=-u(n),(c)x(n)= ;
(2)y(n)-y(n-1)-y(n-2)= x(n)+x(n-1),
(a)x(n)= nu(n),(b)x(n)=u(n),(c)x(n)=u(n);
(3)y(n)+y(n-1)+y(n-2)= x(n)+2x(n-1),
(a)x(n)= u(n),(b)x(n)=u(n).
3.16 求系统的完全响应,已知其差分方程、输入及初始条件:
(1)y(n)-y(n-1)=2x(n),y(-1)=3,x(n)=u(n);
(2)y(n)-y(n-2)=x(n-1), y(-1)=1, y(-2)=0, x(n)=u(n);
(3)y(n)+y(n-1)-y(n-2)= x(n)+x(n-1),y(-1)= 4, y(-2)=-2,x(n)=(-1)nu(n);
(4)y(n)-y(n-1)+y(n-2)= 2x(n),y(-1)= 1,y(-2)=-1,x(n)=2u(n).
3.17 利用MATLAB命令conv计算下列卷积和:
(1)m(n)= x(n)* z(n);
(2)m(n)= x(n)* y(n);
(3)m(n)= x(n)* f(n);
(4)m(n)= x(n)* g(n);
(5)m(n)= y(n)* z(n);
(6)m(n)= y(n)* g(n);
(7)m(n)= y(n)* w(n);
(8)m(n)= y(n)* f(n);
(9)m(n)= z(n)* g(n);
(10)m(n)= w(n)* g(n);
(11)m(n)= f(n)* g(n),
其中
3.18 利用filter函数计算由差分方程描述的系统的阶跃响应的前50个值以及该系统对输入x(n)= cos的强迫响应的前100个值。
3.19 令ρ =1+,其中r%为每期利率。设y(n)代表第n期开始时
的总余额,如果没有存入和支取,则第n期的总余额可以用前一期的总余额表示为
y(n)= ρy(n-1).
现在假定x(n)代表第n期开始时存入(x(n)>0)或支取(x(n)<0)的总余额。在这种情况下,账户的总余额可以用一阶递归方程表示为
y(n)= ρy(n-1)+x(n).
假定年利率为8%,如果连续10年在每年年初存入1000美元,然后在第n期开始的接下去的连续7年中,在每年年初支取1500美元,利用卷积和来计算账户的总余额。
3.20 两个系统的冲激响应分别为利用MATLAB命令conv画出阶跃响应的前20个值。
3.21 利用MATLAB命令filter和filtic求解习题3.17描述的系统的前50个输出值。
3.22 利用MATLAB求解下列应用问题:
(1)利用一阶差分方程计算一笔贷款月利率为1%,贷款总额为100000美元的贷款的还款余额。假定每月还款额为1200美元,求其自然响应和强迫响应。在这种情况下,自然响应代表没有定期还贷时的还贷余额,需要多少个月才能还清贷款?
(2)如果分别在30年(360期)和15年(180期)内还清题(1)中的贷款,每月的还款额是多少?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。