数学建模 插值.pptVIP

  • 4
  • 0
  • 约7.25千字
  • 约 44页
  • 2020-01-13 发布于湖北
  • 举报
Runge现象 问题的提出:根据区间[a,b]上给出的节点做插值多项式p(x)的近似值,一般总认为p(x)的次数越高则逼近f(x)的精度就越好,但事实并非如此。 反例: 在区间[-5,5]上的各阶导数存在,但在此区间上取n个节点所构成的Lagrange插值多项式在全区间内并非都收敛。 例1 取n=10,用Lagrange插值法进行插值计算。 x=[-5:1:5]; y=1./(1+x.^2); x0=[-5:0.1:5]; y0=lagrange(x,y,x0); y1=1./(1+x0.^2); %绘制图形 plot(x0,y0,--r) %插值曲线 hold on plot(x0,y1, -b) %原曲线 hold off 为解决Runge问题,引入分段插值。 2.2.3 埃尔米特插值 不少插值问题不仅要求在节点上函数值相等,而且要求在某些节点上对应的导数值甚至高阶导数值相等,这种插值问题称为Hermite插值。 样条函数的背景和定义 分段线性插值导数不连续; Hermite插值导数连续但需要已知; 本节讨论一种特殊类型的分段三次插 值,称为三次样条插值。 比拉格朗日插值多两个条件,二阶导 数连续。 注意: 1. yi=interp1(x,y,xi),默认为分段线性插值 2. yi=interp1(y,xi),在默认情况下,x变量选择为1:n,其中n是向量y的长度 Method方法中有以下特点: 1. nearest,最邻近插值方法。这种方法在已知数据的最邻近点设置插值点,对插值点的数值进行四舍五入,对超出范围的数据点返回NaN。这种方法速度最快,占用内存最小,但一般来说误差最大,插值结果最不光滑。 2. linear,分段线性插值。该方法采用直线将相邻的数据点相连,对超出范围的数据点返回NaN。这种方法在速度和误差之间取得了比较好的均衡,其插值函数具有连续性,但在已知数据点处的斜率一般都会改变,因此它不是光滑的。 3. spline,三次样条插值方法是所有插值方法中运行耗时最长的,其插值函数及插值函数的一阶、二阶导数函数都连续,因此它是最光滑的插值方法,占用内存比cubic方法小,但当已知数据点不均匀分布时可能会出现异常结果。 4. cubic三次多项式插值,该方法中插值函数及其一阶导数都是连续的,因此其插值结果也比较光滑,运算速度比spline方法稍快,但占用内存最多。 例3:对sin函数进行分段线性一维插值。 实验步骤: clear all x=0:2*pi; y=sin(x); xi=0:.2:2*pi; yi=interp1(x,y,xi); plot(x,y,ro,xi,yi); xlabel(‘数据’);ylabel(‘线性插值); 2.3.2 matlab中计算三次样条函数的命令 spline函数或pchip函数,二者的用法相同,函数默认非扭结边界条件为其边界条件。 命令格式为: yi=spline(x,y,xi) 其意义等同于yi=interp1(x,y,xi,‘spline) 例4:已知的数据点来自函数 根据生成的数据进行插值处理,得出较平滑的曲线 直接生成数据。 x=0:.12:1; y=(x.^2-3*x… +5).*exp(-5*x… ).*sin(x); plot(x,y,x,y,o) 调用interp1( )函数: x1=0:.02:1; y0=(x1.^2-3*x1+5).*exp(-5*x1).*sin(x1); y1=interp1(x,y,x1); y2=interp1(x,y,x1,cubic); y3=interp1(x,y,x1,spline); y4=interp1(x,y,x1,nearest); plot(x1,[y1,y2,y3,y4],:,x,y,o,x1,y0) 误差分析 [max(abs(y0(1:49) … -y2(1:49))), max(abs(y0-y3)), max(abs(y0-y4))] ans = 0.0177 0.0086 0.1598 命令 interp2 功能 二维数据内插值(表格查找) 格式1 ZI = interp2(X,Y,Z,XI,YI) %返回矩阵ZI,其元素包含对应于参量XI与YI(可以是向量、或同型矩阵)的元素。参量X与Y必须是单调的,且相同的划分格式,就像由命令meshgrid生成的一样。若Xi与Yi中有在X与Y范围之外的点,则相应

文档评论(0)

1亿VIP精品文档

相关文档