插值计算
本博客主要是插值计算在matlab中的算法实现,插值的实现包括以下几种:
- 线性插值
- 二次插值
- 三次插值
代码见下方
算法实现
- 已知 sin(0.32)=0.314567,sin(0.34)=0.333487,sin(0.36)=0.352274,sin(0.38)=0.370920。请采用线性插值、二次插值、三次插值分别计算 sin(0.35)的值。
设计思路
- 设计一个通用函数,根据输入的参数的不同(即输入的散点数的不同)决定做哪一种的插值计算。x则为要求的点的x值。
- 线性插值需要两个散点,这里用靠近0.35的两个点0.34跟0.36作为样本进行计算
- 二次插值需要三个点,由于没法得出最近的三个点,因此分别采用0.32、0.34、0.36三个点跟0.34、0.36、0.38三个点进行计算
- 三次插值需要四个点,题目提供的散点数刚好满足要求
数值结果
线性插值
二次插值的两种取点方式
三次插值
实现代码:
function result = insert(x0, y0, x)
n = length(x0);
result = 0.0;
for k = 1:n
w = 1.0;
p = 1.0;
for m = 1:n
if m ~= k
w = w*(x - x0(m));
p = p*(x0(k) - x0(m));
end
end
result = result + y0(k)*(w/p);
end
end