Lagrange插值法MATLAB代码
数值分析学习(二)
(拉格朗日插值公式)(Lagrange interpolation formula)指的是在节点上给出节点[基函数],然后做基函数的[线性组合],组合系数为节点函数值的一种插值多项式。
插值,就是设法利用已给数据表求出给定点x的函数值y。
任给定点x1,x2,…,xn点的函数值,其中x1,x2,…xn互不相同;如下表:
x1 | x2 | …… | xn |
---|---|---|---|
y1 | y2 | …… | yn |
则存在唯一的次数不超过n的多项式pn(x),满足pn(xi)=yi(i=1,2,…,n+1),这里:
P
n
(
x
)
=
∑
n
=
1
n
y
i
(
∏
j
≠
n
1
≤
j
≤
n
(
x
−
x
i
)
(
x
i
−
x
j
)
)
P_n(x)=\sum_{n=1}^{n}{y_i}(\prod_{j\neq n}^{1\leq j\leq n}{\frac{(x-x_i)}{(x_i-x_j)}})
Pn(x)=n=1∑nyi(j=n∏1≤j≤n(xi−xj)(x−xi))
MATLAB语言:
function y=lagrange(x0,y0,x)
%输入 -x0 是一个包含横坐标列表的向量
% -y0 是一个包含纵坐标列表的向量
% -x 是包含插值点列表的向量
%输出 -y 是一个向量,包含x处拉格朗日插值多项式的值
n=length(x0);
m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
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