牛顿插值法matlab实现

% 牛顿插值 %

% 分别输入点的坐标(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的插值多项式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值