% 牛顿插值 %
% 分别输入点的坐标(x,y)向量
X = [1,2,3,4,5,6];
Y = [-3,0,15,48,105,192];
% 取X向量长度,即查看节点的数量
n = length(X);
% 预定义一个n*n的零矩阵D,作为差商表的矩阵
D = zeros(n,n);
% D矩阵的第一列是节点的纵坐标
D(:,1) = Y';
% 从第2个序号开始遍历D的列 建立差商表
for j = 2 : n
% 从列序号开始遍历D的行
for k = j : n
% 计算差商,求系数a
D(k,j) = (D(k,j - 1) - D(k - 1,j - 1)) / (X(k) - X(k - j + 1));
end
end
% 将D矩阵右下脚元素(a(n))赋值给C
C = D(n,n);
% 将结果组合成几次方的形式 而不是因式相乘的形式
for k = (n - 1) : -1 : 1
C = conv(C,poly(X(k)));
m = length(C);
C(m) = C(m) + D(k,k);
% C里面是牛顿插值法的系数
end
差商表:
系数表C:
P5的插值多项式: