Newton插值方法的matlab实现

本文介绍如何使用Matlab实现Newton插值法,并提供具体的函数代码及运行实例。通过三个核心函数完成插值计算,适用于数值分析学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先需要先建立几个函数
注意:下述代码均为Matlab代码。
第一个函数

function a=chashang(xx,yy)
%此函数用于求Newton插值法的差商表,返回值是差商表所组成的矩阵
%xx为插值点的自变量组成的行向量
%yy为插值点的因变量组成的行向量
[m,n]=size(xx);
a=zeros(n,n+1);%先创建一个矩阵
a(:,1)=xx';
a(:,2)=yy';
for j=3:n+1%i代表行标,j代表列标
    for i=j-1:n
        a(i,j)=(a(i,j-1)-a(i-1,j-1))/(a(i,1)-a(i-(j-2),1));%i-(j-2)是一个关键
    end
end
end

第二个函数

function f=nw(x,k,xx)
%此函数的作用是求(x-x(i))i=1,2,..,n+1;的连乘积,返回值是连乘积的数值(n+1为插值点的个数)
%此处的x为所求的函数值对应的自变量
%xx为插值点的自变量组成的行向量
[m,n]=size(xx);
f=1;
for i=1:k
    f=(x-xx(i))*f;
end
end


第三个函数

function f=N(x,xx,yy)
%此函数用于实现Newton插值,返回值f是插值结果
%此处的x为所求的函数值对应的自变量
%xx为插值点的自变量组成的行向量
%yy为插值点的因变量组成的行向量
[m,n]=size(xx);
a=chashang(xx,yy);
for i=1:n
    if(i==1)
        f=a(i,2);
    else
        f=f+a(i,i+1)*nw(x,i-1,xx);
end
end


有了上述三个函数,把这三个函数放到你的matlab工作目录下面,仅引用第三个函数N(N函数其实还要调用其它两个函数)即可进行Newton插值
下面利用以上的代码进行Newton插值

clear
xx=[2 2.1 2.2];
yy=[1.414214 1.449138 1.483240];
N(2.15,xx,yy)%直接计算2.15处的插值函数值
syms x;
y=vpa(collect(N(x,xx,yy)),4)%先计算插值函数,collect:合并同类项,vpa:保留一定位数的有效数字
vpa(subs(y,x,2.15),4)%再计算插值函数在2.15处的函数值,subs:2.15的值赋给x

下面给出此程序的运行结果
程序运行结果

另外说明一点,Matlab其实有专门的插值函数,此处构建上述三个函数的目的仅仅是为了数值分析的学习需要。
本程序代码,在matlaR2016a上均已运行通过;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值