计算机数值分析:牛顿插值(python实现

计算机数值分析:牛顿插值法
这里使用的是牛顿插值法的差商公式;

说明: 牛顿插值法可以说是埃特金插值法的升级版,所以在很大的程度上,牛顿插值法与埃特金插值法有类似的地方,但是也有不相同的地方。而这个不相同的地方正是我们编程的时候应该要注意的。
埃特金插值法代码实现:参考 埃特金Python实现
首先来说明一下牛顿差商公式的定义:
这里公式的说明参考:牛顿差商公式说明

牛顿差商公式
一阶差商在这里插入图片描述
n阶差商在这里插入图片描述

所以牛顿插值多项式为:在这里插入图片描述

代码如下:

#牛顿插值公式:
def Data_in(xlist,ylist):
    list1=input("请输入已知的准确的对应的x,y值:").split(" ");
    for i in range(0,len(list1)):
        if i%2==0:
            xlist.append(float(list1[i]));
        else:
            ylist.append(float(list1[i]));
    return xlist,ylist;

def Newton_insert(xlist,ylist,x_in):
    n=len(xlist);#n==6
    temp_y=ylist.copy();
    for i in range(0,n):    #0~n-1 分别代表0阶差商 ~n-1差商
        if i==0:    #0阶差商已经不用弄了  就是y值本身
            continue;
        else:
            for j in range(i,n):   #i阶差商需要计算 n-i个数
                temp_y[j]=(ylist[j]-ylist[j-1])/(xlist[j]-xlist[j-i]);
        ylist=temp_y.copy() 
    #计算预测的y
    y_out=ylist[0];
    #再根据牛顿差商公式再更新一下y_list的值
    #y_list[0]就不用更新了
    for k1 in range(1,n):
        for k2 in range(0,k1):
            ylist[k1]=ylist[k1]*(x_in-xlist[k2]);
        y_out+=ylist[k1];
    
    return y_out;


DataX=[]; 
DataY=[];
DataX,DataY=Data_in(DataX,DataY);
#print(DataX)
#print(DataY)
X=float(input("请输入要预测的x的值"));
Y=Newton_insert(DataX, DataY, X);
print(Y)

代码运行结果如下:
在这里插入图片描述

遇事不决,可问春风。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值