常系数线性差分方程解法

常系数线性差分方程的一般形式为
∑ k = 0 N a k y ( n − k ) = ∑ r = 0 M b r x ( n − r ) … … ( 1 ) \sum\limits_{k=0}^Na_ky(n-k)=\sum\limits_{r=0}^Mb_rx(n-r) ……(1) k=0Naky(nk)=r=0Mbrx(nr)1

1. 解方程法

1.1 概念

离散系统的完全响应,可分解为自由响应强迫响应之和,或分解为零输入响应零状态响应之和。
零输入响应y_{zi}:当x(n)=0(即方程右端为零)时,系统的输出函数,对应方程(1)的齐次解。
零状态响应y_{zs}:当接入激励前(n<0),系统的输出状态均为0时,系统的输出函数,对应y(-1),y(-2),……,y(-N)均为0时(系统满足零状态条件),方程(1)的通解。
自由响应:自由响应对应于方程(1)的齐次解,意为没有外部输入时系统的输出。
强迫响应:对应于方程(1)的特解,对应于加上外部输入后系统的输出。
当系统满足零状态条件时,零状态响应为自由响应和强迫响应的叠加即方程(1)的通解。
一般情况下,零输入响应是自由响应的一部分,零状态响应包括自由响应的另一部分和强迫响应
(那为啥自由响应不等于零输入响应???)

1.2 求解步骤

求解分三步进行
①求齐次方程的通解
方程(1)对应的齐次方程为
∑ k = 0 N a k y ( n − k ) = 0 … … ( 2 ) \sum\limits_{k=0}^Na_ky(n-k)=0 ……(2) k=0Naky(nk)=02
设y(n)= α n \alpha^n αn,则 α \alpha α为一元N次方程 ∑ k = 0 N a k α n − k = 0 \sum\limits_{k=0}^Na_k\alpha^{n-k}=0 k=0Nakαnk=0的根。
若方程没有重根,则N个根分别为 α 1 , α 2 , … … , α N \alpha_1,\alpha_2,……,\alpha_N α1α2αN,则齐次方程的通解为
y 1 ( n ) = ∑ i = 1 N c i α i n = c 1 α 1 n + c 2 α 2 n + … … + c N α N n … … ( 3 ) y_1(n)=\sum\limits_{i=1}^Nc_i\alpha_i^n=c_1\alpha_1^n+c_2\alpha_2^n+……+c_N\alpha_N^n ……(3) y1(n)=i=1Nciαin=c1α1n+c2α2n++cNαNn(3)
若方程有1个m重根 α 1 \alpha_1 α1,其余为非重根 α 2 , … … , α N − m + 1 \alpha_2,……,\alpha_{N-m+1} α2αNm+1,则齐次方程通解为
y 1 ( n ) = c 11 α 1 n + c 12 n α 2 n + … … + c 1 m n m − 1 α 1 n + c 2 α 2 n + c 3 α 3 n + … … + c N − m + 1 α N − m + 1 n … … ( 4 ) y_1(n)=c_{11}\alpha_1^n+c_{12}n\alpha_2^n+……+c_{1m}n^{m-1}\alpha_1^n+c_2\alpha_2^n+c_3\alpha_3^n+……+c_{N-m+1}\alpha_{N-m+1}^n ……(4) y1(n)=c11α1n+c12nα2n++c1mnm1α1n+c2α2n+c3α3n++cNm+1αNm+1n(4)
其中任意常数c_i、c_{ir}由系统的初始状态(方程的边界条件)确定。

②确定差分方程(1)的一个特解D(n)
求出右端具体表达式 -> 根据结果选择含待定系数的特解 -> 带入方程确定系数

输入x[n]特解D(n)
常数常数
c o s ( Ω n + ϕ ) cos(\Omega n+\phi) cos(Ωn+ϕ) s i n ( Ω n + ϕ ) sin(\Omega n+\phi) sin(Ωn+ϕ) c 1 c o s ( Ω n ) + c 2 s i n ( Ω n ) c_1cos(\Omega n)+c_2sin(\Omega n) c1cos(Ωn)+c2sin(Ωn)
a n a^n an ∑ i = 0 k c i n i a n \sum\limits_{i=0}^kc_in^ia^n i=0kcinian(a是方程的k重特征根)
n k n^k nk ∑ i = 0 k c i n i \sum\limits_{i=0}^kc_in^i i=0kcini
n k a n c o s ( Ω n ) n^ka^ncos(\Omega n) nkancos(Ωn) n k a n s i n ( Ω n ) n^ka^nsin(\Omega n) nkansin(Ωn) ( B 1 n k + … … + B k n + B k + 1 ) a n c o s ( Ω n ) + ( D 1 n k + … … + D k n + D k + 1 ) a n s i n ( Ω n ) (B_1n^k+……+B_kn+B_{k+1})a^ncos(\Omega n)+(D_1n^k+……+D_kn+D_{k+1})a^nsin(\Omega n) (B1nk++Bkn+Bk+1)ancos(Ωn)+(D1nk++Dkn+Dk+1)ansin(Ωn)

③确定完全解中的待定系数

2. 迭代法

将方程(1)进行移项
y ( n ) = − ∑ k = 0 N a k a 0 y ( n − k ) + ∑ r = 0 M b r a 0 x ( n − r ) … … ( 5 ) y(n)=-\sum\limits_{k=0}^N\frac{a_k}{a_0}y(n-k)+\sum\limits_{r=0}^M\frac{b_r}{a_0}x(n-r) ……(5) y(n)=k=0Na0aky(nk)+r=0Ma0brx(nr)(5)

import numpy as np

def solveCCLDE(n,x,y0,a,b):
    """迭代法解常系数线性差分方程
    N+1=len(a),M+1=len(b)
    :param n:返回输出序列的长度
    :param x:输入x(n),从x(0)到x(n-1)
    :param y0:初始状态,从y(-N)到y(-1)
    :param a:输出项系数
    :param b:输入项系数
    :return y:长度为n的输出序列,从y(0)到y(n-1)
    """
    N=len(a)-1
    M=len(b)-1
    #y[-N]~y[-1]对应x[-M]~x[0],补充x[-M]~x[-1]
    x=np.array([0]*M+x)
    a=np.mat(a).transpose()
    b=np.mat(b).transpose()
    b=b/a[-1,0]
    a=a/a[-1,0]
    
    y=[]
    for _ in range(n):
        xx=np.mat(x[_:_+M+1])
        yy=np.mat(y0)
        y.append((-yy*a[:-1]+xx*b).tolist()[0][0])
        y0.append(y[-1])
        y0=y0[1:]
        
    return y

3. z变换法

利用单边z变换的移位性质
Z [ x ( n − m ) u ( n ) ] = z − m [ X ( z ) + ∑ k = − m − 1 x ( k ) z − k ] … … ( 6 ) \mathcal{Z}[x(n-m)u(n)]=z^{-m}[X(z)+\sum\limits_{k=-m}^{-1}x(k)z^{-k}] ……(6) Z[x(nm)u(n)]=zm[X(z)+k=m1x(k)zk]6
对方程(1)两边取单边z变换得
∑ k = 0 N a k z − k [ Y ( z ) + ∑ l = − k − 1 y ( l ) z − l ] = ∑ r = 0 M b r z − r [ X ( z ) + ∑ m = − r − 1 x ( m ) z − m ] … … ( 7 ) \sum\limits_{k=0}^Na_kz^{-k}[Y(z)+\sum\limits_{l=-k}^{-1}y(l)z^{-l}]=\sum\limits_{r=0}^Mb_rz^{-r}[X(z)+\sum\limits_{m=-r}^{-1}x(m)z^{-m}] ……(7) k=0Nakzk[Y(z)+l=k1y(l)zl]=r=0Mbrzr[X(z)+m=r1x(m)zm]7
因为输入序列x(n)为因果序列,则 ∑ m = − r − 1 x ( m ) z − m = 0 \sum\limits_{m=-r}^{-1}x(m)z^{-m}=0 m=r1x(m)zm=0,方程变为
∑ k = 0 N a k z − k [ Y ( z ) + ∑ l = − k − 1 y ( l ) z − l ] = ∑ r = 0 M b r z − r X ( z ) … … ( 8 ) \sum\limits_{k=0}^Na_kz^{-k}[Y(z)+\sum\limits_{l=-k}^{-1}y(l)z^{-l}]=\sum\limits_{r=0}^Mb_rz^{-r}X(z) ……(8) k=0Nakzk[Y(z)+l=k1y(l)zl]=r=0MbrzrX(z)8
解出Y(z)得
Y ( z ) = ∑ r = 0 M b r z − r ∑ k = 0 N a k z − k X ( z ) − ∑ k = 0 N [ a k z − k ∑ l = − k − 1 y ( l ) z − l ] ∑ k = 0 N a k z − k … … ( 9 ) Y(z)=\frac{\sum\limits_{r=0}^Mb_rz^{-r}}{\sum\limits_{k=0}^Na_kz^{-k}}X(z)-\frac{\sum\limits_{k=0}^N[a_kz^{-k}\sum\limits_{l=-k}^{-1}y(l)z^{-l}]}{\sum\limits_{k=0}^Na_kz^{-k}} ……(9) Y(z)=k=0Nakzkr=0MbrzrX(z)k=0Nakzkk=0N[akzkl=k1y(l)zl]9
(9)式中第一项仅与输入有关,与起始状态无关,是零状态响应的z变换,记为 Y z s ( z ) Y_{zs}(z) Yzs(z),第二项仅与起始状态有关,与输入无关,是零输入响应的z变换,记为 Y z i ( z ) Y_{zi}(z) Yzi(z),令
H ( z ) = ∑ r = 0 M b r z − r ∑ k = 0 N a k z − k … … ( 10 ) H(z)=\frac{\sum\limits_{r=0}^Mb_rz^{-r}}{\sum\limits_{k=0}^Na_kz^{-k}}……(10) H(z)=k=0Nakzkr=0Mbrzr10
H(z)完全又系统特性所决定,称为离散时间系统的“系统函数”。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值