已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告实验项目插值法实验日期2016/9/30理论内容分段线性插值与三次样条插值授课日期2016/9/0实验室名称文理管203微机编号E1实验目的及要求:1、 学会常用的插值方法,求函数的近似表达式,以解决其它实际问题;2、 明确插值多项式和分段插值多项式各自的优缺点;3、 熟悉插值方法的程序编制;如果绘出插值函数的曲线,观察其光滑性。实验内容:编写分段线性插值法及三次样条插值法通用子程序,依据数据表2.02.12.22.32.41.4142141.4491381.4833401.5165751.549193构造相应的插值多项式,并计算函数在的近似值。实验步骤及程序: 1、分段线性插值法流程图是否是输入xi,yi,i=1,n及xia1,ibnib-ia1?imia+ib2的整数部分xmx?iaimibim执行求拉格朗日插值的程序,计算以ia,ib为节点的线性插值函数在插值点的函数值P1x输出p1(x)否2、分段线性插值法源程序:function f = fenduan(,)x=2.0 2.1 2.2 2.3 2.4;y=1.414214 1.449138 1.483340 1.516575 1.549193;y_1=0.5*y.(-0.5);x0=2.15;f = 0.0;if(length(x) = length(y) if(length(y) = length(y_1) n = length(x); elsedisp(y和y的导数的维数不相等!); return; endelsedisp(x和y的维数不相等!); return;end for i=1:n if(x(i)=x0) index = i; break; endend h = x(index+1) - x(index); fl = y(index)*(1+2*(x0-x(index)/h)*(x0-x(index+1)2/h/h + . y(index+1)*(1-2*(x0-x(index+1)/h)*(x0-x(index)2/h/h; f = fl; 3、三次样条插值法流程图是输入数据flagflag=1?flag=2?flag=3?输出失败信息执行子程序“第一类边界下的样条三次插值”执行子程序“第二类边界下的样条三次插值”执行子程序“第三类边界下的样条三次插值”是是否否否4、三次样条插值法源程序functionyy, b, c, d=spline3(,)%三次样条插值函数 %(x,y)为插值节点,xx为插值点;%flag表端点边界条件类型:%flag=0:自然样条(端点二阶导数为0);%flag=1:第一类边界条件(端点一阶导数给定);%flag=2:第二类边界条件(端点二阶导数给定);%vl,vr表左右端点处的在边界条件值。 %样条函数为:Si(x)=yi+bi*(x-xi)+ci*(x-xi)2+di*(x-xi)3%b,c,d分别为各子区间上的系数值%yy表插值点处的函数值.x=2.0 2.1 2.2 2.3 2.4;y=1.414214 1.449138 1.483340 1.516575 1.549193;xx=2.15;flag=0;vl=2.0;vr=2.4;if length(x)=length(y)n=length(x);a=zeros(n-1,1); b=a;d=a;dx=a;dy=a;A=zeros(n);B=zeros(n,1);endfor i=1:n-1a(i)=y(i);dx(i)=x(i+1)-x(i);dy(i)=y(i+1)-y(i);endfor i=2:n-1 A(i,i-1)=dx(i-1); A(i,i)=2*(dx(i-1)+dx(i); A(i,i+1)=dx(i); B(i,1)=3*(dy(i)/dx(i)-dy(i-1)/dx(i-1);end%自然样条端点条件(端点二阶导数为零)%if flag=0; A(1,1)=1; A(n,n)=1;end%-%端点一阶导数条件%if flag=1 A(1,1)=2*dx(1); A(1,2)=dx(1); A(n,n-1)=dx(n-1); A(n,n)=2*dx(n-1); B(1,1)=3*(dy(1)/dx(1)-vl); B(n,1)=3*(vr-dy(n-1)/dx(n-1);end%-%端点二阶导数条件%if flag=2 A(1,1)=2; A(n,n)=2; B(1,1)=vl; B(n,1)=vr;end%-%c=AB; for i=1:n-1 d(i)=(c(i+1)-c(i)/(3*dx(i); b(i)=dy(i)/dx(i)-dx(i)*(2*c(i)+c(i+1)/3;endmm,nn=size(xx);yy=zeros(mm,nn);for i=1:mm*nn for ii=1:n-1 if xx(i)=x(ii) & xx(i)x(ii+1) j=ii; break; elseif xx(i)=x(n) j=n-1; end end yy(i)=a(j)+b(j)*(xx(i)-x(j)+c(j)*(xx(i)-x(j)2+d(j)*(xx(i)-x(j)3;endend结果分析与讨论:运用MATLAB分别对分段线性插值和三次样条插值进行编程的到数值均为1.4664说明实验结果准确无误,通过实验可以得出,在低阶方程的求解中,两种方法均能精确的得到近似解,但是在高阶方程的求解中三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论