最新实验七matlab求解级数有关计算

合集下载

matlab 前n项级数的和

matlab 前n项级数的和

matlab 前n项级数的和MATLAB是一种常用的数学软件,它能够方便地进行各种数学计算和数据处理,其中包括级数求和。

在MATLAB中,我们可以通过编写代码来计算前n项级数的和。

首先,我们需要明确什么是级数。

简单来说,级数就是一列数的和。

例如,1+2+3+4+5+……就是一个级数。

级数可以分为无穷级数和有限级数。

无穷级数是指项数无限多的级数,而有限级数则是指项数有限的级数。

我们来看一个例子,假设有一个级数:1/2 + 1/4 + 1/8 + 1/16 + ……。

这个级数的通项公式为1/2^n。

如果我们想要计算前n项的和,可以编写如下代码:n = 10; % 前10项s = 0;for i=1:ns = s + 1/2^i;enddisp(s);以上代码中,我们首先定义了n,即要计算前n项的和。

然后我们定义了一个变量s,用来存储求和的结果。

接着我们使用for循环来逐项计算级数的和,将每一项的值相加并储存到s中。

最后使用disp函数将结果输出。

运行以上代码,可以得到前10项级数的和为0.9990234375。

如果我们想要计算更多项的级数,只需要将n的值修改即可。

除了使用循环语句计算级数的和,MATLAB还提供了sum函数来计算一列数的和。

对于上面的例子,我们可以使用如下代码:n = 10; % 前10项s = sum(1./2.^(1:n));disp(s);在以上代码中,我们使用了sum函数来计算1/2^n的和。

注意,我们使用了点除法和点乘法,这是为了确保计算的是向量中每个元素的运算,而不是矩阵运算。

除了上述例子中的级数外,MATLAB还支持计算各种不同的级数,包括等比级数、调和级数等。

无论是什么类型的级数,我们都可以通过编写代码来计算其前n项的和。

总之,MATLAB提供了丰富的数学计算功能,其中包括级数求和。

通过编写代码,我们可以方便地计算各种级数的前n项和,为数学计算提供了便利。

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

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

《MATLAB语言》课程论文运用MATLAB语言解决级数及其相关问题姓名:李娟娟学号:12010245220专业:电子信息工程班级:2010级电子班指导老师:汤全武学院:物理电气信息学院完成日期:2011/12/12运用MATLAB 语言解决级数及其相关问题(李娟娟 12010245220 2010级电子班)[摘要]无穷级数是高等数学中的一个重要组成部分,它是表示函数,研究函数的性质以及进行数值计算的一种工具。

运用MATLAB 语言来求解无穷级数求和、幂级数展开、泰勒级数展开以及研究傅里叶级数提供了方便,并且在复变函数中解决级数问题也可由MATLAB 来完成。

同时运用高等数学中级数来解决日常实际问题的情况也可通过MATLAB 程序来完成。

MATLAB 的运用大大减少工作量、节约时间,同时加深对高等数学、复变函数及MATLAB 语言的理解和学习。

[关键词]MATLAB 语言 无穷级数 级数求和 泰勒级数 傅里叶级数一、问题的提出级数作为高等数学和复变函数中的必学内容,要求我们必须掌握其定理内容及计算方法。

但级数强大的计算量和多字母的表达示让很多人无从下手,加上出错率高,更给级数运算再添麻烦。

为解决这一问题我们现在运用MATLAB 语言来求解高等数学中的级数问题,涉及常系数项级数求和、泰勒级数展开成幂级数以及函数的傅里叶级数的展开等。

二、常数项级数的求和与审敛高数中,一般的,如果给定一个数列123,,,...,...n u u u u则由这数列构成的表达式:123......n u u u u +++++ (1)叫做(常数项)级数,记为1n Un ∞=∑,即1n Un ∞=∑=123......n u uu u +++++其中第n 项n u 叫做级数的一般项。

做(常数项)级数(1)的前n 项和123...n n s u u u u =++++=1ni Ui =∑ (2)n s 称为级数的(1)部分和,当n 依次取1,2,3,……时,他们构成一个新数列 112123123,,,...s u s u u s u u u ==+=++123......,....n n s u u u u =+++++如果这个数列的极限存在,则称该级数收敛,并称级数的部分和(2)为级数的和。

实验七 matlab求解级数有关计算

实验七 matlab求解级数有关计算

实验七 matlab 求解级数有关计算1.级数的基本概念常数项级数:称用加号将数列n a 的项连成的式子+++++n a a a a 321为(常数项)无穷级数,简记为∑∞=1n na。

称级数∑∞=1n na前n 项构成的和∑==++++=nk kn n a a a a a S 1321为级数的部分和。

若SS n n =∞→lim ,则称级数∑∞=1n na收敛,其和为S 。

Taylor 级数:设函数)(x f 在包含a x =的区域内具有各阶导数,则称幂级数+-++-+-+=-∑∞=n n n n n a x n a f a x a f a x a f a f a x n a f )(!)()(!2)())((')()(!)()(2)2(0)(为函数)(x f 在a x =的Taylor 级数,当0=a 时称为Maclaurin(麦克劳林)级数。

2.级数的MATLAB 命令MATLAB 中主要用symsum,taylor 求级数的和及进行Taylor 展开。

例1 先用taylor 命令观测函数x y sin =的Maclaurin 展开式的前几项,例如观测前6项, 相应的MA TLAB 代码为:>>clear; syms x;>>taylor(sin(x),0,1) >>taylor(sin(x),0,2) >>taylor(sin(x),0,3) >>taylor(sin(x),0,4) >>taylor(sin(x),0,5) >>taylor(sin(x),0,6)结果为:ans =0 ans =x ans =xans =x-1/6*x^3 ans =x-1/6*x^3ans =x-1/6*x^3+1/120*x^5然后在同一坐标系里作出函数x y sin =和它的Taylor 展开式的前几项构成的多项式函数,,!5!3,!3,533 x x x y x x y x y +-=-==的图形,观测这些多项式函数的图形向x y sin =的图形的逼近的情况。

信号与系统及傅里叶级数的MATLAB计算

信号与系统及傅里叶级数的MATLAB计算

4.1 傅里叶级数的MATLAB 计算设周期信号x(t)的基本周期为T 1,且满足狄里克利条件,则其傅里叶级数的系数可由式2.4计算得到。

式2.4重写如下:⎰--=2/2/1110)(1T T tjk k dt et x T a ω基本频率为: 102T πω=对周期信号进行分析时,我们往往只需对其在一个周期内进行分析即可,通常选择主周期(Principle period )。

假定x 1(t)是x(t)中的主周期,则⎰--=2/2/11110)(1T T tjk k dt e t x T a ω 计算机不能计算无穷多个系数,所以我们假设需要计算的谐波次数为N ,则总的系数个数为2N+1个。

在确定了时间范围和时间变化的步长即T 1和dt 之后,对某一个系数,上述系数的积分公式可以近似为:∑⎰---==ntjk n T T t jk k T dt e t x dt e t x T a 12/2/11/)()(10110ωω 121/],,[)](),(),([02010T dt e e et x t x t x M t jk t jk t jk M ⋅⋅=---ωωω对于全部需要的2N+1个系数,上面的计算可以按照矩阵运算实现。

MATLAB 实现系数计算的程序如下:dt = 0.01;T = 2; t = -T/2:dt:T/2; w0 = 2*pi/T;x1 = input(‘Type in the periodic signal x(t) over one period x1(t)=’); N = input(‘Type in the number N=’); k = -N:N; L = 2*N+1; ak = x1*exp(-j*k*w0*t’)*dt/T;需要强调的是,时间变量的变化步长dt 的大小对傅里叶级数系数的计算精度的影响非常大,dt 越小,精度越高,但是,计算机计算所花的时间越长。

高等数学:MATLAB实验

高等数学:MATLAB实验
以上两种格式中的x、y都可以是表达式.plot是绘制二维 曲线的基本函数,但在使用 此函数之前,需先定义曲线上每一 点的x及y的坐标.
MATLAB实验
2.fplot绘图命令 fplot绘图命令专门用于绘制一元函数曲线,格式为:
fplot('fun',[a,b]) 用于绘制区间[a,b]上的函数y=fun的图像.
MATLAB实验 【实验内容】
MATLAB实验
由此可知,函数在点x=3处的二阶导数为6,所以f(3)=3为 极小值;函数在点x= 1处的二阶导数为-6,所以f(1)=7为极大值.
MATLAB实验
例12-10 假设某种商品的需求量q 是单价p(单位:元)的函 数q=12000-80p,商 品的总成本C 是需求量q 的函数 C=25000+50q.每单位商品需要纳税2元,试求使销售 利润达 到最大的商品单价和最大利润额.
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验 实验九 用 MATLAB求解二重积分
【实验目的】 熟悉LAB中的int命令,会用int命令求解简单的二重积分.
MATLAB实验
【实验M步A骤T】 由于二重积分可以化成二次积分来进行计算,因此只要
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
实验七 应用 MATLAB绘制三维曲线图
【实验目的】 (1)熟悉 MATLAB软件的绘图功能; (2)熟悉常见空间曲线的作图方法.
【实验要求】 (1)掌握 MATLAB中绘图命令plot3和 mesh的使用; (2)会用plot3和 mesh函数绘制出某区间的三维曲线,线型

Matlab实训7-求解高数问题

Matlab实训7-求解高数问题
-3/16/a^4
• 定积分与无穷积分计算:
–格式: I=int(f,x,a,b) –格式: I=int(f,x,a,inf)
• 例: f (x) ex2 /2
>> syms x; I1=int(exp(-x^2/2),x,0,1.5) %无解
I1 =
1/2*erf(3/4*2^(1/2))*2^(1/2)*pi^(1/2)
32 2 -2 x + 2 + 2 x + x y - 4 x - 2 x y - -----------------------------------------
x (x - 2) (2 y + x)
● 参数方程的导数
• 已知参数方程
,求

5.3 积分问题的解析解
• 不定积分的推导:
–格式: F=int(fun,x)
• 函数的导数和高阶导数
– 格式: y=diff(fun,x) %求导数(默认为1阶) y= diff(fun,x,n) %求n阶导数
• 例: 阶导数:
>> syms x; f=sin(x)/(x^2+4*x+3); >> f1=diff(f)
求一阶及100
f1 = cos(x)/(x^2+4*x+3)-sin(x)/(x^2+4*x+3)^2*(2*x+4)
>> syms x; >> limit((exp(x^3)-1)/(1-cos(sqrt(x-
sin(x)))),x,0,'right') ans =
12
例: 试求解极限问题
>> syms x a b;

MATLAB高等数学求解


实例演示
• 计算:
• 命令sym x;f=(1/x)^tan(x);limit(f,x,0,’right’) • 计算: • 命令syms x a b;f=x*(1+a/x)^x*sin(b/x);limit(f,x,inf) • 计算 • 命令:syms x y; • f=(x+y)*log(x^2+y^2) ;limit(limit(f,x,0),y,0)
1 lim x0 x
tan x
二、导数的运算
• • • • 求导数问题解析解的MATLAB命令格式: diff(f,x);表示求函数f的导数 diff(f,x,n);表示求函数f的n阶导数 diff(diff(f,x,m),y,n);表示对x求m阶偏导数对y 求n阶偏导数
三、积分的运算
五、函数的极值和零点
• 求函数极值的MATLAB命令 • x=fminbnd(‘fun’,a,b);求函数fun在闭区间[a,b]上函 数的局部极小值 • x=fminsearch(‘fun’,x0);求多元函数fun在x0附近的 最小值 • 注:此处x0表示一个点或者向量如x0=(1,-1,0) • x=fzero(‘fun’,x0);求函数fun在x0附近的稳定点 (零点) • 注:此处x0表示一个点或者向量如x0=(1,-1,0)或 者一个区间,如[a,b]
四、函数的级数展开 与级数求和问题
• 求函数的级数展开与级数求和问题的MATLAB 命令格式: • talor(f,x,n);函数f在0点下泰勒展开到n次式 • talor(f,x,n,a);函数f在a点下泰勒展开到n次式 • symsum(f,n,a,b);函数f表示的通项当自变量n 由a到b的和。
• • • • • 求积分问题解析解的MATLAB命令格式 int(f,x);对函数f作不定积分 int(f,x,a,b);对函数f在[a,b]上作定积分 int(int(f,x,a,b),y,c,d) OR int(int(f,y,c,d),x,a,b); 对函数f在[a,b]*[c,d]上做二重积分.其中a,b,c,d 可以是y或x的函数

第七节用MATLAB求级数的和及其实验

第七节 用MATLAB 求级数的和及其实验本节介绍用MATLAB 软件求级数的部分和,级数的和,判别级数的敛散性等的方法及其实验。

一、用MATLAB 求级数的部分和和级数的和symsum 是MATLAB 软件系统中符号求和(Symbolic summation )函数,它的调用格式和主要功能如下:调用格式一: symsum(S)其中S 为待求和的级数的通项表达式。

symsum(S)的功能是求出通项为S 的级数关于系统默认变量的有限和(例如n 从0到k-1的有限和)中含默认变量的部分(参见例1(2)S1和S2)。

如果不能确定系统默认变量,则可以用findsym(系统默认变量S) 命令来查询。

调用格式二: symsum(S,v)其中S 为待求和的级数的通项表达式,v 为求和变量。

symsum(S,v) 的功能是求出通项为S 的级数关于变量v 的有限和(例如v 从0到k-1的有限和)中含默认变量的部分(参见例1(3)S3和S4)。

如果不能确定自己所需的变量是系统默认变量,则需要在symsum 命令中加入求和变量的说明,格式为:symsum(S,v)调用格式三: symsum (S,a,b)或symsum (S,v,a,b)这种命令的功能是求从a 到 b 的级数的和。

其中b 可以取有限数,也可以取无穷(b=inf )。

此命令即可以用于求级数的部分和∑=nk k u 1,也可用于判别级数∑∞=1n nu 的收敛性。

【例1】求级数的下列部分和:(1) )5()1(1501+-+=∑n n xn n ;(2))sin()1(211k a kn k -∑-=)1,0(≠>a a ;(3) 23110m m n m +-=∑。

解(1)输入程序:>> syms n xS50= symsum((-1)^(n+1)*x/(n*(n+5)),n,1,50)运行后屏幕显示:S50 =16481582353306899727903/136874465604198187866000*x(2)输入程序:>> syms n aS1=symsum((-1)^n*a^2*sin(n))S2=symsum((-1)^n*a^2*sin(n),n,0,n-1)运行后屏幕显示:S1 =-1/2*(-1)^n*a^2*sin(n)+1/2*a^2*sin(1)/(cos(1)+1)*(-1)^n*cos(n)S2 =-1/2*(-1)^n*a^2*sin(n)+1/2*a^2*sin(1)/(cos(1)+1)*(-1)^n*cos(n)-1/2*a^2*sin(1)/(cos(1)+1)(3)输入程序: 23110m m n m +-=∑>> syms n mS3=symsum(3^(m+1)/2^m,m)S4=symsum(3^(m+1)/2^m,m,0,m-1)运行后屏幕显示:S3 =6*(3/2)^mS4 =6*(3/2)^m-6【例2】讨论下列级数的敛散性。

matlab function中调用级数求和函数

MATLAB中的函数调用是一种非常常见的操作,而在数学和工程中,级数求和也是一个非常重要的概念。

本文将针对MATLAB function 中调用级数求和函数进行深入探讨,并提供相关的解释和示例。

1. 级数求和函数概述在数学中,级数是指一串数的和,而级数求和则是对这串数进行求和的过程。

而在MATLAB中,我们可以通过编写函数来实现级数求和的计算。

具体来说,通过定义级数并编写对应的求和函数,我们可以在MATLAB中简洁、高效地进行级数求和的计算。

2. MATLAB中调用级数求和函数的基本步骤要在MATLAB中调用级数求和函数,首先需要定义级数并确立求和的规则。

我们可以编写一个对应的求和函数,将之前定义的级数作为输入,然后在函数中实现求和的计算。

我们可以在MATLAB的主程序中调用这个求和函数,并传入具体的级数进行求和计算。

3. 示例:使用MATLAB实现级数求和为了更具体地说明如何在MATLAB中调用级数求和函数,我们以简单的等比数列求和为例进行说明。

我们需要定义等比数列的前n项和公式:Sn = a1 * (1 - r^n) / (1 - r),其中a1为首项,r为公比,n为项数。

我们可以编写一个MATLAB函数来实现对等比数列求和的计算:```matlabfunction sum = geometricSeriesSum(a1, r, n)sum = a1 * (1 - r^n) / (1 - r);end```在主程序中,我们可以调用这个函数,并传入具体的等比数列参数进行求和计算,比如:```matlaba1 = 2;r = 0.5;n = 10;result = geometricSeriesSum(a1, r, n);disp(['The sum of the geometric series is: ', num2str(result)]); ```通过这个示例,我们可以看到如何在MATLAB中定义并调用级数求和函数,实现对等比数列的求和计算。

实验7-无穷级数与非线性方程求解(MATLAB)教程文件


3
12
854.452
1
388
4
15
239.527
1
107
5
18
67.0412
1
30.8
6
21
16.7042
1
9.05
7
24
2.42788
1
2.26
8
27
0.032658
0.759511 0.206
9
30
7.03149e-006 0.111927 0.00294
10
33
3.29525e-013 0.00169132 6.36e-007
数学实验
例1) 求
111... 1
23
10
(1) 利用symsum处理 >>syms x >> symsum(1/x,1,10) ans = 7381/2520 >> 7381/2520 ans =
2.9290
(2) 编程建立M文件计算
s=0; %累加变量置初值 for i=1:10
s=s+1/i; end disp('1+1/2+1/3+...+1/10=') s
3、 在Matlab中, solve采用符号解法求非线性方程(组), 调用格式为: solve(f,t) 对f中的符号变量t解方程f=0 (t缺省时设定为x或 最接近x的字母), 该命令为符号计算 solve(‘f=g’,t) 对符号变量t解方程f=g (t缺省时设定为x或 最接近x的字母), 该命令为符号计算
数学实验
1) 解方程 cos2x+sinx=1 (在最小正周期内求解) 先将方程化为cos2x+sinx-1=0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七m a t l a b求解级数有关计算实验七 matlab 求解级数有关计算1.级数的基本概念常数项级数:称用加号将数列na 的项连成的式子+++++n a a a a 321为(常数项)无穷级数,简记为∑∞=1n na。

称级数∑∞=1n na前n 项构成的和∑==++++=nk kn n a a a a a S 1321为级数的部分和。

若SS n n =∞→lim ,则称级数∑∞=1n na收敛,其和为S 。

Taylor 级数:设函数)(x f 在包含a x =的区域内具有各阶导数,则称幂级数+-++-+-+=-∑∞=n n n n n a x n a f a x a f a x a f a f a x n a f )(!)()(!2)())((')()(!)()(2)2(0)(为函数)(x f 在a x =的Taylor 级数,当0=a 时称为Maclaurin(麦克劳林)级数。

2.级数的MATLAB 命令MATLAB 中主要用symsum,taylor 求级数的和及进行Taylor 展开。

可以用help symsum, help taylor 查阅有关这些命令的详细信息例1 先用taylor 命令观测函数x y sin =的Maclaurin 展开式的前几项,例如观测前6项, 相应的MATLAB 代码为:>>clear; syms x; >>taylor(sin(x),0,1) >>taylor(sin(x),0,2) >>taylor(sin(x),0,3) >>taylor(sin(x),0,4) >>taylor(sin(x),0,5) >>taylor(sin(x),0,6)结果为:ans =0ans =x ans =xans =x-1/6*x^3 ans =x-1/6*x^3ans =x-1/6*x^3+1/120*x^5然后在同一坐标系里作出函数x y sin =和它的Taylor 展开式的前几项构成的多项式函数,,!5!3,!3,533 x x x y x x y x y +-=-==的图形,观测这些多项式函数的图形向x y sin =的图形的逼近的情况。

例如,在区间],0[π上作函数xy sin =与多项式函数!5!3,!3,533x x x y x x y x y +-=-==图形的MATLAB 代码为: >>x=0:0.01:pi; y1=sin(x); y2=x; y3=x-x.^3/6; y4=x-x.^3/6+ x.^5/120;>>plot(x,y1,x,y2,’:’,x,y3, ’:’,x,y4,’:’)结果如图3.1,其中实线表示函数x y sin =的图形。

图3.1 x y sin =的泰勒级数类似地,根据函数的Taylor 级数).1,1(,!2)1(1)1(],1,1(,432)1ln(),,(,!3!21),,(,!6!4!21cos 243232642-∈+-++=+-∈+-+-=++∞-∞∈++++=+∞-∞∈+-+-=x x x x x x x x x x x x x x e x x x x x xαααα作图观测其展开式的前几项多项式逼近原函数的情况。

例2 利用幂级数计算指数函数。

指数函数可展开为幂级数),,(,!!3!2132+∞-∞∈++++++=x n x x x x e nx其通项为x^n/prod(1:n),因此用下列循环相加就可计算出这个级数>>x=input('x='); n=input('n='); y=1; %输入原始数据,初始化y >>for i=1:n y=y+x^i/prod(1:i); end, vpa(y,10), %将通项循环相加,得y执行此程序,分别带入x=1,2,4,-4这四个数,取n=10,y 的结果如下2.718281801, 7.388994709, 54.44310406, .9671957672e-1而用vpa(exp(1),10), vpa(exp(2),10), vpa(exp(4),10), vpa(exp(-4),10)命令可得442,,,-e e e e 的10位精确有效数字为2.718281828, 7.389056099, 54.59815003, .1831563889e-1对照可知,用级数法计算的有效数字分别为8,4,2,0位。

由此可以看出,这个程序虽然原理上正确,但不好用。

对不同的x,精度差别很大。

其他存在的问题有:这个程序不能用于x 的元素群运算;当x 为负数时,它成为交错级数,收敛很慢;此程序要做22n 次乘法,n 很大时,乘法次数太多,计算速度很低;对不同的x,要取不同的n 才能达到精度要求,因此n 不应由用户输入,应该由软件按精度要求来选。

正对上面的四个问题,可以采用下面四种方法改进: (1)允许数组输入,改进输出显示x=input('x='); n=input('n='); y=ones(size(x)); %输入原始数据,初始化yfor i=1:ny=y+x.^i/prod(1:i); %循环相加s1=sprintf('%13.0f',i); s2=sprintf('%15.8f',y); %将结果变为字符串disp([s1,s2]) %显示end,执行此程序,输入x=[1 2 4 -4],n=10,结果为1 2.00000000 3.00000000 5.00000000 -3.000000002 2.50000000 5.00000000 13.00000000 5.0000 00003 2.66666667 6.33333333 23.66666667 -5.666666674 2.70833333 7.00000000 34.33333333 5.0000 00005 2.71666667 7.26666667 42.86666667 -3.533333336 2.71805556 7.35555556 48.55555556 2.1555 55567 2.71825397 7.38095238 51.80634921 -1.095238108 2.71827877 7.38730159 53.43174603 0.5301 58739 2.71828153 7.38871252 54.15414462 -0.1922398610 2.71828180 7.38899471 54.44310406 0.0967 1958(2)可以利用exp(-x)=1/exp(x)来避免交错级数的计算;(3)为了减少乘法次数,设一个中间变量z,它的初始值为z=ones(size(x)),把循环体中的计算与句改为y=y+z; z=x.*z/i;这样,求得的z就是z=x.^i/i!,于是每个循环只需做一次乘法,计算整个级数只需n次乘法。

按这种计算,y的初始值改为y=zeros(size(x))(4) 为了按精度选择循环次数,不该使用for循环,而用while语句,它可以设置循环的条件语句,通常可用y+z-y>tol,tol是规定的允许误差.只要相邻的两次y值之差大于tol,循环就继续进行,直到小于tol为止.当x较大时,exp(x)仍能很快收敛,还可以利用关系式kkxx))(exp()exp(,令x1=x/k.k通常取大于x而最接近x的2的幂,例如x=100,就取k=128,可以保证x1的绝对值小于1,这时级数收敛得很快..从练习中可以看出,n 取10时(即级数取10项)就能保证7位有效数,而128)1ex p(x 可以化成222))))1((ex p(( x x =,即exp(x1)的7次自乘,总共用17次乘法就可完成222))))128/100((ex p(()100ex p( =的计算,这既保证了精度,又提高了速度.例3 编写任意函数展开为各阶泰勒级数的程序,并显示其误差曲线.对于任意函数y=f(x),其泰勒展开式为).()(!)()(!2)())((')()()(2)2(x R a x n a f a x a f a x a f a f x f n n n +-++-+-+= 其中)(x R n 为余项,也就是泰勒展开式的误差.MATLAB 语句为>>fxs=input('输入y=f(x)的表达式','s'); %输入原始条件,fxs 是字符串 >>K=input('输入泰勒级数展开式的阶K'); >>a=input('展开的位置a='); >>b=input('展开的区间半宽度b=');>>x=linspace(a-b,a+b); %构成自变量数组,确定其长度和步长 >>lx=length(x); dx=2*b/(lx-1); >>y=eval(fxs); %求出y 的准确值>>subplot(1,2,1), plot(x,y,'.'), hold on %y 的准确值用点线绘出 %求出a 点的一阶导数,注意求导后数组长度减少1 >>Dy=diff(y)/dx; Dya(1)=Dy(round(lx-1)/2);>>yt(1,:)=y(round(lx/2))+Dya(1)*(x-a); %求y 的一阶泰勒展开,绘图 >>plot(x,yt(1,:)) >>for k=2:K>>Dy=diff(y,k)/(dx^k); Dya(k)=Dy(round(lx-k)/2); %求a 点k 阶导数>>yt(k,:)=yt(k-1,:)+Dya(k)/prod(1:k)*(x-a).^k; %求y 的k 阶导数>>plot(x,yt(k,:)); %绘图>>e(k,:)=y-yt(k,:); %求出yt 的误差 >>end>>title([fxs,'的各阶泰勒级数曲线']), %注意如何组成标注的字符串 >>grid, hold off, subplot(1,2,2)>>for k=1:K plot(x,e(k,:)), hold on, end %绘制误差曲线 >>title([fxs,'的各阶泰勒级数误差曲线']),grid,hold off执行此程序,输入fxs=cos(x),K=5,a=0.5,b=2,所得曲线见图3.2(又变为误差曲线).读者可以改变其坐标系范围以仔细观测最关心的部分,也可输入其他函数做验算,注意输入函数应符合元素群运算规则.图3.1 x y cos =的泰勒级数及误差曲线例4 计算级数.112∑∞=n n 的值,可用symsum 命令,相应的MATLAB 代码为:>>clear; syms k;>>simple(symsum(1/k^2,1,Inf)) %simple 求解最简形式,Inf 为无穷大结果为: ans =1/6*pi^2类似地可验证.9451,901616414ππ==∑∑∞=∞=n n n n可以猜想有,,2,1,1212 ==∑∞=k m n kkn kπ其中k m 是正整数,请验证.注:可用公式e n n =∑∞=0!1来计算e 的近似值。

相关文档
最新文档