牛顿(Newton)插值(python)

题目:

 

通过设计、编制、调试2~3个多项式插值、拟合曲线的程序,加深对其数值计算方法及有关的基础理论知识的理解。

要求

    用编程语言实现拉格朗日(Lagrange)插值多项式、牛顿(Newton)插值、用线性函数

拟合给定数据

的程序。

基本原理:

 

 

 

 python实现:

def func(x,y,X,infor=True):
    list2=[y[0]]       #  差商表的对角线的第一个元素始终是y0
    count=1
    while(True):
        if len(y)>1:
            list=[]                 # 空列表用来保存,每次计算后差商表的行
            for i in range(len(y)-1):
                n=x[i+count]-x[i]
                m=y[i+1]-y[i]
                l=m/n
                list.append(l)
            list2.append(list[0])        # list2用来记录差商表的对角线元素,每计算              
                                         #一次,取行的第一个元素
            count += 1
            y = list
        else:
            break
    if infor:                           # 判断是否要继续计算,结果
        W=0
        for i in range(len(list2)):
            if i==0:
                w=list2[i]
            else:
                w = list2[i]
                for j in range(i):
                    w*=(X-x[j])
            W+=w

    return W

X=[0.4, 0.5, 0.6, 0.7, 0.8]
Y=[-0.9163, -0.6931, -0.5108, -0.3567, -0.2231]
print(X,Y)
result=func(X,Y,0.54)

print(result)


#编写牛顿插值函数,输入插值节点,输入要求的点x,反回x点对应的值。

结果:

牛顿插值法的输出结果:

E:\shuzhifenxishiyan\Newton\venv\Scripts\python.exe E:/shuzhifenxishiyan/Newton/main.py

[0.4, 0.5, 0.6, 0.7, 0.8] [-0.9163, -0.6931, -0.5108, -0.3567, -0.2231]

-0.6160952000000001

Process finished with exit code 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值