同义词内插法(插值法)一般指多项式插值
- 中文名
- 多项式插值
- 外文名
- polynomial interopolation
- 类 型
- 插值技术
- 方 法
- 直接法;拉格朗日法;牛顿法
- 用 来
- 曲线拟合、回归
- 应用领域
- 人工智能
定义
播报编辑
在实际应用中,这些插值点可能来自某次实验测量所得的数据,也可能来自某个复杂函数
的值。通过计算插值多项式,我们可以找到这些实验数据间的规律,或者使用简单的多项式函数
端雄兰墓体妹 来近巴体盛似复杂的函数
。 [1]
唯一性和误差
播报编辑
定理一:
给定n+1个点
,若
两两不同,则存在唯一一个次数不超过n的多项式
,使得
成立。
证明:利用范德蒙德矩阵和代数学基本定理即得。
当
的值来自某个函数
,且f(x)具有n+1阶连续导数时,下面的定理可以用来计算多项式插值的(截断)误差。
定理二:
给定n+1个点
,其中
,进一步假设函数f(x)具有n+1阶连续导数,则插值多项式P(x)的误差R(x)为
计算方法
播报编辑
(注意,根据定理一,这三种方法得到的插值多项式在理论上说应该是一致的,而且误差也相同。)
直接法
根据定理一,假设插值多项式为
通过求解这个线性方程组,即得到插值多项式。
优点:直接,性质一目了然。
拉格朗日多项式插值
拉格朗日基函数
的构造如下:
由基函数的性质,当
时,
,即
为
的零点,可以假设
从而得到
定理三:令
为全体次数不超过n的多项式构成的集合,则
是线性空间
的一组基。
Matlab 实现
function [y,Lb] = LagrangeInterpolation(X,Y,x)
% 拉格朗日多项式插值函数
% 注意:插值点的个数为n,差值多项式的次数为n-1
%
% 输入参数
% X,Y: 插值点坐标
% x: 求值点
%
% 输出参数
% y: 拉格朗日插值多项式在x点的值
% Lb: 拉格朗日基函数在x点的值
if length(X) ~= length(Y) error('X和Y的长度不相等');
endn = length(X);
%获取插值点的个数
%初始化
y = 0; Lb = ones(1,n);
for i = 1:n
for j = 1:n %计算拉格朗日基函数在x点的值 if j ~= i Lb(i) = Lb(i) * (x-X(j))/(X(i)-X(j));
end end y = y + Lb(i)*Y(i);
%计算拉格朗日插值多项式的值
end
end
均差与牛顿多项式插值
牛顿多项式插值是基于均差的计算。首先定义均差如下:
用递归的方式,我们定义二阶均差为
根据均差的定义,构造均差表如下:
如果将x也看作一个点,由均差的定义可以得到
其中,
称为牛顿插值多项式。
由定理一和定理二得到均差和导数的关系如下:
其中,
Matlab实现
function [y,Nt]=NewtonInterpolation(X,Y,x)
% 牛顿多项式插值函数
% 注意:插值点的个数为n,差值多项式的次数为n-1
%
% 输入参数
% X,Y: 插值点坐标
% x: 求值点
%
% 输出参数% y:牛顿差值多项式在x点的值
% Nt:均差表
if length(X) ~= length(Y) error('X和Y的长度不相等');
endn = length(X); Nt = zeros(n);
%初始化均差表,按列存放各阶均差
Nt(1,1) = Y(1);
%0阶均差
for i = 2:n
%按行计算均差表 Nt(i,1) = Y(i); %0阶均差 for j = 2:i Nt(i,j) = (Nt(i,j-1)-Nt(i-1,j-1))/(X(i)-X(i-j+1));
end
end
%计算牛顿插值多项式在x点上的值w = 1; y = Nt(1,1) * w;
for i = 2 : n w = w * (x - X(i-1)); y = y + Nt(i,i) * w;
end
end
比较
播报编辑
拉格朗日多项式插值的计算量大于牛顿多项式插值的计算量。