学习数学建模原理与应用【插值与拟合基本原理与编程实现】

主要内容
插值与拟合是数学建模中的一种基本的数据分析手段被公认为建模中的常用算法之一
学习了插值问题、插值原理、高次插值的Runge现象,中的一维和二维插值命令
拟合问题、拟合原理与步骤,然后介绍了的拟合计算 。
插值
上述问题可归结为“已知函数在某区间(域)内若干点处的值,求函数在该区间(域)内其它点处的值”,这种问题适宜用插值方法解决 。
一维插值问题可描述为: 已知函数在Xo, x1,···,xn处的值Yo, Y1,···, Yn,求简单函数p(x),使 p(xi) = yi通常取p(x)为多项式
可以用范德蒙行列式和克莱姆法则证明:
在x0,x1,xn处取值y0,y1,·yn的多项式存在且唯一,即插值问题的解唯一存在 。
常用的插值方法有插值法和插值法 。
拉格朗日插值法
拉格朗日插值公式(外文名指的是在节点上给出节点基函数,然后做基函数的线性组合,组合系数为节点函数值的一种插值多项式 。
高次插值的Runge现象(龙格现象)
插值多项式的次数越高,插值精度越高 。结论仅仅在插值多项式的次数不超过七时成立;插值多项式的次数超过七时,插值多项式会出现严重的振荡现象,称之为Runge现象 。
在实际中不应使用七次以上的插值 。
避免Runge现象的常用方法是: 将插值区间分成若干小区间,在小区间内用低次(二次,三次)插值,即分段低次插值,如样条函数插值 。
插值 1.一维插值
一维插值命令是,其基本格式为yi= (x,y,xi, ‘’).
x,y为已知点,xi,yi为被插值点和插值结果,x,y和xi,yi通常为向量;
’表示插值方法:
’-最邻近插值
‘’-线性插值
’-三次样条插值,
'cubic’一立方插值,
缺省为线性插值 。
三次样条插值编程应用
x=0:2:24;y=[12 9 9 10 18 24 28 27 25 20 18 15 13];x1=13;%插值点在13处yl=interp1(x,y,x1,'spline')%求出在该点的值xi=0:1/3600:24;yi=interp1(x,y,xi, 'spline');plot(x,y,'*',xi,yi)
在x=13处的值
所画出的图
三种插值法的比较
首先创建拉格朗日插值函数并命名为.m文件
函数代码如下
function y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;en
创建程序%拉格朗日插值,线性插值法和三次样条插值的比较
x0=[0 3 5 7 9 11 12 13 14 15 ];y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];x=0:0.1:15;y1=lagrange(x0,y0,x);%使用拉格朗日插值法y2=interp1(x0,y0,x);%使用一维插值命令的线性插值法y3=interp1(x0,y0,x,'spline');%使用一维插值命令的三次样条插值法subplot(3,1,1);plot(x0,y0,'k+',x,y1,'r');grid;%生成网格点title('lagrange');subplot(3,1,2);plot(x0,y0,'k+',x,y2,'r');grid;title('piecewise linear');subplot(3,1,3);plot(x0,y0,'k+',x,y3,'r');grid;title('spline');
运行结果
结果表明此处用三次样条插值法更好一些
【学习数学建模原理与应用【插值与拟合基本原理与编程实现】】2.二维插值
二维插值命令是,基本格式为zi=(x,y,z,xi,yi,‘’).二维插值命令的使用较复杂
x,y,z为已知插值点,z可以理解为被插值函数在(x,y)处的值;xi,yi为被插值点,zi为输出的插值结果,可理解为插值函数在(xi,yi)处的值;x,y为向量,xi,yi为向量或矩阵而z和zi则为矩阵 。
'’表示插值方法:
'’一最邻近插值,
‘’-双线性插值
‘’-双三次样条插值,
'cubic’双立方插值,
默认双线性插值 。