用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 相关文章推荐
如何搜索查找并解决Django相关的问题
Jun 30 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
Python 实现选择排序的算法步骤
Apr 22 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
Python表达式的优先级详解
Feb 18 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
python爬虫基础知识点整理
Jun 02 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
Python+Appium新手教程
Pytest之测试命名规则的使用
Apr 16 #Python
pycharm debug 断点调试心得分享
Python通过m3u8文件下载合并ts视频的操作
Python实现Telnet自动连接检测密码的示例
AI:如何训练机器学习的模型
python 用递归实现通用爬虫解析器
You might like
php self,$this,const,static,->的使用
2009/10/22 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
javascript关于继承解析
2016/05/10 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
tornado 多进程模式解析
2018/01/15 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
盛大笔试题
2016/11/05 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python