资源描述:
《实验七 matlab求解级数有关计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验七 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点展为
2、n-1阶Taylor多项式可以用helpsymsum,helptaylor查阅有关这些命令的详细信息 例1先用taylor命令观测函数的Maclaurin展开式的前几项,例如观测前6项,相应的MATLAB代码为:>>clear;symsx;>>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=xans=xans=x-1/6*x
3、^3ans=x-1/6*x^3ans=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的泰勒级数类似地,根据函数的
4、Taylor级数作图观测其展开式的前几项多项式逼近原函数的情况。例2 利用幂级数计算指数函数。指数函数可展开为幂级数其通项为x^n/prod(1:n),因此用下列循环相加就可计算出这个级数>>x=input('x=');n=input('n=');y=1; %输入原始数据,初始化y>>fori=1:ny=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,.
5、9671957672e-1而用vpa(exp(1),10),vpa(exp(2),10),vpa(exp(4),10),vpa(exp(-4),10)命令可得的10位精确有效数字为2.718281828, 7.389056099, 54.59815003, .1831563889e-1对照可知,用级数法计算的有效数字分别为8,4,2,0位。由此可以看出,这个程序虽然原理上正确,但不好用。对不同的x,精度差别很大。其他存在的问题有:这个程序不能用于x的元素群运算;当x为负数时,它成为交错级数,收敛很慢;此程序要做次乘法,n很大时,乘法次数太
6、多,计算速度很低;对不同的x,要取不同的n才能达到精度要求,因此n不应由用户输入,应该由软件按精度要求来选。正对上面的四个问题,可以采用下面四种方法改进:(1)允许数组输入,改进输出显示x=input('x=');n=input('n=');y=ones(size(x)); %输入原始数据,初始化yfori=1:ny=y+x.^i/prod(1:i);%循环相加s1=sprintf('%13.0f',i);s2=sprintf('%15.8f',y);%将结果变为字符串disp([s1,s2]) %显示end,执行此程序,输入x=[124
7、-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
8、 5.00000000 5 2.71666667 7.26666667 42.86666667 -3.53333333 6