1.原理
拉格朗日插值的核心思想是利用已知数据点的函数值来构建一个多项式函数,使得该函数通过所有已知数据点。具体而言,给定一个包含
n
n
n个数据点的集合
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi),找到一个多项式
P
(
x
)
P(x)
P(x):
P
(
x
)
=
∑
i
=
0
n
y
i
⋅
ℓ
i
(
x
)
ℓ
i
(
x
)
=
∏
j
=
i
n
x
−
x
j
x
i
−
x
j
P(x)=\sum_{i=0}^ny_i\cdot\ell_i(x) \\ \ell_i(x)=\prod_{j=i}^n\frac{x-x_j}{x_i-x_j}
P(x)=i=0∑nyi⋅ℓi(x)ℓi(x)=j=i∏nxi−xjx−xj
其中,
ℓ
i
(
x
)
\ell_i(x)
ℓi(x)为拉格朗日基函数。
2.代码实现
% 拉格朗日插值
function p = LagrangeInterpolation(x, y, t)
n = length(x); % 数据点个数
m = length(t); % 插值点个数
p = zeros(1, m); % 存储插值结果
for k = 1:m
L = ones(1, n); % 拉格朗日插值多项式的基函数
for i = 1:n
for j = 1:n
if i ~= j
L(i) = L(i) * (t(k) - x(j)) / (x(i) - x(j));
end
end
end
p(k) = sum(y .* L); % 计算插值结果
end
end