资源描述:
《数值分析第五版计算实习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值分析计算实习题第二章2-1程序:clear;clc;x1=[0.20.40.60.81.0];y1=[0.980.920.810.640.38];n=length(y1);c=y1(:);forj=2:n%求差商fori=n:-1:jc(i)=(c(i)-c(i-1))/(x1(i)-x1(i-j+1));endendsymsxdfd;df(1)=1;d(1)=y1(1);fori=2:n%求牛顿差值多项式df(i)=df(i-1)*(x-x1(i-1));d(i)=c(i)*df(i);enddisp('4次牛顿插值多项式');P4=vpa(collect((s
2、um(d))),5)%P4即为4次牛顿插值多项式,并保留小数点后5位数pp=csape(x1,y1,'variational');%调用三次样条函数q=pp.coefs;disp('三次样条函数');fori=1:4S=q(i,:)*[(x-x1(i))^3;(x-x1(i))^2;(x-x1(i));1];S=vpa(collect(S),5)endx2=0.2:0.08:1.08;dot=[121112];figureezplot(P4,[0.2,1.08]);holdony2=fnval(pp,x2);x=x2(dot);y3=eval(P4);y4=fnval
3、(pp,x2(dot));plot(x2,y2,'r',x2(dot),y3,'b*',x2(dot),y4,'co');title('4次牛顿插值及三次样条');结果如下:4次牛顿插值多项式P4=-0.52083*x^4+0.83333*x^3-1.1042*x^2+0.19167*x+0.98三次样条函数x∈[0.2,0.4]时,S=-1.3393*x^3+0.80357*x^2-0.40714*x+1.04x∈[0.4,0.6]时,S=0.44643*x^3-1.3393*x^2+0.45*x+0.92571x∈[0.6,0.8]时,S=-1.6964*x^3+
4、2.5179*x^2-1.8643*x+1.3886x∈[0.8,1.0]时,S=2.5893*x^3-7.7679*x^2+6.3643*x-0.805714次牛顿插值曲线三次样条插值曲线输出图如下2-3(1)程序:clear;clc;x1=[01491625364964];y1=[012345678];%插值点n=length(y1);a=ones(n,2);a(:,2)=-x1';c=1;fori=1:nc=conv(c,a(i,:));endq=zeros(n,n);r=zeros(n,n+1);fori=1:n[q(i,:),r(i,:)]=deconv(c
5、,a(i,:));%wn+1/(x-xk)endDw=zeros(1,n);fori=1:nDw(i)=y1(i)/polyval(q(i,:),x1(i));%系数endp=Dw*q;symsxL8;fori=1:nL8(i)=p(n-i+1)*x^(i-1);enddisp('8次拉格朗日插值');L8=vpa(collect((sum(L8))),5)xi=0:64;yi=polyval(p,xi);figureplot(xi,yi,x1,y1,'r*');holdontitle('8次拉格朗日插值');结果如下:8次拉格朗日插值L8=-3.2806e-10*x
6、^8+6.7127e-8*x^7-5.4292e-6*x^6+0.00022297*x^5-0.0049807*x^4+0.060429*x^3-0.38141*x^2+1.3257*x输出图如下:第五章4-1(3)程序:clc;clear;y=@(x)sqrt(x).*log(x);a=0;b=1;tol=1e-4;p=quad(y,a,b,tol);fprintf('采用自适应辛普森积分结果为:%d',p);结果如下:采用自适应辛普森积分结果为:-4.439756e-01第九章9-1(a)程序:clc;clear;a=1;b=2;%定义域h=0.05;%步长n
7、=(b-a)/h;y0=1;%初值f=@(x,y)1/x^2-y/x;%微分函数Xn=linspace(a,b,n+1);%将定义域分为n等份Yn=zeros(1,n);%结果矩阵Yn(1)=y0;%赋初值%以下根据改进欧拉公式求解fori=1:nxn=Xn(i);xnn=Xn(i+1);yn=Yn(i);yp=yn+h*f(xn,yn);yc=yn+h*f(xnn,yp);yn=(yp+yc)/2;Yn(i+1)=yn;endXn=Yn;%以下根据经典四阶R-K法公式求解fori=1:nxn=Xn(i);yn=Yn(i);k1=f(xn,yn);k