微信公众号:创享日记
发送:求解器
获取完整报告(含源程序代码+结果+分析)
一、在s域分析连续时间系统的方法
一个线性时不变连续时间系统可以用线性常系数微分方程描述,对系统的时域分析可归结为利用数学方法对该方程求解。在s域分析连续时间系统的方法是一种间接求解微分方程的计算方法,即以拉普拉斯变换为数学工具,先将时域微分方程变换成s域的代数方程,再在s域求解响应的象函数,最后将响应象函数逆变换成时域原函数。
设LTI因果系统的微分方程一般式为:
对微分方程两边进行单边拉氏变换,利用拉氏变换的微分性质,得:
根据系统的微分方程,可得A(s)和B(s),由系统的起始状态可算出C(s),将系统输入进行拉氏变换可得到F(s)。将C(s)/A(s)进行拉氏反变换得零输入响应y_zi(t);将B(s)F(s)/A(s)进行拉氏反变换得零状态响应y_zs(t);零输入响应y_zi(t)与零状态响应y_zs(t)的和即为全响应y(t)。
二、在z域分析离散时间系统的方法
一个线性时不变离散时间系统可以用线性常系数差分方程描述,对系统的时域分析可归结为利用数学方法对该方程求解。在z域分析离散时间系统的方法是一种间接求解差分方程的计算方法,即以z变换为数学工具,先将时域差分方程变换成z域的代数方程,再在z域求解响应的象函数,最后将响应象函数逆变换成时域原函数。
设LTI因果系统的差分方程一般式为:
对差分方程两边取单边z变换,并利用z变换的位移公式,得
根据系统的微分方程,可得A(z)和B(z),由系统的起始状态可算出C(z),将系统输入进行z变换可得到F(z)。将-C(z)/A(z)进行逆z变换得零输入响应y_zi(n);将B(z)F(z)/A(z)进行逆z变换得零状态响应y_zs(n);零输入响应y_zi(n)与零状态响应y_zs(n)的和即为全响应y(n)。
三、MATLAB对拉普拉斯变换与z变换的支持
1、MATLAB对拉普拉斯变换的支持
拉普拉斯变换即拉氏变换,可将一个有参数实数 的函数转换为一个参数为复数s的函数,为线性变换。拉普拉斯变换在工程技术和科学研究领域中有着广泛的应用。
MATLAB提供了进行拉普拉斯变换和拉式反变换的相关函数指令laplace和ilaplace,其具体的函数及功能如下所示:
laplace(f) %返回f的拉普拉斯变换,默认自变量为t,变换变量为s
laplace(f,transVar) %使用转换变量transVar代替s
laplace(f,var,transVar) %分别用自变量var和变换变量transVar代替t和s
ilaplace(F) %返回F的拉普拉斯逆变换,默认自变量为s,变换变量为t
%如果F不包含s,ilaplace使用函数symvar
ilaplace(F,transVar) %使用转换变量transVar代替t
ilaplace(F,var,transVar) %分别用自变量var和变换变量transVar代替s和t
2、MATLAB对z变换的支持
z变换是对离散序列进行的一种数学变换,常用于求线性时不变差分方程的解。它在离散系统中的地位如同拉普拉斯变换在连续系统中的地位。z变换已成为分析线性时不变离散系统问题的重要工具,并且在数字信号处理、计算机控制系统等领域有着广泛的应用。
MATLAB提供了进行z变换和逆z变换的相关函数指令ztrans和iztrans,其具体的函数及功能如下所示:
ztrans(f) % 返回f的z变换,默认自变量为n,变换变量为z
%如果f不包含n,,ztrans使用函数symvar
ztrans(f,transVar) %使用转换变量transVar代替z
ztrans(f,var,transVar) %分别用自变量var和变换变量transVar代替n和z
iztrans(F) %返回F的逆z变换,默认自变量为z,转换变量为n
%如果F不包含z,iztrans使用函数symvar
iztrans(F,transVar) %使用转换变量transVar代替n
iztrans(F,var,transVar) %分别用自变量var和变换变量transVar代替z和n
四、求解器函数的设计
1、连续时间系统的求解器
1.1设计要求
连续时间系统的数学模型为如下微分方程:
请设计一个MATLAB函数,实现以下功能。
函数的输入为:
函数的输出为:
1.2设计思路
1.3函数代码(详见报告)
2、离散时间系统的求解器
2.1设计要求
离散时间系统的数学模型为如下差分方程:
请设计一个MATLAB函数,实现以下功能。
函数的输入为:
函数的输出为:
2.2设计思路
2.3函数代码(详见报告)
五、实例求解
经多次实验验证,上述设计出的连续时间系统求解器与离散时间系统求解器可正确求解激励信号初始状态为0的系统微分方程与差分方程。
以下为几个实例验证。
现利用设计的连续时间系统求解器对该题求解,程序代码如下:
syms s t
a=[1,5,6];b=[2,8];
ft=exp(-t)heaviside(t);
y0=[3,2];
continuous(a,b,y0,ft)
运行结果如下,与上述计算结果一致。
对求解结果进行可视化处理(代码见附录3)(详见报告):
现利用设计的离散时间系统求解器对该题求解,程序代码如下:
syms z n
sympref(‘HeavisideAtOrigin’,1)
a=[1,3,2];b=[1];
y0=[0,1/2];
fn= heaviside(n);
discrete(a,b,y0,fn)
运行结果如下,与上述计算结果一致。
(由于求解过程较为复杂,且报告重点不在于经典法,故求解过程不在此赘述)
现利用设计的连续时间系统求解器对该题求解,程序代码如下:
syms s t
a=[1,6,11,6];b=[1,7,8];
ft=-1exp(2t)heaviside(-t)+2exp(-4t)*heaviside(t);
y0=[1,13,-61];
continuous(a,b,y0,ft)
运行结果如下:
求解器求解结果与计算结果不一致,分析认为由于本求解器设计未考虑到激励信号有初始状态的情况,故无法正确求解此类微分方程。但个人认为,由于实际运用中激励信号通常为因果信号,故可认为该求解器仍具有普适性。
六、结论
将MATLAB的数值计算、符号运算和连续系统的拉氏变换分析法有机结合可设计出连续时间系统微分方程的求解器;将MATLAB的数值计算、符号运算和离散系统的z变换分析法有机结合可设计出离散时间系统差分方程的求解器。
经实例验证,上述设计出的求解器可正确求解激励信号初始状态为0的系统微分方程与差分方程,而实际应用中激励信号初始状态通常为0,故可基本认为本课程设计设计出的求解器具有普适性。设计出的求解器不仅使大量的手工计算得以简化,也能得到系统分析的解析解,使得系统分析更为简便和高效。
另外,对于连续时间系统而言,当样本点足够密时,各样本点的数据可近似表示连续信号,故用MATLAB的绘图功能,也可直观图示分析结果,有利于深入理解分析内容。
(附录详见报告)