差分方程的解法分析及MATLAB实现(程序)Word文档格式.doc
- 文档编号:14575616
- 上传时间:2022-10-23
- 格式:DOC
- 页数:4
- 大小:154KB
差分方程的解法分析及MATLAB实现(程序)Word文档格式.doc
《差分方程的解法分析及MATLAB实现(程序)Word文档格式.doc》由会员分享,可在线阅读,更多相关《差分方程的解法分析及MATLAB实现(程序)Word文档格式.doc(4页珍藏版)》请在冰豆网上搜索。
n=0:
10;
xn=(3/4).^n,%输入激励信号
zx=[0,0],zy=[4,12],%输入初始状态
zi=filtic(b,a,zy,zx),%计算等效初始条件
[yn,zf]=filter(b,a,xn,zi),%迭代计算输出和后段等效初始条件
2时域经典法
用时域经典法求解差分方程:
先求齐次解;
再将激励信号代入方程右端化简得自由项,根据自由项形式求特解;
然后根据边界条件求完全解[3].用时域经典法求解例1的基本步骤如下.
(1)求齐次解.特征方程为,可算出.高阶特征根可用MATLAB的roots函数计算.齐次解为
(2)求方程的特解.将代入差分方程右端得自由项为
当时,特解可设为,代入差分方程求得.
(3)利用边界条件求完全解.当n=0时迭代求出,当n≥1时,完全解的形式为选择求完全解系数的边界条件可参考文[4]选.根据边界条件求得.注意完全解的表达式只适于特解成立的n取值范围,其他点要用及其延迟表示,如果其值符合表达式则可合并处理.差分方程的完全解为
MATLAB没有专用的差分方程求解函数,但可调用maple符号运算工具箱中的rsolve函数实现[5],格式为y=maple('
rsolve({equs,inis},y(n))'
),其中:
equs为差分方程表达式,inis为边界条件,y(n)为差分方程中的输出函数式.rsolve的其他格式可通过mhelprsolve命令了解.在MATLAB中用时域经典法求解例1中的全响应和单位样值响应的程序如下.
yn=maple('
rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=(3/4)^n+1/3*(3/4)^(n-1),y(0)=5/2,y(-1)=4},y(n))'
),
hn=maple('
rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=0,y(0)=1,y
(1)=13/12},y(n))'
3双零法
根据双零响应的定义,按时域经典法的求解步骤可分别求出零输入响应和零状态响应.理解了双零法的求解原理和步骤,实际计算可调用rsolve函数实现.
yzi=maple('
rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=0,y(-1)=4,y(-2)=12},y(n))'
yzs=maple('
rsolve({y(n)-3/4*y(n-1)+1/8*y(n-2)=(3/4)^n+1/3*(3/4)^(n-1),y(0)=1,y(-1)=0},y(n))'
4变换域法
设差分方程的一般形式为.
对差分方程两边取单边z变换,并利用z变换的位移公式得
整理成形式有
可以看出,由差分方程可直接写出和,系统函数,将系统函数进行逆z变换可得单位样值响应.由差分方程的初始状态可算出,由激励信号的初始状态可算出,将激励信号进行z变换可得,求解z域代数方程可得输出信号的象函数
对输出象函数进行逆z变换可得输出信号的原函数.利用z变换求解差分方程各响应的步骤可归纳如下:
(1)根据差分方程直接写出、和,的逆变换即为单位样值响应;
(2)根据激励信号算出,如激励不是因果序列则还要算出前M个初始状态值;
(3)根据差分方程的初始状态和激励信号的初始状态算出和;
(4)在z域求解代数方程得输出象函数,的逆变换即为全响应;
(5)分析响应象函数的极点来源及在z平面中的位置,确定自由响应与强迫响应,或瞬态响应与稳态响应;
(6)根据零输入响应和零状态响应的定义,在z域求解双零响应的象函数,对双零响应的象函数进行逆z变换,得零输入响应和零状态响应.
用变换域法求解例1的基本过程如下.
根据差分方程直接写出,.系统函数的极点为.
对激励信号进行z变换得.激励象函数的极点为3/4.
根据差分方程的初始状态算出.根据激励信号的初始状态算出.
对z域代数方程求解,得全响应的象函数.
进行逆z变换得全响应为
其中,与系统函数的极点对应的是自由响应;
与激励象函数的极点对应的是强迫响应.的极点都在z平面的单位圆内故都是瞬态响应.零输入响应和零状态响应可按定义参照求解.
上述求解过程可借助MATLAB的符号运算编程实现.实现变换域法求解差分方程的m程序如下:
symszn%定义符号对象
%输入差分方程、初始状态和激励信号%
a=[1,-3/4,1/8],b=[1,1/3],%输入差分方程系数向量
y0=[4,12],x0=[0],%输入初始状态,长度分别比a、b短1,长度为0时用[]
xn=(3/4)^n,%输入激励信号,自动单边处理,u(n)可用1^n表示
%下面是变换域法求解差分方程的通用程序,极点为有理数时有解析式输出%
N=length(a)-1;
M=length(b)-1;
%计算长度
Az=poly2sym(a,'
z'
)/z^N;
Bz=poly2sym(b,'
)/z^M;
%计算A(z)和B(z)
Hz=Bz/Az;
disp('
系统函数H(z):
'
),sys=filt(b,a),%计算并显示系统函数
hn=iztrans(Hz);
单位样值响应h(n)='
),pretty(hn),%计算并显示单位样值响应
Hzp=roots(a);
系统极点:
);
Hzp,%计算并显示系统极点
Xz=ztrans(xn);
激励象函数X(z)='
),pretty(Xz),%激励信号的单边z变换
Y0z=0;
%初始化Y0(z),求Y0(z)注意系数标号与变量下标的关系
fork=1:
N;
forl=-k:
-1;
Y0z=Y0z+a(k+1)*y0(-l)*z^(-k-l);
end
初始Y0(z)'
),Y0z,%系统初始状态的z变换
X0z=0;
%初始化X0(z),求X0(z)注意系数标号与变量下标的关系
forr=1:
M;
form=-r:
X0z=X0z+b(r+1)*x0(-m)*z^(-r-m);
初始X0(z)'
),X0z,%激励信号起始状态的z变换
Yz=(Bz*Xz+X0z-Y0z)/Az;
全响应的z变换Y(z)'
),pretty(simple(Yz)),
yn=iztrans(Yz);
全响应y(n)='
),pretty(yn),%计算并显示全响应
Yziz=-Y0z/Az;
零输入象函数Yzi(z)='
),pretty(Yziz),%零激励响应的z变换
yzin=iztrans(Yziz);
零输入响应yzi(n)='
),pretty(yzin),%计算并显示零输入响应
Yzsz=(Bz*Xz+X0z)/Az;
零状态象函数Yzs(z)='
),pretty(Yzsz),%零状态响应的z变换
yzsn=iztrans(Yzsz);
零状态响应yzs(n)='
),pretty(yzsn),%计算并显示零状态响应
该程序的运行过程与手算过程对应,显示在命令窗的运行结果与手算结果相同.
4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 方程 解法 分析 MATLAB 实现 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)