用Python实现Newton插值法


Posted in Python onApril 17, 2021

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 = 3
print(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.682
print(Newton(x))

结果为:

2.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实现牛顿插值法的文章就介绍到这了,更多相关python牛顿插值法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
整理Python中的赋值运算符
May 13 Python
Python常用的爬虫技巧总结
Mar 28 Python
Python下载指定页面上图片的方法
May 12 Python
详解python中xlrd包的安装与处理Excel表格
Dec 16 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
python中的Elasticsearch操作汇总
Oct 30 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Python+Appium新手教程
Pytest之测试命名规则的使用
Apr 16 #Python
pycharm debug 断点调试心得分享
Python通过m3u8文件下载合并ts视频的操作
Python实现Telnet自动连接检测密码的示例
AI:如何训练机器学习的模型
python 用递归实现通用爬虫解析器
You might like
如何在PHP中进行身份认证
2006/10/09 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
在Python中使用__slots__方法的详细教程
2015/04/28 Python
Python探索之Metaclass初步了解
2017/10/28 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
社区优秀志愿者材料
2014/02/02 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
疾病防治方案
2014/05/31 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
2016消防宣传标语口号
2015/12/26 职场文书