预览加载中,请您耐心等待几秒...
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-1 temp=A(k-1)/B(k-1); B(k)=B(k)-temp*C(k-1); U(k)=U(k)-temp*U(k-1); end M(N)=U(N-1)/B(N-1); fork=N-2:-1:1 M(k+1)=(U(k)-C(k)*M(k+2))/B(k); end M(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-1 S(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.5000 0.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,基础不太扎实,编程过程比较繁琐,程序比较复杂,所以花了很多时间,最终在询问同学、认真翻阅教科书后完成了实验。往后的学习中我应该提高自己的操作能力,同时提高学习效率。 通过本次实验,让我对三次样条插值有一定的认识,能对结果进行分析,从图像分析得到信息,让我认识到插值的运用意义。