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

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验七matlab求解级数有关计算.

实验七 matlab求解级数有关计算 ??? 1.级数的基本概念 常数项级数:称用加号将数列的项连成的式子 为(常数项)无穷级数,简记为。称级数前项构成的和 为级数的部分和。若,则称级数收敛,其和为。 Taylor级数:设函数在包含的区域内具有各阶导数,则称幂级数 为函数在的Taylor级数,当时称为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命令观测函数的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 然后在同一坐标系里作出函数和它的Taylor展开式的前几项构成的多项式函数的图形,观测这些多项式函数的图形向的图形的逼近的情况。例如,在区间上作函数与多项式函数图形的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,其中实线表示函数的图形。 图3.1 的泰勒级数 类似地,根据函数的Taylor级数 作图观测其展开式的前几项多项式逼近原函数的情况。 例2 ????? 利用幂级数计算指数函数。指数函数可展开为幂级数 其通项为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 .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??? 5?? 13??? 5??????????? 3???? 2??? 6?? 23?? -5??????????? 4???? 2??? 7.0000000

文档评论(0)

sfkl + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档