运用MATLAB语言解决级数及其相关问题李娟娟_第1页
运用MATLAB语言解决级数及其相关问题李娟娟_第2页
运用MATLAB语言解决级数及其相关问题李娟娟_第3页
运用MATLAB语言解决级数及其相关问题李娟娟_第4页
运用MATLAB语言解决级数及其相关问题李娟娟_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB语言课程论文运用MATLAB语言解决级数及其相关问题姓名:李娟娟 专业:电子信息工程 班级:2010级电子班指导老师:汤全武学院:物理电气信息学院完成日期:2011/12/12运用MATLAB语言解决级数及其相关问题摘要无穷级数是高等数学中的一个重要组成部分,它是表示函数,研究函数的性质以及进行数值计算的一种工具。运用MATLAB语言来求解无穷级数求和、幂级数展开、泰勒级数展开以及研究傅里叶级数提供了方便,并且在复变函数中解决级数问题也可由MATLAB来完成。同时运用高等数学中级数来解决日常实际问题的情况也可通过MATLAB程序来完成。MATLAB的运用大大减少工作量、节约时间,同

2、时加深对高等数学、复变函数及MATLAB语言的理解和学习。关键词MATLAB语言 无穷级数 级数求和 泰勒级数 傅里叶级数一、问题的提出级数作为高等数学和复变函数中的必学内容,要求我们必须掌握其定理内容及计算方法。但级数强大的计算量和多字母的表达示让很多人无从下手,加上出错率高,更给级数运算再添麻烦。为解决这一问题我们现在运用MATLAB语言来求解高等数学中的级数问题,涉及常系数项级数求和、泰勒级数展开成幂级数以及函数的傅里叶级数的展开等。二、常数项级数的求和与审敛高数中,一般的,如果给定一个数列则由这数列构成的表达式: (1)叫做(常数项)级数,记为,即=其中第n项叫做级数的一般项。做(常数

3、项)级数(1)的前n项和 (2)称为级数的(1)部分和,当n依次取1,2,3,时,他们构成一个新数列 如果这个数列的极限存在,则称该级数收敛,并称级数的部分和(2)为级数的和。在MATLAB语言中,用于级数求和的命令是symsum(),该命令的应用格式为:Symsum(a,v,m,n)其中:a表示级数的通项表达式,是一个符号表达式。V是通向中的求和变量,v省略时使用系统的默认变量。m和n分别是求和变量的开始项和末项,如果m、n缺省,则v从0变到V-1。问题1:求下列级数的和(1)(2)分析:运用传统方式,我们需要计算通项的极限,繁琐费时,出错率高。现在我们用MATLAB语言来解决:解:利用MA

4、TLAB语言中的symsum函数设计程序如下:clearsyms n %定义符号变量nf1=(2*n-1)/2n; %级数(1)的通项表达式f2=1/(n*(2*n+1); %级数(2)的通项表达式 I1=symsum(f1,n,1,inf) %求I1I2=symsum(f2,n,1,inf) %求I2运行结果为:I1 = 3 I2 = 2-2*log(2)数学表达式为:I1=3; I2=。 本例是收敛的情况,如果发散,则求得的和为inf。因此,本方法就可以同时用来解决求和问题和收敛性问题。问题2:求下列级数的和(1)(4)此题涉及函数解决难度大,运用MATLAB解题方便省时。解:MATLAB

5、程序如下:Clear syms n x %定义符号变量n、xf3=sin(x)/n2; %级数(1)的通项表达式f4=(-1)(n-1)*xn/n; %级数(2)的通项表达式I3=symsum(f3,n,1,inf) %求I3I4=symsum(f4,n,1,inf) %求I4运行结果为:I3 = 1/6*sin(x)*pi2 I4 = log(1+x)数学表达式为:I3=;I4=。 从这个例子可以看出,symsum()这个函数不但可以处理常数项级数,也可以处理函数项级数。三、函数的泰勒展开式级数是高等数学中函数的一种重要表示形式,有许多复杂的函数都可以用级数简单地来表示,而将一个复杂的函数展

6、开成幂级数并取其前面的若干项来近似表达这个函数是一种很好的近似方法,在学习级数的时候,我们知道将一个函数展开成级数有时是比较麻烦的,现在介绍用MATLAB语言来展开函数的方法。若设函数在点的某领域内能展开成幂级数,即有 (1)那么,根据和函数的性质,可知在内应具有任意阶导数,且由此可得 于是 (n=0,1,2,) (2) 这就表明,如果函数有幂级数展开式(1),那么该幂级数的系数有公式(2)确定,即该幂级数必为 (3)而展开式必为 (4) 幂级数(3)叫做函数在点处的泰勒级数,展开式(4)叫做函数在点处的泰勒展开式。 在MAILAB语言中,用于幂级数展开的函数为taylor()。其调用格式为:

7、Taylor(f,v,n,a)该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为止,n的默认值为6.v的默认值与diff函数相同。参数a指定将函数f在自变量v=a处展开,a的默认值是0,即迈克劳林展开。问题3:将函数展开为幂级数,分别展开至5次和20次分析:高等数学中解法:所给函数的各阶导数为顺序循环的取0,1,0,-1(n=0,1,2,3,),于是得级数,它的收敛半径又因为:对于任何有限的数、(在0与之间),余项的绝对值当时的极限为零。因此的展开式(, )由上可知,解题过程繁琐且计算量大、易出错,相应的我们下面运用MATLAB语言来完成。解:MATLAB程序为:cl

8、earsyms x %定义字符变量f=sin(x); %函数表达式taylor(f) %求函数的5阶泰勒级数展开式taylor(f,20) %求函数的20阶泰勒级数展开式运行结果为:ans = x-1/6*x3+1/120*x5ans =数学表达式为:5阶展开式: 20阶展开式: 问题4:将函数展开为x 的幂级数,m 为任意常数。展开至4次幂。分析:高等数学中解法:的各阶导数为所以 ,, ,于是得级数这级数相邻两项的系数之比的绝对值,因此,对于任何实数m这级数在开区间(-1,1)内收敛到函数F(x): 下面证明。 逐项求导,得,两边各乘以,并把含有(n=1,2,)的两项合并起来。根据恒等式(n

9、=1,2,)可得 现在令 ,于是,且 =0所以(常数)。但是,从而,即。因此在区间(-1,1)内展开式 由此看出解题过程过于复杂、耗时久且出错率高,掌握起来难。现在我们用MATLAB语言来解决:解:MATLAB程序为: clearsyms x m %定义字符变量f=(1+x)m; %F(x)的函数表达式taylor(f,5) %函数的4次泰勒展开式运行结果为:ans =1+m*x+1/2*m*(m-1)*x2+1/6*m*(m-1)*(m-2)*x3+1/24*m*(m-1)*(m-2)*(m-3)*x4数学表达式为: 四、函数的傅立叶级数展开傅里叶级数的运用很广泛,在解决电路分析、信号与系统

10、及大学物理中都有重要应用,其求解公式简单、含义明确,但对一些常见的周期函数中,应用公式求傅里叶级数时,常常面临较大的计算量,而且出错几率很高。现在我们利用MATLAB语言来编程求解函数的傅里叶级数展开式。先来认识傅里叶级数:设是周期为的周期函数,且能展开成三角级数: (5)先求。对(5)式从到积分,假设(5)式右端级数可逐积分,因此有。根据三角函数系的正交性,等式右端除第一项外,其余各项均为零,所以于是得其次求。用乘(5)式两端,再从到积分,我们得到 =。根据三角函数正交系,等式右端k=n的一项外,其余各项均为零,所以,于是得 (n=1,2,)类似的,用乘(5)式的两端,再从到积分,可得 (n

11、=1,2,)由于当n=0时,的表达式正好给出,因此,已得结果可以合并写成 (n=1,2,) (n=1,2,)如果两式的积分都存在,这时他们定出的系数,叫做的傅里叶系数,将这些系数代入(5)式右端,所得的三角级数叫做函数的傅里叶级数。在MATLAB语言中,没有专门求傅里叶级数的函数调用。但我们可以借助函数int()利用傅里叶级数展开式公式来编写相应的计算函数。程序如下:先定义函数myfly.m:function a0,ak,bk=myfly(f) %定义输出参数和输入参数及函数名syms k x %定义符号变量k xa0=int(f,x,-pi,pi)/pi; %求a0的积分函数语句ak=int

12、(f*cos(k*x),x,-pi,pi)/pi; %求ak的积分函数语句bk=int(f*sin(k*x),x,-pi,pi)/pi; %求bk的积分函数语句注意,该文件一定要以myfly.m为文件名。这样得到的是公式,如果要计算出具体的数值,则可以用下面的方法实现:现将ak,bk的计算公式分别编制成独立的函数,并以相应的文件名命名这里先编制两个m文件,其内容分别为:%fourieran.mfunction an=fourieran(f,n) %定义函数文件fourieransyms x %定义符号变量xan=int(f*cos(n*x),x,-pi,pi)/pi; %求an%fourier

13、bn.mfunction bn=fourierbn(f,n) %定义函数文件fourierbnsyms x %定义符号变量xbn=int(f*sin(n*x),x,-pi,pi)/pi; %求bn接着,再编写程序如下:clearsyms x n %定义符号变量x nf=x2 %函数表达式a0=fourieran(f,0) %调用函数文件fourieran求a0;a=zeros(1,10) %建立一个1*10的零矩阵b=zeros(1,10) %建立一个1*10的零矩阵for n=1:10 %n为1到10间隔为1的一组数a(n)=fourieran(f,n); %调用函数文件fourieran求

14、a(n)endfor n=1:10 %n为1到10间隔为1的一组数 b(n)=fourierbn(f,n); %调用函数文件fourierbn求b(n)end即可完成前21个傅立叶系数的计算。问题6:求函数 在 上的傅立叶级数。解:先求出傅立叶系数,程序如下:clearsyms x n %定义字符变量x、nf=x2 %被积函数表达式a0=int(f,x,-pi,pi)/pi %求a0an=int(f*cos(n*x),x,-pi,pi)/pi %求anbn=int(f*sin(n*x),x,-pi,pi)/pi %求bn运行结果为:f =x2a0 =2/3*pi2an =2*(n2*pi2*s

15、in(pi*n)-2*sin(pi*n)+2*pi*n*cos(pi*n)/n3/pibn =0数学表达式为: 这里,我们得到了傅立叶系数的公式,只要代入具体的n就可以得到结果了。四、结论由以上的利用MATLAB语言解决高等数学中级数求和、泰勒级数展开成幂级数及函数的傅里叶级数展开式的分析,我们不难看出得出以下结论:1、MATLAB语言可以解决高等数学中有关于技术的相关计算;2、运用MATLAB语言解决高等数学中级数的相关问题简单方便、可操作性强、节约时间、减少出错率;3、MATLAB语言应用广泛,帮助解决各类学科中的难点、要点,方便省时。五、课程体会通过MATLAB语言一学期的学习,我们也渐

16、渐摆脱刚开始的盲目和不解,开始有了自己对MATLAB语言的认识和了解,也体会到运用MATLAB语言解题真的可以带来方便。MATLAB为我们打开了一扇窗,让我们对计算机编程语言有了初步认识,作为一名学习电子信息工程专业的学生,学习和掌握编程是很重要的。现在的我们对专业知识还不太了解,许多专业课还没有开,但从学长和老师们口中我们知道计算机编程语言是基础,大一时学过的C语言是学好其他编程语言的基础,而我们在学习MATLAB语言时也感到有很多知识和C语言很相似,结合原来学的C语言对理解MATLAB语言有很大帮助。这些计算机编程语言对我们以后学习必不可少,至少下学期开的信号与系统就会用到有关MATLAB语言的知识,在以后的单片机等编程中也有涉及。因此学会MATLAB的基本使用格式、函数调用方法、各种工具箱的使用、绘图基本操作等对以后的学习至关重要。MATLAB语言的应用相当广泛,不仅可以用到高等数学、复变函数、大学物理、电路分析、模拟电路分析等一系列基础课程的学习,而且对于以后专业课的学习也有很大帮助。利用MATLAB语言解决在其它学科的应用时简单方便、节约时间、操作性强,切实解决利用数学计算方法解题繁琐费时、出错率高的难题,而且在例题引用和公式定理证明时能快速给出正确的答案,减少由于手动计算出错而带来的不必要麻烦。另外它MATLAB语言简单易学,相对于其它计算机语言MATLA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论