收藏 分享(赏)

运用MATLAB语言解决级数及其相关问题 李娟娟.doc

上传人:fmgc7290 文档编号:6543823 上传时间:2019-04-16 格式:DOC 页数:13 大小:363.50KB
下载 相关 举报
运用MATLAB语言解决级数及其相关问题  李娟娟.doc_第1页
第1页 / 共13页
运用MATLAB语言解决级数及其相关问题  李娟娟.doc_第2页
第2页 / 共13页
运用MATLAB语言解决级数及其相关问题  李娟娟.doc_第3页
第3页 / 共13页
运用MATLAB语言解决级数及其相关问题  李娟娟.doc_第4页
第4页 / 共13页
运用MATLAB语言解决级数及其相关问题  李娟娟.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

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

2、解决日常实际问题的情况也可通过 MATLAB 程序来完成。MATLAB 的运用大大减少工作量、节约时间,同时加深对高等数学、复变函数及 MATLAB 语言的理解和学习。关键词MATLAB 语言 无穷级数 级数求和 泰勒级数 傅里叶级数一、问题的提出级数作为高等数学和复变函数中的必学内容,要求我们必须掌握其定理内容及计算方法。但级数强大的计算量和多字母的表达示让很多人无从下手,加上出错率高,更给级数运算再添麻烦。为解决这一问题我们现在运用 MATLAB 语言来求解高等数学中的级数问题,涉及常系数项级数求和、泰勒级数展开成幂级数以及函数的傅里叶级数的展开等。二、常数项级数的求和与审敛高数中,一般的

3、,如果给定一个数列 123,.,nu则由这数列构成的表达式: (1)123叫做(常数项)级数,记为 ,即1nU=1n23nuu其中第 n 项 叫做级数的一般项。u做(常数项)级数(1)的前 n 项和(2)123.nnsuu1iU称为级数的(1)部分和,当 n 依次取 1,2,3,时,他们构成一个新数列ns12123123,.susunn如果这个数列的极限存在,则称该级数收敛,并称级数的部分和(2)为级数的和。在MATLAB 语言中,用于级数求和的命令是 symsum(),该命令的应用格式为:Symsum(a,v,m,n)其中:a 表示级数的通项表达式,是一个符号表达式。V 是通向中的求和变量,

4、v 省略时3使用系统的默认变量。m 和 n 分别是求和变量的开始项和末项,如果 m、n 缺省,则 v 从0 变到 V-1。问题 1:求下列级数的和(1) 3521248n(2) 130(21)分析:运用传统方式,我们需要计算通项的极限,繁琐费时,出错率高。现在我们用MATLAB 语言来解决:解:利用 MATLAB 语言中的 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

5、,inf) %求 I2运行结果为:I1 =3I2 =2-2*log(2)数学表达式为:I1=3; I2= 。2log本例是收敛的情况,如果发散,则求得的和为 inf。因此,本方法就可以同时用来解决求和问题和收敛性问题。问题 2:求下列级数的和(1) 2sinsinsi49xx(4)23(1)n此题涉及函数解决难度大,运用 MATLAB 解题方便省时。解:MATLAB 程序如下:Clear syms n x %定义符号变量 n、xf3=sin(x)/n2; %级数(1)的通项表达式f4=(-1)(n-1)*xn/n; %级数(2)的通项表达式I3=symsum(f3,n,1,inf) %求 I3

6、I4=symsum(f4,n,1,inf) %求 I4运行结果为:I3 =41/6*sin(x)*pi2I4 =log(1+x)数学表达式为:I3= ;216sinxI4= 。log()从这个例子可以看出,symsum()这个函数不但可以处理常数项级数,也可以处理函数项级数。三、函数的泰勒展开式级数是高等数学中函数的一种重要表示形式,有许多复杂的函数都可以用级数简单地来表示,而将一个复杂的函数展开成幂级数并取其前面的若干项来近似表达这个函数是一种很好的近似方法,在学习级数的时候,我们知道将一个函数展开成级数有时是比较麻烦的,现在介绍用 MATLAB 语言来展开函数的方法。若设函数 在点 的某领

7、域 内能展开成幂级数,即有()fx00()Ux()12.(1,(n mnfxmf11()si() 0()!()!nnn xR20102000()().().,()nnfxaxaxaxxU(1)那么,根据和函数的性质,可知 在 内应具有任意阶导数,且()f0()U2100!()!()! .nnnfxaxx(由此可得 ,nf于是 (n=0,1,2,) ()01!nnafx(2) 这就表明,如果函数 有幂级数展开式(1),那么该幂级数的系数 有公式()fx na(2)确定,即该幂级数必为 () ()00 0 0011()(). ). )! !nnnnfxfxfxfx5(3)而展开式必为 ()fx()

8、0001),()!nnfxxU(4) 幂级数(3)叫做函数 在点 处的泰勒级数,展开式(4)叫做函数 在点()fx0 ()f处的泰勒展开式。0x在 MAILAB 语言中,用于幂级数展开的函数为 taylor()。其调用格式为:Taylor(f,v,n,a)该函数将函数 f 按变量 v 展开为泰勒级数,展开到第 n 项(即变量 v 的 n-1 次幂)为止,n 的默认值为 6.v 的默认值与 diff 函数相同。参数 a 指定将函数 f 在自变量 v=a 处展开,a 的默认值是 0,即迈克劳林展开。问题 3:将函数 展开为幂级数,分别展开至 5 次和 20 次()sinfx分析:高等数学中解法:所

9、给函数的各阶导数为 ()sin(.)(1,2.)nfx顺序循环的取 0,1,0,-1(n=0,1,2,3,),于是得级数()0nf,3521.().!)!kxx它的收敛半径 R又因为:11()sin2() 0()!()!nnn xx对于任何有限的数 、 ( 在 0 与之间) ,余项的绝对值当 时的极限为零。 ()n因此的展开式( , )3521sin.().!)!kxx由上可知,解题过程繁琐且计算量大、易出错,相应的我们下面运用 MATLAB 语言来完成。解:MATLAB 程序为:clearsyms x %定义字符变量f=sin(x); %函数表达式taylor(f) %求函数的 5 阶泰勒级

10、数展开式6taylor(f,20) %求函数的 20 阶泰勒级数展开式运行结果为:ans =x-1/6*x3+1/120*x5ans =x-1/6*x3+1/120*x5-1/5040*x7+1/362880*x9-1/39916800*x11+1/6227020800*x13-1/1307674368000*x15+1/355687428096000*x17-1/121645100408832000*x19数学表达式为:5 阶展开式: 351sin620xx20 阶展开式: 791436280xx11315396802708748xxx 1792453问题 4:将函数 展开为 x 的幂级数,

11、m 为任意常数。展开至 4 次幂。()1mfx分析:高等数学中解法:的各阶导数为()fx1(),mf2()(,fxx()(1)2.(1)(,n mnfxmx所以 , , ,,(0)1f()f(0)1)f,()()2.()nfmn ,7于是得级数 01()cos2kafxdxxd2(1)(1).)1. .!nmmxx这级数相邻两项的系数之比的绝对值,11()nan因此,对于任何实数 m 这级数在开区间(-1,1)内收敛到函数 F(x):2(1)(1).)()1. .!nmFxxx(1)x下面证明 。()()m逐项求导,得,2(1)(1).)()1. .!nmFxxxx 两边各乘以 ,并把含有 (

12、n=1,2,)的两项合并起来。根据恒等式()n(n=1,2,)(1).)(1).)(1).)!mmmnnn可得(1)x(F2(1)(1).). .!nmmxx ()Fx()8现在令 ,()1mFx于是 ,且(0)1F12()()(mmxFxF=012()()()mmxx所以 (常数)。但是 ,从而 ,即()xc(0)1()1x。()mF因此在区间(-1,1)内展开式(1)mx2(1)(1).). .!nxx(1)x由此看出解题过程过于复杂、耗时久且出错率高,掌握起来难。现在我们用 MATLAB 语言来解决:解:MATLAB 程序为:clearsyms x m %定义字符变量f=(1+x)m;

13、%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数学表达式为: 2311(1)()6()2mxxmx94124()2(3)mx四、函数的傅立叶级数展开傅里叶级数的运用很广泛,在解决电路分析、信号与系统及大学物理中都有重要应用,其求解公式简单、含义明确,但对一些常见的周期函数中,应用公式求傅里叶级数时,常常面临较大的计算量,而且出错几率很高。现在我们利用 MATLAB 语言来编程求解函数的傅里叶级数展开式。先来认识

14、傅里叶级数:设 是周期为 的周期函数,且能展开成三角级数:()fx201()(cosin)kkafxxb(5)先求 。对(5)式从 到 积分,假设(5)式右端级数可逐积分,因此有0a。0()2afxdx1cossinkkxdbxd根据三角函数系 的正交性,等式右端除第一项(1,cosin,s,i2,.s,i.)外,其余各项均为零,所以 0().2afxd于是得 01()afxd其次求 。用 乘(5)式两端,再从 到 积分,我们得到nacosx()fxd10= 。01coscossinco2k kanxdaxndbxd 根据三角函数正交系 ,等式右端 k=n 的一项外,(,si,s2,i,.s,

15、i.)其余各项均为零,所以,2()coscosnnfxdaxda于是得(n=1,2,)1()cosnafxnd类似的,用 乘(5)式的两端,再从 到 积分,可得sinx(n=1,2,)1()sinnbfxd由于当 n=0 时, 的表达式正好给出 ,因此,已得结果可以合并写成a0a(n=1,2,)1()cosnfxnd(n=1,2,)()sinbf如果两式的积分都存在,这时他们定出的系数 ,叫做 的傅里叶系数,将这些01,ab()fx系数代入(5)式右端,所得的三角级数 01(cosin)2kkaxb叫做函数 的傅里叶级数。()fx在 MATLAB 语言中,没有专门求傅里叶级数的函数调用。但我们

16、可以借助函数 int()利用傅里叶级数展开式公式来编写相应的计算函数。程序如下:11先定义函数 myfly.m:function a0,ak,bk=myfly(f) %定义输出参数和输入参数及函数名syms k x %定义符号变量 k xa0=int(f,x,-pi,pi)/pi; %求 a0 的积分函数语句ak=int(f*cos(k*x),x,-pi,pi)/pi; %求 ak 的积分函数语句bk=int(f*sin(k*x),x,-pi,pi)/pi; %求 bk 的积分函数语句注意,该文件一定要以 myfly.m 为文件名。这样得到的是公式,如果要计算出具体的数值,则可以用下面的方法实

17、现:现将 ak,bk 的计算公式分别编制成独立的函数,并以相应的文件名命名这里先编制两个 m 文件,其内容分别为:%fourieran.mfunction an=fourieran(f,n) %定义函数文件 fourieransyms x %定义符号变量 xan=int(f*cos(n*x),x,-pi,pi)/pi; %求 an%fourierbn.mfunction bn=fourierbn(f,n) %定义函数文件 fourierbnsyms x %定义符号变量 xbn=int(f*sin(n*x),x,-pi,pi)/pi; %求 bn接着,再编写程序如下:clearsyms x n

18、%定义符号变量 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 求 a(n)endfor n=1:10 %n 为 1 到 10 间隔为 1 的一组数b(n)=fourierbn(f,n); %调用函数文件 fourierbn 求 b(n)12end即可完成前 21 个傅立叶系数

19、的计算。问题 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*sin(pi*n)-2*sin(pi*n)+2*pi*n*cos(pi*n)/n3/pibn =0数学表达式为: 2fx023a3(sini2cos)n n0nb这里,我们得到

20、了傅立叶系数的公式,只要代入具体的 n 就可以得到结果了。四、结论由以上的利用 MATLAB 语言解决高等数学中级数求和、泰勒级数展开成幂级数及函数的傅里叶级数展开式的分析,我们不难看出得出以下结论:1、MATLAB 语言可以解决高等数学中有关于技术的相关计算;2、运用 MATLAB 语言解决高等数学中级数的相关问题简单方便、可操作性强、节约时间、减少出错率;133、MATLAB 语言应用广泛,帮助解决各类学科中的难点、要点,方便省时。五、课程体会通过 MATLAB 语言一学期的学习,我们也渐渐摆脱刚开始的盲目和不解,开始有了自己对 MATLAB 语言的认识和了解,也体会到运用 MATLAB

21、语言解题真的可以带来方便。MATLAB 为我们打开了一扇窗,让我们对计算机编程语言有了初步认识,作为一名学习电子信息工程专业的学生,学习和掌握编程是很重要的。现在的我们对专业知识还不太了解,许多专业课还没有开,但从学长和老师们口中我们知道计算机编程语言是基础,大一时学过的 C 语言是学好其他编程语言的基础,而我们在学习 MATLAB 语言时也感到有很多知识和 C 语言很相似,结合原来学的 C 语言对理解 MATLAB 语言有很大帮助。这些计算机编程语言对我们以后学习必不可少,至少下学期开的信号与系统就会用到有关 MATLAB语言的知识,在以后的单片机等编程中也有涉及。因此学会 MATLAB 的

22、基本使用格式、函数调用方法、各种工具箱的使用、绘图基本操作等对以后的学习至关重要。MATLAB 语言的应用相当广泛,不仅可以用到高等数学、复变函数、大学物理、电路分析、模拟电路分析等一系列基础课程的学习,而且对于以后专业课的学习也有很大帮助。利用 MATLAB 语言解决在其它学科的应用时简单方便、节约时间、操作性强,切实解决利用数学计算方法解题繁琐费时、出错率高的难题,而且在例题引用和公式定理证明时能快速给出正确的答案,减少由于手动计算出错而带来的不必要麻烦。另外它 MATLAB 语言简单易学,相对于其它计算机语言 MATLAB 语言更加简单易学,对书本的仔细阅读以及对各类函数名的记忆和格式的熟悉可以帮助我们更好的学习和利用 MATLAB 来求解计算和实际中难题。在做 MATLAB 语言在级数中的应用时,不仅使我感受到了 MATLAB 学习的重要性和方便性,而且也对级数应用的函数更深的了解。同时也对高等数学中级数的内容进行了复习,帮主对 MATLAB 语言、高等数学、复变函数的再学习,一举多得。参考文献1 刘卫国.MATLAB 程序设计与应用 (第二版)M.北京:高等教育出版社,2006.2 同济大学数学系编.高等数学 (第六版) 下册M.北京:高等教育出版社,2007.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报