|||
拉格朗日插值是多项式插值中最基础的一种。为便于理解基函数的概念,从简单到一般情形来描述基函数及其拉格朗日多项式。
先看线性插值。已知函数的两个互异点 $(x_0,y_0),(x_1,y_1)$ , 满足插值条件 $p(x_0)=y_0,p(x_1)=y_1$,求插值多项式 $p_1(x)$。过两互异点可确定唯一一条直线 $p_1(x)$
$$p_1(x) =y_0 +frac{y_1-y_0}{x_1-x_0}(x-x_0),$$
恒等变形为
$\begin{align} p_1(x)& = y_0 + \frac{x-x_0}{x_1-x_0} y_1-\frac{x-x_0}{x_1-x_0} y_0 \\ & = (1-\frac{x-x_0}{x_1-x_0})y_0 + \frac{x-x_0}{x_1-x_0} y_1\\ & = \frac{x-x_1}{x_0-x_1}y_0 + \frac{x-x_0}{x_1-x_0} y_1\\ & = l_0(x)y_0+l_1(x)y_1, \end{align}$
上式中,$l_0(x)= cfrac{x-x_1}{x_0-x_1},l_1(x)=cfrac{x-x_0}{x_1-x_0}$,这是两个一次函数。注意它们的构造方法,并验证它们的性质:
$l_k(x_i) = \left \{ \begin{array}{cc} 1, & i=k, \\ 0, & i\ne k,(i,k=0,1.) \end{array} \right.$
称 $l_0(x),l_1(x)$ 为线性插值基函数。
类似地,我们构造 2 次多项式基函数
$$l_0(x) = frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)},$$
$$l_1(x) =frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)},$$
$$l_2(x) = frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)},$$
$n$ 次多项式的基函数。
$$l_k(x) = prodlimits_{substack{i=0\ine k}}^nfrac{x-x_i}{x_k-x_i},k=0,1,cdots,n.$$
二、插值基函数
$n$ 次代数插值问题的解可表示为
$$ p_n(x) = sumlimits_{k=0}^nl_k(x)y_k,$$
MATLAB 程序
function yi = LagInterp(x,y,xi)
% Lagrange 插值多项式,调用格式为
% yi = LagInterp(x,y,xi)
% 其中
% x 为插值节点,y为节点处函数值,
% xi 为为估计函数自变量,yi 为xi处函数估计值
%
n = length(x); m = length(xi); p = zeros(n,m);
for k = 1:n
t = ones(n,m);
for j = 1:n
if j~=k
if abs(x(k) - x(j))<eps
error('% 输入的插值节点必须互异!');
end
t(j,:) = (xi - x(j))/(x(k) - x(j));
end
p(k,:) = prod(t);
end
yi = y*p;
end
x = [1.1275, 1.1503, 1.1735, 1.1972];
y = [0.11910, 0.13954, 0.15932, 0.17903];
xi = [1.1300 1.1600];
yi = LagInterp(x,y,xi)
>> LagInterpmain
yi =
0.1214 0.1479
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-7-28 02:32
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社