matlab实验三级数
精品文档实验三级数【实验目的】1 .了解级数的有关理论。2 .了解函数的Taylor展开式。3 .学习,掌握MATLAB软件中有关命令。【实验内容】1 .求函数y=sinx的级数,并考察其Taylor展开式的前几项构成的多项式函数的图形向y=sinx的图形的逼近情况。2 .计算级数克的值。n=1n1 113.验证Euler公式C=lim(1+-+-+|+lnn)=0.5771。【实验准备】1 .级数的基本概念。数项级数;Taylor级数。2 .级数的MATLIB命令。主要用symsum,taylor求级数的和及进行Taylor展开式。【实验重点】1、级数的计算验实验难点】1、无穷级数的计算【实验方法与步骤】练习1先用Taylor命令观察函数y=sinxMaclaurin展开式的前几项,若观察前6项,相应的MATLIB代码为>>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)运行结果为>>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*xA3>>taylor(sin(x),0,5)ans=x-1/6*xA3>>taylor(sin(x),0,6)ans=x-1/6*xA3+1/120*xA5然后在同一坐标系里作出函数y=sinx和其Taylor展开式的前几335项构成的多项式函数y=x,y=x±,y=x-'+上,|,的图形,观察这些3!3!5!多项式函数的图形向y=sinx的图形逼近的情况。在区间0,n上作函数与多项式函数y=sinx图形的MATLIB代码为>>x=0:0.01:pi;>>y1=sin(x);y2=x;y3=x-x.A3/6;y4=x-x.A3/6+x.A5/120;>>plot(x,y1,x,y2,':',x,y3,':',x,y4,':')运行结果如图3.1,其中实线表示函数y=sinx的图形。类似的,根据函数的Taylor级数精品文档精品文档246,xxxcosx=1-一一-I,x(y,二)2!4!6!23nex=1x11|山,x(-二,二)2!3!n!234xxxln(1x)=x-I,x(-1,1234、£(:-1)2(1x)-=1+.wx-I,x-(-1,1)2!作图观察其展开式的前几项多项式函数逼近原函数的情况。练习2利用哥级数计算指数函数。指数函数可展开为哥级数23nex=1xIHIH,x(-二,二)2!3!n!2其通项为L,因此用下列循环相加就可计算出这个级数。2>>x=input('x=');n=input('n=');y=1;%输入原始数据,初始化y>>fori=1:ny=y+xAi/prod(1:i);end,vpa(y,10),%将通项循环相加,得y执行此程序,分别带入x=1,2,4,-4这四个数,取n=0,得到结果如下:2.7182818017388994709,54.44310406,.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为负数时,它成为交错2级数,收敛很慢;该程序要做1次乘法,n很大时,乘法次数太多,计算速度很低;对不同的x,要取不同的n才能达到精度要求,因此n不应由用户输入,应该由程序按精度要求来选。针对上面的四个问题,可以采用下面的四种方法改进:(1)允许数组输入,改进输出显示x=input('x=');n=input('n=');y=ones(size(x);%输入原始数据,初始化yfori=1:ny=y+x.N/prod(1:i);%循环相加s1=sprintf('%13.0f,i);s2=sprintf('%15.8f,y);%将结果变为字符串disp(s1,s2)%显示end,执行此程序输入x=124-4,n=10,结果为12.000000003.000000005.00000000-3.0000000022.500000005.0000000013.000000005.0000000032.666666676.3333333323.66666667-5.6666666742.708333337.0000000034.333333335.0000000052.716666677.2666666742.86666667-3.5333333362.718055567.3555555648.555555562.1555555672.718253977.3809523851.80634921-1.0952381082.718278777.3873015953.431746030.5301587392.718281537.3887125254.15414462-0.19223986102.718281807.3889947154.443104060.09671958可以利用exp(-x)=1/exp(x)来避免交错级数的计算。(3)为了减少乘法次数,设一个中间变量z,它的初始值为z=ones(sine(x),把循环体中的计算语句改为y=y+z;z=x.Az/i;这样,求得的z就是z=x.Ai/i,于是每个循环只需做一次乘法,计算整个级数只需n次乘法。按这种方法,y的初始值改为y=zeros(size(x)。(4)为了按精度选择循环次数,不应使用for循环,而用while语句,它可以设置循环的条件语句,通常可用y+z-y>tol,tol是规定的允许误差,只要相邻的两次y值之差大于tol,循环就继续进行,直到小于tol为止。当x较大时,exp(x)仍能很快收敛,还可以利用关系式exp(x)=(exp(工)k,令x1=x/k。k通常取大于x而接近x的2的哥,例P如x=100,就取k=128,可以保证x1的绝对值小于1,这时级数收敛的很快。从练习中可以看出,n取10时就能保证7位有效数字,而exp(x1)128可以化为x=(|(exp(x1)2)1|)2,即exp(x1)的7次自乘,总共享17次乘法就可完成?exp(100)=(川(exp(100/128)2)23)2的计算,既保证了精度,又提高了速度。【练习与思考】习题1用Taylor命令求出函数y=f(x)的Maclaurin展开式的前几项,然后在同一坐标系利作出函数y=f(x)和它的Maclaurin展开式的前几项构成的多项式函数的图形,观察这些多项式函数的图形向y=f(x)的图形的逼近情况。(1) f(x)=arcsinx;(2) f(x)=arctanx;,.2(3) f(x)=e;(4) f(x)=sin2x;x(5) f(x);1 一x(6) f(x)=ln(x+'1+x2)。2k习题2求当k=4,5,6,7,8时,公式£=J中mk的值njnmk精品文档