文档详情

分段线性插值与三次样条插值法解析.docx

发布:2017-01-24约2.47千字共8页下载文档
文本预览下载声明
实验报告实验项目插值法实验日期2016/9/30理论内容分段线性插值与三次样条插值授课日期2016/9/0实验室名称文理管203微机编号E1实验目的及要求:学会常用的插值方法,求函数的近似表达式,以解决其它实际问题;明确插值多项式和分段插值多项式各自的优缺点;熟悉插值方法的程序编制;如果绘出插值函数的曲线,观察其光滑性。实验内容:编写分段线性插值法及三次样条插值法通用子程序,依据数据表2.02.12.22.32.41.4142141.4491381.4833401.5165751.549193构造相应的插值多项式,并计算函数在的近似值。实验步骤及程序: 1、分段线性插值法流程图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) (x(i+1)=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、三次样条插值法流程图否4、三次样条插值法源程序function[yy, 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=A\B; for i=1:n-1 d(i)=(c(i+1)-c(i))/(3*dx(i)); b(i)=
显示全部
相似文档