预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验7代数插值实验(2)成绩专业班级数学112学号姓名报告日期5.10.实验类型:●验证性实验○综合性实验○设计性实验实验目的:进一步熟练掌握spline(样条)插值算法,提高编程能力和解决插值问题的实践技能。实验内容:编写程序用计算机求解三次压紧样条曲线,经过点(0,0.0),(1,0.5),(2,2.0)和(3,1.5),而且一阶导数边界条件S’(0)=0.2和S’(3)=-1实验原理若已知N+1个点的及其一阶导数的边界条件S’(a)=和S’(b)=,则存在唯一的三次样条曲线。构造并求解下列线性方程组构造分段函数S(x):;;;实验说明需要建立两个数组X,Y分别存放(,…,,(,…,,建立两个变量dxo、dxn分别存放左右端点的一阶导数dxo=S'(x0),dxn=S'(xn),上述方程组中;实验步骤1要求上机实验前先编写出程序代码2编辑录入程序3调试程序并记录调试过程中出现的问题及修改程序的过程4经反复调试后,运行程序并验证程序运行是否正确。5记录运行时的输入和输出。实验总结实验报告:根据实验情况和结果撰写并递交实验报告。参考程序(MATLAB程序)①建立zhangyuecsfit.m文件,写入如下程序代码:functionS=zhangyuecsfit(X,Y,dx0,dxn)disp('')disp('Ifthereisanyproblem,pleaseconsultZhangYueforhelp!')N=length(X)-1;H=diff(X);D=diff(Y)./H;A=H(2:N-1);B=2*(H(1:N-1)+H(2:N));C=H(2:N);U=6*diff(D);B(1)=B(1)-H(1)/2;U(1)=U(1)-3*(D(1)-dx0);B(N-1)=B(N-1)-H(N)/2;U(N-1)=U(N-1)-3*(dxn-D(N));fork=2:N-1temp=A(k-1)/B(k-1);B(k)=B(k)-temp*C(k-1);U(k)=U(k)-temp*U(k-1);endM(N)=U(N-1)/B(N-1);fork=N-2:-1:1M(k+1)=(U(k)-C(k)*M(k+2))/B(k);endM(1)=3*(D(1)-dx0)/H(1)-M(2)/2;M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2;fork=0:N-1S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1));S(k+1,2)=M(k+1)/2;S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6;S(k+1,4)=Y(k+1);end②在commandwindow里按照如下操作,得到结果:>>X=[0123];>>Y=[00.52.01.5];>>dx0=0.2;>>dxn=-1;>>S=zhangyuecsfit(X,Y,dx0,dxn)S=0.4800-0.18000.20000-1.04001.26001.28000.50000.6800-1.86000.68002.0000③画出3次紧压样条插值的图像如下:>>x1=0:0.01:1;y1=polyval(S(1,:),x1-X(1));>>x2=1:0.01:2;y2=polyval(S(2,:),x2-X(2));>>x3=2:0.01:3;y3=polyval(S(3,:),x3-X(3));>>plot(x1,y1,x2,y2,x3,y3,X,Y,'.')实验总结:根据实验要求,编写了三次样条程序,求出已知数据的插值函数S(x)并同时做出插值拟合图像,方便观察与分析实验结果。实验过程中遇到的问题就是,做这次实验还得先复习matlab,基础不太扎实,编程过程比较繁琐,程序比较复杂,所以花了很多时间,最终在询问同学、认真翻阅教科书后完成了实验。往后的学习中我应该提高自己的操作能力,同时提高学习效率。通过本次实验,让我对三次样条插值有一定的认识,能对结果进行分析,从图像分析得到信息,让我认识到插值的运用意义。