图像拉格朗日插值法matlab"/>
图像拉格朗日插值法matlab
拉格朗日插值是多项式插值中最基础的一种。为便于理解基函数的概念,从简单到一般情形来描述基函数及其拉格朗日多项式。
先看线性插值。已知函数的两个互异点 $(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))
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
转载本文请联系原作者获取授权,同时请注明本文来自王福昌科学网博客。
链接地址:.html
上一篇:Gauss-Seidel 迭代法解线性方程组 A x = b 及其MATLAB编程实现
下一篇:Newton 插值及其MATLAB实现
更多推荐
图像拉格朗日插值法matlab
发布评论