- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
matlab实验数
实验三 级数
【实验目的】
1.了解级数的有关理论。
2.了解函数的Taylor展开式。
3.学习,掌握MATLAB软件中有关命令。
【实验内容】
1.求函数的级数,并考察其Taylor展开式的前几项构成的多项式函数的图形向的图形的逼近情况。
2.计算级数的值。
3.验证Euler公式。
【实验准备】
1.级数的基本概念。数项级数;Taylor级数。
2.级数的MATLIB命令。主要用symsum,taylor求级数的和及进行Taylor展开式。
【实验重点】
1、级数的计算
【实验难点】
1、无穷级数的计算
【实验方法与步骤】
练习1 先用Taylor命令观察函数Maclaurin展开式的前几项,若观察前6项,相应的MATLIB代码为
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)
运行结果为
taylor(sin(x),0,1)
ans =
0
taylor(sin(x),0,2)
ans =
x
taylor(sin(x),0,3)
ans =
x
taylor(sin(x),0,4)
ans =
x-1/6*x^3
taylor(sin(x),0,5)
ans =
x-1/6*x^3
taylor(sin(x),0,6)
ans =
x-1/6*x^3+1/120*x^5
然后在同一坐标系里作出函数和其Taylor展开式的前几项构成的多项式函数,的图形,观察这些多项式函数的图形向的图形逼近的情况。在区间上作函数与多项式函数图形的MATLIB代码为
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,其中实线表示函数的图形。
类似的,根据函数的Taylor级数
作图观察其展开式的前几项多项式函数逼近原函数的情况。
练习2 利用幂级数计算指数函数。指数函数可展开为幂级数
其通项为,因此用下列循环相加就可计算出这个级数。
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=0,得到结果如下:
2.718281801,7.388994709,54.9671957672e-1
用vpa(exp(1),10),vpa(exp(2),10),vpa(exp(4),10),vpa(exp(-4),10)命令可得?的有10位精确有效数字的结果为
2.718281828,7.389056099,54.1831563889e-1
对照可知,用级数法计算的有效数字分别为8,4,2,0位。
因此这个程序虽然原理上正确,但不适用。对不同的x,精度差别很大。还存在其它的问题:
这个程序不能用于x的元素群运算;当x为负数时,它成为交错级数,收敛很慢;该程序要做次乘法,n很大时,乘法次数太多,计算速度很低;对不同的x,要取不同的n才能达到精度要求,因此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(%13.0f,i);s2=sprintf(%15.8f,y);
%将结果变为字符串
disp([s1,s2])%显示
end,
执行此程序,输入x=[1 2 4 -4],n=10,结果为
1 2 3 5-3 2 2 513 5 3 2 623-5 4 2 734 5 5 2 742-3 6
文档评论(0)