用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 27 Python
Python实现文件按照日期命名的方法
Jul 09 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
python时间序列按频率生成日期的方法
May 14 Python
python挖矿算力测试程序详解
Jul 03 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
python制作微博图片爬取工具
Jan 16 Python
Python+Appium新手教程
Pytest之测试命名规则的使用
Apr 16 #Python
pycharm debug 断点调试心得分享
Python通过m3u8文件下载合并ts视频的操作
Python实现Telnet自动连接检测密码的示例
AI:如何训练机器学习的模型
python 用递归实现通用爬虫解析器
You might like
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
用javascript做拖动布局的思路
2008/05/31 Javascript
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
IE8 原生JSON支持
2009/04/13 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
django允许外部访问的实例讲解
2018/05/14 Python
python求前n个阶乘的和实例
2020/04/02 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Django限制API访问频率常用方法解析
2020/10/12 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
四风问题自我剖析材料
2014/10/07 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
付款证明模板
2015/06/19 职场文书
解除处分决定书
2015/06/25 职场文书
初一语文教学反思
2016/03/03 职场文书
sql注入教程之类型以及提交注入
2021/08/02 MySQL