文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Python实现Newton插值法

2023-06-14 13:56

关注

小编给大家分享一下如何使用Python实现Newton插值法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1. n阶差商实现

def diff(xi,yi,n):    """    param xi:插值节点xi    param yi:插值节点yi    param n: 求几阶差商    return: n阶差商    """    if len(xi) != len(yi):  #xi和yi必须保证长度一致        return    else:        diff_quot = [[] for i in range(n)]        for j in range(1,n+1):            if j == 1:                for i in range(n+1-j):                    diff_quot[j-1].append((yi[i]-yi[i+1]) / (xi[i] - xi[i + 1]))            else:                for i in range(n+1-j):                    diff_quot[j-1].append((diff_quot[j-2][i]-diff_quot[j-2][i+1]) / (xi[i] - xi[i + j]))    return diff_quot

测试一下:

xi = [1.615,1.634,1.702,1.828]yi = [2.41450,2.46259,2.65271,3.03035]n = 3print(diff(xi,yi,n))

返回的差商结果为:

[[2.53105263157897, 2.7958823529411716, 2.997142857142854], [3.0440197857724347, 1.0374252793901158], [-9.420631485362996]]

2. 牛顿插值实现

def Newton(x):    f = yi[0]    v = []    r = 1    for i in range(n):        r *= (x - xi[i])        v.append(r)        f += diff_quot[i][0] * v[i]    return f

测试一下:

x = 1.682print(Newton(x))

结果为:

5944760289639732

完整Python代码

def Newton(xi,yi,n,x):    """    param xi:插值节点xi    param yi:插值节点yi    param n: 求几阶差商    param x: 代求近似值    return: n阶差商    """    if len(xi) != len(yi):  #xi和yi必须保证长度一致        return    else:        diff_quot = [[] for i in range(n)]        for j in range(1,n+1):            if j == 1:                for i in range(n+1-j):                    diff_quot[j-1].append((yi[i]-yi[i+1]) / (xi[i] - xi[i + 1]))            else:                for i in range(n+1-j):                    diff_quot[j-1].append((diff_quot[j-2][i]-diff_quot[j-2][i+1]) / (xi[i] - xi[i + j]))    print(diff_quot)        f = yi[0]    v = []    r = 1    for i in range(n):        r *= (x - xi[i])        v.append(r)        f += diff_quot[i][0] * v[i]    return f

以上是“如何使用Python实现Newton插值法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯