数值分析实验(2014,9,16~10,28)信计1201班,人数34人数学系机房数值分析计算实习报告册专业学号姓名2014~2015年第一学期实验一 数值计算的工具 Matlab1.解释下MATLAB 程序的输出结果 程序: t=0.1 n=1:10 e=n/10-n*te 的结果:0 0 -5.5511e-017 0 0 -1.1102e-016 -1.1102e-016 0 0 0 2.下面MATLAB 程序的的功能是什么? 程序:x=1;while 1+x>1,x=x/2,pause(0.02),end 用迭代法求出x=x/2,的最小值x=1;while x+x>x,x=2*x,pause(0.02),end 用迭代法求出x=2*x,的值,使得2x>X x=1;while x+x>x,x=x/2,pause(0.02),end 用迭代法求出x=x/2,的最小值,使得2x>X3.考虑下面二次代数方程的求解问题02=++c bx ax公式a acb b x 242-+-=是熟知的,与之等价地有ac b b c x 422-+-=,对于1,100000000,1===c b a ,应当如何选择算法。
应该用aacb b x 242-+-=计算,因为b 做分母4.函数)sin(x 有幂级数展开...!7!5!3sin 753+-+-=x x x x x利用幂级数计算x sin 的MATLAB 程序为function s=powersin(x) s=0; t=x; n=1;while s+t~=s; s=s+t ;t=-x^2/((n+1)*(n+2))*t ; n=n+2; end t1=cputime; pause(10); t2=cputime; t0=t2-t1(a)解释上述程序的终止准则。
当s+t=s ,终止循环。
(b)对于2/21,2/11,2/πππ=x 计算的进度是多少?分别计算多少项? X=pi/2时,s =1.0000 x=11pi/2时,s=-1.0000 x=21pi/2时,s =0.9999 Cputime 分别是0.1563 0.0469 0.01565.考虑调和级数∑∞=11n n,它是微积分中的发散级数,在计算机上计算该级数的部分和,会得到怎么样的结果,为什么?function s=fun(n) s=0; t=1/n;for i=1:n s=s+1/i; end当n=100时s =5.1874 当n=80时s =4.9655 当n=50时,s =4.4992 当n=10时,s =2.92906.指数函数的级数展开...!3!2132++++=x x x e x,如果对于0<x ,用上述的级数近似计算指数函数的值,这样的算法结果是否会好,为什么?function s=powerexp(x) s=1; n=1; t=1;while s+t~=s;t=(x^n)/factorial(n); s=s+t; n=n+1; end当x=-1时,s =0.3679 当x=-2时,s =0.1353 当x=-3时,s =0.04987.考虑数列n i x i ,...2,1,=,它的统计平均定义为∑==ni i x n x 11,标准差2121)(11⎥⎦⎤⎢⎣⎡--=∑=x x n n i i σ数学上等价于21221)(11⎥⎥⎦⎤⎢⎢⎣⎡--=∑=x n x n n i i σ作为标准差的两种算法,你将如何评价他们的得与失。
clc,clear x=randn(1,10000); n=length(x); a=sum(x)/n;y1=sqrt(sum((x-a).^2)/(n-1)); y2=sqrt((sum(x.^2)-n*a^2)/(n-1)); y1,y2 后面的公式更好改变m 的值求出不同个数x 标准差 ,没有好大差别实验二 插值法计算实习题1.已知函数在下列个点的值为试用4次插值多项式(x)p 4及三次样条插值S(x)(自然边界条件)对数据进行插值。
用图给出0,1,11,10}i 0.08i,0.2x ),y ,{(x i i i =+=,(x)p 4及S(x)。
function f=lagfun(x) a=[0.2,0.4,0.6,0.8,1.0];b=[0.98,0.92,0.81,0.64,0.38]; for i=1:5 L(i)=1; for j=1:5 if j~=iL(i)=L(i)*(x-a(j))/(a(i)-a(j)); end end end f=0;for i=1:5f=f+L(i)*b(i); end执行文件x0=[0.2,0.4,0.6,0.8,1.0];y0=[0.98,0.92,0.81,0.64,0.38]; plot(x0,y0,'o') hold on grid onfplot('lagfun',[0,1]);hold on x=0:0.1:1;plot(x,newton(x0,y0,x),'r');三次样条插值:x=[0.2,0.4,0.6,0.8,1.0];y=[0.98,0.92,0.81,0.64,0.38]; x1=0.2:0.08:1;y1=interp1(x,y,x1,'spline') plot(x1,y1)0.20.30.40.50.60.70.80.910.40.50.60.70.80.912.在区间[-1,1]上分别取20,12=n 用两组等距节点对龙格函数22511)(xx f +=作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及)(x f 的图形。
拉格朗日插值:function y=lagrl(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end再做12和20等距结点插值for n=12:8:20x=-1:0.01:1;y=1./(1+25.*x.^2);z=0*x;x0=-1:2/(n-1):1;y0=1./(1+25.*x0.^2);y1=lagrl(x0,y0,x);plot(x,z,'r',x,y,'k:',x,y1,'r') gtext(['Lagr.',num2str(n)])hold onendtitle('Lagrange')legend('Lagr插值','f(x)图象')图象3.下列数据点的插值可以得到平方根函数的近似值,在区间[0,64]上作图。
(1)用这九个点作8次多项式插值8(x)L .(2)用三次样条(第一边界条件)程序求从得到结果看在[0,64]上,哪个插值更精确;在区间[0,10]上,两种插值哪个更精确?(1)多项式插值x=[0,1,4,9,16,25,36,49,64];y=[0,1,2,3,4,5,6,7,8];a=polyfit(x,y,length(x)-1)poly2sym(a)答案-0.0000 0.0000 -0.0000 0.0002 -0.0050 0.0604 -0.3814 1.3257 -0.0000L(x)=-6345667567529957/19342813113834066795298816*x^8+5071957851450983/75557863725914323419136*x^7-3204839575550849/590295810358705651712*x^6+8226197088139413/36893488147419103232*x^5-717795609662967/1441151 88075855872*x^4+2177199843684719/36028797018963968*x^3-3435436202510413/9007199254740992*x^2+5970618836686703/4503599627370496*x-769670242 1972085/2475880078570760549798248448画图x0=[0,1,4,9,16,25,36,49,64];y0=sqrt(x);plot(x0,y0,'r-')hold onx=[0,1,4,9,16,25,36,49,64];y=[0,1,2,3,4,5,6,7,8];xx=0:0.1:64;yy=polyval(a,xx);plot(xx,yy,'b')hold on(3)三次样条x=[0,1,4,9,16,25,36,49,64]; y=[0,1,2,3,4,5,6,7,8];x1=0:0.1:64;y1=interp1(x,y,x1,'spline') plot(x,sqrt(x),'r-')hold onhold on实验三 函数逼近与快速傅立叶变换1. 对于给函数21(x)125f x=+在区间[-1,1]上去10.2(i 1,2,,10)i x i =-+= ,试求3次曲线拟合,试画出拟合曲线并打印方程,与实验二,第二章的计算实习题2的结果比较。
首先求出拟合曲线 x=-1:0.2:1;y=1./(25*x.^2+1); p=polyfit(x,y,3)得出-1.6723e-016 -5.7518e-001 1.4919e-017 4.8412e-001 Y=-0.5752x^2+0.4814再输入x1=-1:0.01:1;y1=polyval(p,x1);plot(x,y,'--*',x1,y1),grid-1-0.8-0.6-0.4-0.200.20.40.60.81 2.由实验给出数据表试求3次,4次多项式的曲线拟合,再根据数据曲线图形,求一个另外函数的拟合曲线,用图示数据曲线及相应的三种拟合曲线。
先输入代码x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];y=[1.0 0.41 0.5 0.61 0.91 2.02 2.46];p3=polyfit(x,y,3)p4=polyfit(x,y,4) z=[0.0:0.1:1.0]; y3=polyval(p3,z); y4=polyval(p4,z);plot(x,y,'b',z,y3,'r',z,y4,'g')结果-6.6221e+000 1.2815e+001 -4.6591e+000 9.2659e-0012.8853e+000 -1.2335e+001 1.6275e+001 -5.2987e+000 9.4272e-00100.10.20.30.40.50.60.70.80.910.511.522.5实验四 数值微分与数值积分1.用不同数值分析方法计算积分049xdx =-⎰,(1) 取不同步长h 。