第一范文网 - 专业文章范例文档资料分享平台

王向东数学实验课本(可编辑)2-3

来源:用户分享 时间:2025/7/8 8:58:50 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验三 级数

【实验目的】

1. 了解级数的有关理论。 2. 了解函数的Taylor展开式

3.学习掌握MATLAB软件有关的命令。

【实验内容】

1. 求函数y?sinx的Taylor级数,并考察它的Taylor展开式的前几项构成的多项式函数

向y?sinx的图形的逼近的情况

2. 计算级数

?nn?1?12的值

3. 验证Euler公式C?lim(1?n??111?????lnn)?0.5771? 23n【实验准备】

1. 级数的基本概念

数项级数:称用加号将数列an的项连成的式子

a1?a2?a3???an??

为(常数项)无穷级数,简记为

?an?1?n。称级数

?an?1?n前n项构成的和

nSn?a1?a2?a3???an??ak

k?1为级数的部分和。若limSn?S,则称级数

n???an?1?n收敛,其和为S。

Taylor级数:设函数f(x)在包含x?a的区域内具有各阶导数,则称幂级数

?n?0?f(n)(a)f(2)(a)f(n)(a)n2(x?a)?f(a)?f'(a)(x?a)?(x?a)???(x?a)n??n!2!n!

为函数f(x)在x?a的Taylor级数,当a?0时称为Maclaurin(麦克劳林)级数。

2.级数的MATLAB命令

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

symsum(s,v,a,b) 表达式s关于变量v从a到b求和 taylor(f,a,n) 将函数f在a点展为n-1阶Taylor多项式 可以用help symsum, help taylor查阅有关这些命令的详细信息

【实验方法与步骤】

练习1 先用taylor命令观测函数y?sinx的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 =0 ans =x ans =x

ans =x-1/6*x^3 ans =x-1/6*x^3

ans =x-1/6*x^3+1/120*x^5

然后在同一坐标系里作出函数y?sinx和它的Taylor展开式的前几项构成的多项式函

x3x3x5,y?x??,?,的图形,观测这些多项式函数的图形向数y?x,y?x?3!3!5!y?sinx的图形的逼近的情况。例如,在区间[0,?]上作函数y?sinx与多项式函数

x3x3x5y?x,y?x?,y?x??图形的MATLAB代码为:

3!3!5!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,其中实线表示函数y?sinx的图形。

1.510.5001234 图3.1 y?sinx的泰勒级数

类似地,根据函数的Taylor级数

x2x4x6cosx?1?????,x?(??,??),2!4!6!x2x3xe?1?x????,x?(??,??),2!3!

234xxxln(1?x)?x?????,x?(?1,1],234?(??1)2(1?x)??1??x?x??,x?(?1,1).2!作图观测其展开式的前几项多项式逼近原函数的情况。

练习2 利用幂级数计算指数函数。指数函数可展开为幂级数

x2x3xne?1?x???????,x?(??,??),

2!3!n!x其通项为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)命令可得e,e,e,e的10位精确有效数字为

2.718281828, 7.389056099, 54.59815003, .1831563889e-1

对照可知,用级数法计算的有效数字分别为8,4,2,0位。

由此可以看出,这个程序虽然原理上正确,但不好用。对不同的x,精度差别很大。其他存在的问题有:

这个程序不能用于x的元素群运算;当x为负数时,它成为交错级数,收敛很慢;此

24?4n2程序要做次乘法,n很大时,乘法次数太多,计算速度很低;对不同的x,要取不同的n

2才能达到精度要求,因此n不应由用户输入,应该由软件按精度要求来选。

正对上面的四个问题,可以采用下面四种方法改进: (1)允许数组输入,改进输出显示

x=input('x='); n=input('n='); y=ones(size(x)); %输入原始数据,初始化y for i=1:n

y=y+x.^i/prod(1:i); %循环相加

s1=sprintf('.0f',i); s2=sprintf('.8f',y); %将结果变为字符串 disp([s1,s2]) %显示 end,

执行此程序,输入x=[1 2 4 -4],n=10,结果为

1 2.00000000 3.00000000 5.00000000 -3.00000000 2 2.50000000 5.00000000 13.00000000 5.00000000 3 2.66666667 6.33333333 23.66666667 -5.66666667 4 2.70833333 7.00000000 34.33333333 5.00000000 5 2.71666667 7.26666667 42.86666667 -3.53333333 6 2.71805556 7.35555556 48.55555556 2.15555556 7 2.71825397 7.38095238 51.80634921 -1.09523810 8 2.71827877 7.38730159 53.43174603 0.53015873 9 2.71828153 7.38871252 54.15414462 -0.19223986 10 2.71828180 7.38899471 54.44310406 0.09671958

(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)仍能很快收敛,还可以利用关系式exp(x)?(exp()),令x1=x/k.k通常取大于x而最接近x的2的幂,例如x=100,就取k=128,可以保证x1的绝对值小于1,这时级数收敛得很快..从练习中可以看出,n取10时(即级数取10项)就能保证7位有效数,而

xkkexp(x1)128可以化成x?(?((exp(x1))2)2?)2,即exp(x1)的7次自乘,总共用17次乘法就可

完成exp(100)?(?((exp(100/128)))?)的计算,这既保证了精度,又提高了速度. 练习3 编写任意函数展开为各阶泰勒级数的程序,并显示其误差曲线.对于任意函数y=f(x),其泰勒展开式为

222f(2)(a)f(n)(a)2f(x)?f(a)?f'(a)(x?a)?(x?a)???(x?a)n?Rn(x).

2!n!其中Rn(x)为余项,也就是泰勒展开式的误差.MATLAB语句为

搜索更多关于: 王向东数学实验课本(可编辑)2-3 的文档
王向东数学实验课本(可编辑)2-3.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9jsj47iga30wk4t3w2k7_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top