从例题出发
1. 用线性插值,抛物插值,高阶插值法解f(0.6), f(0.8),f(1.0)
其中已知正弦函数表:
xk | 0.5 | 0.7 | 0.9 | 1.1 | 1.3 | 1.5 | 1.7 | 1.9 |
sinxk | 0.4794 | 0..6442 | 0.7833 | 0.8912 | 0.9636 | 0.9975 | 0.9917 | 0.9463 |
2. 用线性插值,抛物插值,高阶插值法解f(0.78),并根据5阶差分估计4阶公式的误差
其中已知:
x | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 |
lnx | -0.916291 | -0.693147 | -0.510826 | -0.357765 | -0.223144 | -0.105361 |
再介绍算法
使用线性插值是指插值函数为一次多项式的插值方式,其在插值节点上的插值误差为零。线性插值相比其他插值方式,如抛物线插值,具有简单、方便的特点。线性插值的几何意义即为利用过两个已知点的直线来近似表示原函数。线性插值可以分为单线性插值和双线性插值,前者是在一维方向上进行插值,后者是在二维方向上进行插值。线性插值的计算公式为:
其中,(x0,y0)和(x1,y1)是已知的两个插值节点,x是待求的插值点的横坐标,y是待求的插值点的纵坐标。
抛物插值是指插值函数为二次多项式的插值方式,其在插值节点上的插值误差为零。抛物插值相比线性插值,具有更高的精度和平滑性。抛物插值的几何意义即为利用过三个已知点的抛物线来近似表示原函数。抛物插值的计算公式为:
其中,(x0,y0),(x1,y1)和(x2,y2)是已知的三个插值节点,x是待求的插值点的横坐标,y待求的插值点的纵坐标。
高阶插值是指插值函数为高次多项式的插值方式,其在插值节点上的插值误差为零。高阶插值相比抛物插值,具有更高的精度和灵活性,但也可能产生Runge现象,即在插值区间的边缘处出现较大的振荡。高阶插值的几何意义即为利用过多个已知点的高次曲线来近似表示原函数。高阶插值的计算公式为:
其中,(xi,yi)是已知的n+1个插值节点,x是待求的插值点的横坐标,y是待求的插值点的纵坐标,li(x)是拉格朗日基函数
由递推公式得到插值误差的近似值:
代码的实现
x1 = [0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9];
y1 = [0.4794 0.6442 0.7833 0.8912 0.9636 0.9975 0.9917 0.9463];
x2 = [0.4 0.5 0.6 0.7 0.8 0.9];
y2 = [-0.916291 -0.693147 -0.510826 -0.357765 -0.223144 -0.105361];
f11 = interp1(x1,y1,0.6,"linear")
f12 = interp1(x1,y1,0.8,"linear")
f13 = interp1(x1,y1,1.0,"linear")
f21 = polyval(polyfit(x1,y1,2),0.6)
f22 = polyval(polyfit(x1,y1,2),0.8)
f23 = polyval(polyfit(x1,y1,2),1.0)
f31 = lagra(x1,y1,0.6)
f32 = lagra(x1,y1,0.8)
f33 = lagra(x1,y1,1.0)
f_1 = interp1(x2,y2,0.78,"linear")
f_2 = polyval(polyfit(x2,y2,2),0.78)
f_3 = lagra(x2,y2,0.78)
%拉格朗日插值 高阶插值
function y = lagra(x0,y0,x)
n = length(x0);
m = length(x);
for i = 1 : m
z = x(i);
s = 0;
for k = 1 : n
p = 1;
for j = 1 : n
if j ~= k
p = p * (z-x0(j))/(x0(k)-x0(j));
end
end
s = p * y0(k) + s;
end
y(i) = s;
end
end
输出的结果
小小的总结
线性插值是最简单和方便的插值方法,但其精度和平滑性较低,只适用于数据变化较缓和的情况;抛物插值是一种较高精度和平滑性的插值方法,但其需要三个插值节点,且可能出现过拟合的现象,只适用于数据变化较平滑的情况;高阶插值是一种最高精度和灵活性的插值方法,但其需要多个插值节点,且可能出现Runge现象,即在插值区间的边缘处出现较大的振荡,只适用于数据变化较复杂的情况。
插值方法的选择应该根据数据的特点和要求进行,不同的插值方法有不同的适用范围和局限性,没有一种插值方法是万能的。插值误差的大小受到多方面的影响,如插值函数的形式,插值节点的分布,插值点的位置,原函数的性质等。插值误差的改善措施有多种,如增加插值节点的数量,改变插值节点的分布,采用分段插值或样条插值等。