《数值分析第二章MATLAB计算实验报告(共7页).docx》由会员分享,可在线阅读,更多相关《数值分析第二章MATLAB计算实验报告(共7页).docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数值分析MATLAB计算实验报告姓名 班级 学号 一、实验名称根据给定数据利用MATLAB编程做出4次牛顿插值与三次样条插值的插值函数与被插值函数图形二、实验目的1理解牛顿插值的定义并且编写出与其算法对应的MATLAB程序代码;2了解三次样条插值的构造方法并且编写出与其算法对应的MATLAB程序代码;3体会利用MATLAB软件进行数值计算 。三、实验内容已知函数在下列各点的值为:xi 0.20.40.6 0.8 1 .0 f(xi)0.980.920.810.640.38试用4次牛顿插值多项式P4(x)及三样条函数S(x)(自然边界条件)对数据进行插值。使用Matla
2、b 软件用图给出(xi,yi),xi=0.2+0.08i, i=0,1,11,10,P4(x)及S(x)四、算法描述1.牛顿插值公式:Pn(x)=f(x0)+fx0,x1(x-x0)+fx0,x1,x2(x-x0)(x-x1)+fx0,x1,xn(x-x0)(x-xn-1),当n=4时,将插值点xi及插值点对应的函数值f(xi)带入上式可得4次牛顿插值多项式。2.三次样条插值:使用三弯矩法,令,首先,以(xi,Mi),(xi-1,Mi-1)为结点作线性插值:,其中hi=xi-xi-1紧接着,连续积分两次:再利用插值条件然后利用s(x)在内结点连续的条件求Mi,s(xi-0)=s(xi+0) 得
3、最后,根据三条边界条件,求出的值。 五、程序流程图开始 S=0.0; p=1.0q=1.0;c1=1.0J=2Jnb=poly(X(j-1);q1=conv(q,b);c1=c1*j; q=q1;I=j 是A(i,j)=(A(i,j-1)-A(i-1,j-1)/(X(i)-X(i-j+1)In 是C=A(n,n); b=poly(X(n); q1=conv(q1,b)K=n-1K=k-1;k1 否C=conv(C,poly(X(k); d=length(C); C(d)=C(d)+A(k,k)L(k,:)=poly2sym(C);Q=poly2sym(q1);syms Mwcgs=M*Q/c1
4、; Cw=q1/c1;结束开始lambda(1)=1;A(1,1)=2;A(1,2)=lambda(1)H(1)=X(2)-X(1);mu(1)=1;D(1)=3*(Y(2)-Y(1)K=1knhk=X(k+1)-X(k);H(k+1)=hkH=H(2:n+1)K=1kn lambdak=H(k)/(H(k)+H(k+1); lambda(k+1)=lambdak;muk=1-lambda(k+1);mu(k)=muk;dk=3*(mu(k).*(Y(k+1)-Y(k). /H(k)+(lambda(k+1).*(Y(k+2)D(m)= 3*(Y(m)-Y(m-1)/H(m-1);mu(n)=
5、1; n;H;lambda;mu;Di=1 im-1A(i,i)=2;A(m,m)=2; A(i,i+1)=lambda(i); A(i+1,i)=mu(i); dY=AD;K=2kmsk=Y(k-1)*(H(k-1)-2*X(k-1)+2*x)*(x-X(k)2)/(H(k-1)3)+Y(k)*(H(k-1)+2*X(k)-2*x)*(x-X(k-1)2)/(H(k-1)3)+dY(k-1)*(x-X(k-1)*(x-X(k)2)/(H(k-1)2)+dY(k)*(x-X(k)*(x-X(k-1)2)/(H(k-1)2) 结束六、实验结果绿色:三次样条插值;红色:4次牛顿插值。七、实验结果分
6、析此实验通过牛顿插值多项式及三次样条函数对数据进行插值,得到相应的数据和图像,方便对数据进行分析。从图像中可以看出,三次样条插值函数曲线较牛顿插值函数在插值节点处光滑,插值收敛性好,误差小,使结果更加趋于精确。八、附录(程序)X=0.2 0.4 0.6 0.8 1.0;Y=0.98 0.92 0.81 0.64 0.38;p=Newton_polyfit(X,Y,5);Y2=polyval(p,X);X1=0:0.01:1;Y3=interp1(X,Y,X1,spline);plot(X,Y,o,X,Y2,b,X1,Y3,p)%Y2牛顿插值,Y3三次样条插值functionp=Newton_polyfit(X,Y)%X为拟合自变量%Y为拟合函数值%p为所得的拟合多项式系数format long gr=size(X);n=r(2);%n为要拟合的数据长度M=ones(n,n);M(:,1)=Y;for i=2:nfor j=i:nM(j,i)=(M(j,i-1)-M(j-1,i-1)/(X(j)-X(j-i+1);endendM%显示均差表p0=zeros(1,n-1) M(1,1);p=p0;for i=1:n-1p1=M(i+1,i+1).*poly(X(1:i);p0=zeros(1,n-i-1) p1;p=p+p0;end专心-专注-专业