基于MATLAB的线性常系数差分方程求解
- 格式:doc
- 大小:632.00 KB
- 文档页数:30
基于MATLAB的线性常系数差分方程求解————————————————————————————————作者:————————————————————————————————日期:数字信号处理课程设计题目:基于MATLAB的线性常系数差分方程求解学院:专业:班级:学号:姓名:指导教师:目录摘要 (1)第一章背景 (3)1。
1 背景知识 (3)1。
2 《数字信号课程》特点 (3)1.3 软件介绍 (4)1.4 MATLAB及数字信号处理 (4)第二章设计目的及要求 (6)2.1 设计目的 (6)2.2 课程设计的内容要求 (7)2。
2。
1 设计要求 (7)第三章设计任务 (8)第四章设计原理 (9)4.1 差分与差分方程 (9)4。
2 线性常系数差分方程 (14)4.3 线性常系数差分方程的求解 (15)第五章设计过程 (16)5。
1 用MATLAB求解差分方程 (16)第六章设计代码及结果 (18)6.1 MATLAB源程序 (18)6.2 程序运行结果 (20)6。
3 比较结果总结 (24)第七章收获与体会 (25)致谢 (27)参考文献 (27)摘要《数字信号处理》分析了数字信号处理课程的重要性及特点,为了帮助学生理解与掌握课程中的基本概念、基本原理、基本分析方法,提出了用MATLAB进行数字信号处理课程设计的思路,并阐述了课程设计的具体方法、步骤和内容。
MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编成效率高,深受广大科技工作者的喜爱,特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行语音信号分析、处理和设计。
线性常系数差分方程求解是数字信号处理课程中常出现的课题,也是现代科学中值得深入研究的一个课题本文介绍了线性常系数差分方程的基本概念,论述了其求解方法,并用MATLAB具体实现了线性常系数差分方程的求解.基于MATLAB的线性常系数差分方程求解主要是用MATLAB作为工具平台,设计中涉及到差分方程的递推求解以及用filter对系数向量的归一化等等.通过数字信号处理课程的理论知识的综合运用,从实践上初步实现对数字信号的处理。
差分方程的解法分析及MATLAB 实现(程序)摘自:张登奇,彭仕玉.差分方程的解法分析及其MATLAB 实现[J]. 湖南理工学院学报.2014(03) 引言线性常系数差分方程是描述线性时不变离散时间系统的数学模型,求解差分方程是分析离散时间系统的重要内容.在《信号与系统》课程中介绍的求解方法主要有迭代法、时域经典法、双零法和变换域法[1].1 迭代法例1 已知离散系统的差分方程为)1(31)()2(81)1(43)(-+=-+--n x n x n y n y n y ,激励信号为)()43()(n u n x n =,初始状态为21)2(4)1(=-=-y y ,.求系统响应. 根据激励信号和初始状态,手工依次迭代可算出2459)1(,25)0(==y y . 利用MATLAB 中的filter 函数实现迭代过程的m 程序如下:clc;clear;format compact;a=[1,-3/4,1/8],b=[1,1/3,0], %输入差分方程系数向量,不足补0对齐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)求齐次解.特征方程为081432=+-αα,可算出41 , 2121==αα.高阶特征根可用MATLAB 的roots 函数计算.齐次解为. 0 , )41()21()(21≥+=n C C n y n n h (2)求方程的特解.将)()43()(n u n x n =代入差分方程右端得自由项为 ⎪⎩⎪⎨⎧≥⋅==-⋅+-1,)43(9130 ,1)1()43(31)()43(1n n n u n u n n n 当1≥n 时,特解可设为n p D n y )43()(=,代入差分方程求得213=D . (3)利用边界条件求完全解.当n =0时迭代求出25)0(=y ,当n ≥1时,完全解的形式为 ,)43(213 )41()21()(21n n n C C n y ⋅++=选择求完全解系数的边界条件可参考文[4]选)1(),0(-y y .根据边界条件求得35,31721=-=C C .注意完全解的表达式只适于特解成立的n 取值范围,其他点要用)(n δ及其延迟表示,如果其值符合表达式则可合并处理.差分方程的完全解为)(])43(213 )41(35)21(317[)1(])43(213 )41(35)21(317[)(25)(n u n u n n y n n n n n n ⋅+⋅+⋅-=-⋅+⋅+⋅-+=δ MATLAB 没有专用的差分方程求解函数,但可调用maple 符号运算工具箱中的rsolve 函数实现[5],格式为y=maple('rsolve({equs, inis},y(n))'),其中:equs 为差分方程表达式, inis 为边界条件,y(n)为差分方程中的输出函数式.rsolve 的其他格式可通过mhelp rsolve 命令了解.在MATLAB 中用时域经典法求解例1中的全响应和单位样值响应的程序如下.clc;clear;format compact;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 变换域法设差分方程的一般形式为)()(00r n x b k n y a r Mr k N k -=-∑∑==.对差分方程两边取单边z 变换,并利用z 变换的位移公式得])()([])()([1010m r m r r M r l k l k k N k z m x z X z b z l y z Y z a ---=-=---=-=∑∑∑∑+=+整理成)()()()()()(00z X z X z B z Y z Y z A +=+形式有. )(, )(110110M M N N z b z b b z B z a z a a z A ----+++=+++=. )()(, )()(110110∑∑∑∑=--=--=--=--==M r r m m r r N k k l l k k z m x b s X zl y a s Y可以看出,由差分方程可直接写出 )(z A 和 )(z B ,系统函数)(/)()(z A z B z H =,将系统函数进行逆z 变换可得单位样值响应.由差分方程的初始状态可算出 )(0z Y ,由激励信号的初始状态可算出 )(0z X ,将激励信号进行z 变换可得 )(z X ,求解z 域代数方程可得输出信号的象函数 , )()()()()()(00z A z Y z X z X z B z Y -+= 对输出象函数进行逆z 变换可得输出信号的原函数)(n y .利用z 变换求解差分方程各响应的步骤可归纳如下:(1)根据差分方程直接写出 )(z A 、 )(z B 和)(z H ,)(z H 的逆变换即为单位样值响应;(2)根据激励信号算出 )(z X ,如激励不是因果序列则还要算出前M 个初始状态值;(3)根据差分方程的初始状态 )(, ),2( ),1(N y y y -⋅⋅⋅--和激励信号的初始状态 )(, ),2( ),1(M x x x -⋅⋅⋅--算出 )(0z Y 和 )(0z X ;(4)在z 域求解代数方程)()()()()()(00z X z X z B z Y z Y z A +=+得输出象函数 )(z Y , )(z Y 的逆变换即为全响应;(5)分析响应象函数的极点来源及在z 平面中的位置,确定自由响应与强迫响应,或瞬态响应与稳态响应;(6)根据零输入响应和零状态响应的定义,在z 域求解双零响应的象函数,对双零响应的象函数进行逆z 变换,得零输入响应和零状态响应.用变换域法求解例1的基本过程如下. 根据差分方程直接写出2181431 )(--+-=z z z A ,1311 )(-+=z z B .系统函数的极点为41,21. 对激励信号进行z 变换得)43/( )(-=z z z X .激励象函数的极点为3/4. 根据差分方程的初始状态算出102123 )(-+-=z z Y .根据激励信号的初始状态算出 0)(0=z X . 对z 域代数方程求解,得全响应的象函数)323161123/()83243125( )(2323-+-+-=z z z z z z z Y . 进行逆z 变换得全响应为)(])43(213 )41(35)21(317[)(n u n y n n n ⋅+⋅+⋅-= 其中,与系统函数的极点对应的是自由响应;与激励象函数的极点对应的是强迫响应. )(z Y 的极点都在z 平面的单位圆内故都是瞬态响应.零输入响应和零状态响应可按定义参照求解.上述求解过程可借助MATLAB 的符号运算编程实现.实现变换域法求解差分方程的m 程序如下: clc;clear;format compact;syms z n %定义符号对象% 输入差分方程、初始状态和激励信号%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')/z^M;%计算A(z)和B(z)Hz=Bz/Az;disp('系统函数H(z):'),sys=filt(b,a),%计算并显示系统函数hn=iztrans(Hz);disp('单位样值响应h(n)='),pretty(hn),%计算并显示单位样值响应Hzp=roots(a);disp('系统极点:');Hzp,%计算并显示系统极点Xz=ztrans(xn);disp('激励象函数X(z)='),pretty(Xz),%激励信号的单边z 变换Y0z=0;%初始化Y0(z),求Y0(z)注意系数标号与变量下标的关系for k=1:N;for l=-k:-1;Y0z = Y0z+a(k+1)*y0(-l)*z^(-k-l);endenddisp('初始Y0(z)'),Y0z,%系统初始状态的z 变换X0z=0;%初始化X0(z),求X0(z)注意系数标号与变量下标的关系for r=1:M;for m=-r:-1;X0z = X0z+b(r+1)*x0(-m)*z^(-r-m);endenddisp('初始X0(z)'),X0z,%激励信号起始状态的z 变换Yz=(Bz*Xz+X0z-Y0z)/Az;disp('全响应的z 变换Y(z)'),pretty(simple(Yz)),yn=iztrans(Yz);disp('全响应y(n)='),pretty(yn),% 计算并显示全响应Yziz=-Y0z/Az;disp('零输入象函数Yzi(z)='),pretty(Yziz),%零激励响应的z 变换yzin=iztrans(Yziz);disp('零输入响应yzi(n)='),pretty(yzin),% 计算并显示零输入响应 Yzsz=(Bz*Xz+X0z)/Az;disp('零状态象函数Yzs(z)='),pretty(Yzsz),%零状态响应的z 变换yzsn=iztrans(Yzsz);disp('零状态响应yzs(n)='),pretty(yzsn),% 计算并显示零状态响应该程序的运行过程与手算过程对应,显示在命令窗的运行结果与手算结果相同.。
Matlab中的差分方程求解差分方程是微分方程的离散形式,常常在计算机科学、物理学、经济学等领域中广泛应用。
而Matlab作为一种数值计算软件,提供了强大的工具和函数用于差分方程的求解和分析。
本文将介绍Matlab中差分方程求解的基本方法和常见应用。
一、差分方程的基本概念差分方程是一种通过递归关系描述变量之间关系的数学表达式。
与微分方程不同,差分方程是以离散时间点为基础的,适用于描述离散系统的动态行为。
一般来说,差分方程可以分为线性差分方程和非线性差分方程两类。
线性差分方程的一般形式为:y[n] = a*y[n-1] + b*y[n-2] + ... + c*x[n],其中y[n]为方程的解,x[n]为给定的输入,a、b、c为系数。
而非线性差分方程则没有这种简单的表达形式,通常需要通过迭代或数值方法求解。
二、在Matlab中,可以利用函数和工具箱来求解差分方程。
下面将介绍几种常见的求解方法。
1. 符号计算方法Matlab的符号计算工具箱提供了一系列用于求解差分方程的函数,例如dsolve()函数。
这些函数可以根据给定的差分方程自动进行符号运算,得到方程的解析解。
符号计算方法适用于简单的线性差分方程,对于复杂的非线性差分方程则很难求解。
2. 数值迭代方法对于非线性差分方程,常常采用数值迭代的方法来求解。
Matlab提供了多种迭代函数,例如fsolve()函数和fminsearch()函数。
这些函数可以根据给定的差分方程和初始值,通过迭代计算得到方程的数值解。
数值迭代方法适用于各种类型的差分方程,但需要注意选择合适的初始值和迭代算法以确保收敛。
3. 差分方程求解函数除了符号计算和数值迭代方法,Matlab还提供了一些专门用于求解差分方程的函数,例如ode23()函数和ode45()函数。
这些函数可以根据给定的差分方程和初始条件,通过数值方法求解方程的数值解。
相比于数值迭代方法,差分方程求解函数更加高效和稳定,适用于大规模的复杂差分方程。
MATLAB中的差分方程建模与求解方法引言差分方程是数学中常见的一种方程类型,是一种离散形式的微分方程。
在实际问题中,差分方程能够提供对系统的离散描述,对于动态模型的建立和求解具有重要作用。
MATLAB作为一种功能强大的数值计算软件,其内置了丰富的工具箱和函数,为差分方程的建模和求解提供了便利。
一、差分方程的建模差分方程的建模是将实际问题转化为数学方程的过程。
在MATLAB中,差分方程的建模可以通过定义离散系统的状态和状态转移方程来实现。
下面以一个简单的例子说明差分方程的建模过程。
假设有一个人口增长模型,人口数在每年增加10%,则差分方程可以表示为:P(n+1) = P(n) + 0.1 * P(n),其中P(n)表示第n年的人口数,P(n+1)表示第n+1年的人口数。
在MATLAB中,可以通过定义一个函数来描述差分方程的状态转移方程,代码如下:```matlabfunction Pn = population_growth(Pn_minus_1)growth_rate = 0.1;Pn = Pn_minus_1 + growth_rate * Pn_minus_1;end```上述代码定义了一个名为"population_growth"的函数,该函数的输入参数为上一年的人口数"Pn_minus_1",输出为当前年的人口数"Pn"。
其中,growth_rate表示人口增长率,根据差分方程的定义,将上一年的人口数乘以增长率再加上本身,即可得到当前年的人口数。
二、差分方程的求解方法在MATLAB中,差分方程的求解可以通过多种方法实现。
下面介绍两种常用的差分方程求解方法:欧拉法和四阶龙格-库塔法。
1. 欧拉法(Euler's method)欧拉法是差分方程求解中最简单直观的一种方法。
其基本思想是通过离散化的方式逐步逼近连续函数的解。
具体步骤如下:1) 将时间段分割成若干个小区间;2) 根据差分方程的状态转移方程,在每个小区间内进行计算;3) 迭代计算直到达到指定的时间点。
数字信号处理课程设计题目:基于MATLAB的线性常系数差分方程求解学院:专业:班级:学号:姓名:指导教师:目录摘要 (1)第一章背景 (3)1.1 背景知识 (3)1.2 《数字信号课程》特点 (3)1.3 软件介绍 (4)1.4 MATLAB及数字信号处理 (4)第二章设计目的及要求 (6)2.1 设计目的 (6)2.2 课程设计的内容要求 (7)2.2.1 设计要求 (7)第三章设计任务 (8)第四章设计原理 (9)4.1 差分与差分方程 (9)4.2 线性常系数差分方程 (14)4.3 线性常系数差分方程的求解 (15)第五章设计过程 (16)5.1 用MATLAB求解差分方程 (16)第六章设计代码及结果 (18)6.1 MATLAB源程序 (18)6.2 程序运行结果 (20)6.3 比较结果总结 (24)第七章收获与体会 (25)致谢 (27)参考文献 (28)摘要《数字信号处理》分析了数字信号处理课程的重要性及特点,为了帮助学生理解与掌握课程中的基本概念、基本原理、基本分析方法,提出了用MATLAB进行数字信号处理课程设计的思路,并阐述了课程设计的具体方法、步骤和内容。
MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编成效率高,深受广大科技工作者的喜爱,特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行语音信号分析、处理和设计。
线性常系数差分方程求解是数字信号处理课程中常出现的课题,也是现代科学中值得深入研究的一个课题本文介绍了线性常系数差分方程的基本概念,论述了其求解方法,并用MATLAB具体实现了线性常系数差分方程的求解。
基于MATLAB的线性常系数差分方程求解主要是用MATLAB作为工具平台,设计中涉及到差分方程的递推求解以及用filter对系数向量的归一化等等。
通过数字信号处理课程的理论知识的综合运用,从实践上初步实现对数字信号的处理。
关键字:MATLAB,线性常系数差分方程,数字信号处理。
Abstract" Digital signal processing " analysis of digital signal processing course of the importance and features, in order to help the students to understand and grasp basic concepts, basic principles, basic analysis method, is put forward with the MATLAB for digital signal processing curriculum design, curriculum design and describes the specific methods, steps and content.The MATLAB language is widely used in engineering calculation and the numerical analysis in the field of advanced language, MATLAB powerful, easy to learn, a high efficiency, by the vast number of scientific workers' favorite, especially the MATLAB also has a signal analysis toolbox, does not need to have very strong ability of programming, can be very convenient for the analysis of speech signal, processing and design.Linear constant coefficient differential equation is a digital signal processing program that often appear in the topic, as well as modern science and worthy of in-depth study of a topicThis paper introduces the linear constant coefficient differential equation basic concept, discussed the solution method, and MATLAB the specific realization of linear constant coefficient difference equation.MATLAB based on the linear constant coefficient difference equation MATLAB is mainly used as a tool platform, design relate to differential equation recursive solution and the use of filter on the coefficient vector is normalized and so on. Through the course of digital signal processing theory, the integrated use of knowledge, from the practice of preliminary implementation of digital signal processing.Key words: MATLAB,Linear constant coefficient differential equation,Digital signal processing.第一章背景1.1 背景知识数字信号处理(Digital Signal Processing,简称DSP)是一门设计许多学科而又广泛应用于许多领域的新兴学科。
DSP有两种含义:Digital Signal Processing(数字信号处理)、Digital Signal Processor(数字信号处理器)。
我们常说的DSP指的是数字信号处理器。
数字信号处理器是一种适合完成数字信号处理运算的处理器。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
在过去的二十多年的时间里,数字信号处理已经在通信等领域得到极为广泛的应用。
数字信号处理是利用计算机专用处理设备,以数字形式对信号进行采集、变换、滤波、估值增强、压缩、识别等处理,以得到符合人们需要的信号形式。
它是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随即过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关,近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
1.2 《数字信号课程》特点《数字信号处理》课程是一门理论和技术发展十分迅速、应用非常广泛的前沿性学科,他的理论性和实践性都很强,他的特点是:(1)要求的数学知识多,包括高等代数、数值分析、概率统计、随机过程等。
(2)要求掌握的基础知识强,网络理论、信号与系统是本课程的理论基础。
(3)与其他学科密切相关,即与通信理论、计算机、微电子技术不可分,又是人工智能、模式识别、神经网络等新兴学科的理论基础之一。
选择用MATLAB进行课程设计:MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。
特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。
1.3 软件介绍MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数字数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、经融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解答问题要比用C,FORTRAN等语言完成相同的事情简捷的多,并且mathworks也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
1.4 MATLAB及数字信号处理MATLAB是矩阵实验室之意。
除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解决问题要比用C,FORTRAN等语言完全相同的事情简捷得多,可以将自己编写的实用程序导入到MATLAB函数库中方便在新的版本中也加入了对C,FORTRAN,c++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。
信号时数字信号处理领域中最基本、最重要的概念。
简单地说,信号就是信息的载体,是信息的物理体现。
信号既可以分为时间连续、幅度也连续的模拟信号和时间和幅度上都经过量化的数字信号,也可以划分为连续时间信号和离散时间信号。
几乎在科学技术的每一领域,为了信号的提取,都要进行信号处理,就是以数值计算的方法对信号进行采集,变换,综合,估计,与识别的加工处理过程,借以达到提取信息和便与应用的目的。