iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何使用Python实现Newton插值法
  • 814
分享到

如何使用Python实现Newton插值法

2023-06-14 13:06:08 814人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

小编给大家分享一下如何使用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插值法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网Python频道!

--结束END--

本文标题: 如何使用Python实现Newton插值法

本文链接: https://www.lsjlt.com/news/271234.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作