插值方法 - Newton向前向后等距插值
通常我们在求插值节点的开头部分插值点附近函数值时,使用Newton前插公式;求插值节点的末尾部分插值点附近函数值时,使用Newton后插公式。
代码:
1 # -*- coding: utf-8 -*-
2 """
3 Created on Wed Mar 25 15:43:42 2020
4
5 @author: 35035
6 """
7
8
9 import numpy as np
10
11 # 等距节点的Newton向前插值(输入的x向量和y向量注意保证从小到大顺序)
12 def Newton_iplt_forword(x, y, xi):
13 """x,y是插值节点,xi是一个值"""
14 n = len(x)
15 m = len(y)
16 if n != m:
17 print("Error!")
18 return None
19 h = x[1] - x[0]
20 t = (xi - x[0]) / h
21
22 # 先计算差分表(cf)
23 cf = []
24 temp = y.copy()
25 for i in range(n):
26 if i != 0:
27 iv_1 = temp[i - 1]
28 for j in range(i, n):
29 iv_2 = temp[j]
30 temp[j] = iv_2 - iv_1
31 iv_1 = iv_2
32 cf.append(temp[i])
33 # 再计算Newton插值
34 ans = 0
35 for i in range(n):
36 w = 1
37 # 计算多项式部分,让差分作为其系数
38 for j in range(i):
39 w *= ((t - j) / (j + 1))
40 ans += w*cf[i]
41 return ans
42
43 # 等距节点的Newton向后插值(输入的x向量和y向量保证从小到大顺序)
44 def Newton_iplt_backword(x, y, xi):
45 """x,y是插值节点ndarray,xi是一个值"""
46 n = len(x)
47 m = len(y)
48 if n != m:
49 print("Error!")
50 return None
51 h = x[1] - x[0]
52 t = (xi - x[n - 1]) / h
53
54 # 先计算差分表(cf)
55 cf = []
56 temp = y.copy()
57 for i in range(n):
58 if i != 0:
59 iv_1 = temp[i - 1]
60 for j in range(i, n):
61 iv_2 = temp[j]
62 temp[j] = iv_2 - iv_1
63 iv_1 = iv_2
64 cf.append(temp[n - 1])
65 # 再计算Newton插值
66 ans = 0
67 for i in range(n):
68 w = 1
69 # 计算多项式部分,让差分作为其系数
70 for j in range(i):
71 w *= ((t + j) / (j + 1))
72 ans += w*cf[i]
73 return ans
74
75 # 当对多个值使用Newton插值时,使用map()建立映射:
76 # Iterator = map(Newton, Iterable)
77
78 # 数值运算时使用float参与运算,dtype定为内置float
79
80 x = np.array((1,2,3,4,5,6), dtype=float)
81 y = np.array((1.0, 1.2599, 1.4422, 1.5874, 1.71, 1.8171), dtype=float)
82 print(Newton_iplt_forword(x, y, 5.6))
83 print(Newton_iplt_backword(x, y, 5.6))
84 # 结果:1.775416 测试成功!
插值方法 - Newton向前向后等距插值的更多相关文章
- 插值方法 - Newton多项式(非等距节点)
不多话.Nowton插值多项式(非等距节点)代码: 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed Mar 25 15: ...
- Webdriver控制翻页控件,并实现向前向后翻页功能,附上代码,仅供参考,其他类似日期控件的功能可以自己封装
新增输入与选择页面的html源码: <div style="margin-top:-60px;" class="modal-content" id=&qu ...
- Glibc堆块的向前向后合并与unlink原理机制探究
i春秋作家:Bug制造机 原文来自:Glibc堆块的向前向后合并与unlink原理机制探究 玩pwn有一段时间了,最近有点生疏了,调起来都不顺手了,所以读读malloc源码回炉一点一点总结反思下. U ...
- java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)
1.情景展示 java 根据系统当前日期获取前一天日期.后一天日期,或者根据初始日期推算出期望(向前/向后)日期. 2.解决方案 导包 import java.text.ParseExcepti ...
- Java中Date类型如何向前向后滚动时间,( 附工具类)
Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar ...
- Caffe计算net、layer向前向后传播时间
在caffe中计算某个model的整个net以及各个layer的向前向后传播时间,可以使用下面的命令格式: ./build/tools/caffe time --model=examples/mnis ...
- 普通选项卡+自动播放功能+向前/向后按钮 原生js
今天做了幻灯片,主要功能包括:普通选项卡,向前/向后播放按钮,向前?向后播放功能,自动播放功能 要实现简单选项卡功能是没有问题的,但是添加功能就出现各种各样的问题了 遇到的问题:1 下标问题 2普通选 ...
- 解决IOS微信浏览器底部会出现向前向后返回按钮,返回不刷新的问题
<script type="text/javascript"> //解决IOS返回页面不刷新的问题 var isPageHide = false; window.add ...
- Visual Studio 2013 (vs2013)中“向前定位”,“向后定位”按钮
Visual Studio 2013 (vs2013)中默认的界面中似乎没有向前向后定位这个非常实用的功能,下面是把它们找出来的方法: 方法1:右键-->工具栏空白处-->最下面,自定义- ...
随机推荐
- c# 编程学习(四)
逻辑AND(逻辑与)操作符(用&&表示)和逻辑OR(逻辑或) 操作符(用||表示).这两个操作符统称条件逻辑操作符.只有作为操作数的两个布尔表达式都为 true.操作符&&am ...
- 简明Python教程 - 学习笔记
1,第一步 cmd下运行python文件 :python 文件名.(在文件目录下) 退出python解释器:ctrl + z 或 exit() 回车 进入帮助模式:help(),退出:q 或 回车 2 ...
- Java课程设计---修改学生基本信息
1.修改窗体 2.在StudentDao中增加修改学生信息的方法 /** * 修改的方法 * * @param student * @return * @throws SQLException */ ...
- 解决 “Project ERROR: Unknown module(s) in QT: webengine”以及“Your MaintenanceTool appears to be older than 3.0.2. .” 的办法
1.环境 Windows10,Qt5.8.0 2.问题描述 需要使用到WebEngineView组件,在工程.pro中增加webengine后,Qt Creator应用程序输出中打印了 Project ...
- c/c++(c++和网络编程)日常积累(二)
Linux下C编程通过宏定义打开和关闭调试信息 https://www.cnblogs.com/robinsons/p/3667032.html https://blog.csdn.net/u0134 ...
- LeetCode-095-不同的二叉搜索树 II
不同的二叉搜索树 II 题目描述:给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 .可以按 任意顺序 返回答案. 二叉搜索树(Binary ...
- Mysql引擎、隔离机制、存储结构、索引
目录 数据库常用的两种引擎 两种引擎差异对比 如何选择引擎 两个引擎索引结构 查找mysql数据存储位置方式 MyISAM InnoDB 1. 非独立表空间 2. 独立表空间 3. idb文件存的哪些 ...
- java上传图片时压缩图片
/** * 函数:调整图片尺寸或生成缩略图 v 1.1 * @param $Image 需要调整的图片(含路径) * @param $Dw 调整时最大宽度;缩略图时的绝对宽度 * @param $Dh ...
- html2canvas滚动截图
滚动截图 项目需求要进行动态的滚动截图搜索一下发现html2canvas可以实现截图,但是滚动截图网上搜罗了一遍发现不是很完善所以记录下 首先npm一下安装依赖: npm install html2c ...
- vue/cli项目添加外部js文件的一个方法
有一个util.js文件,内容如下 function Util () { ... } export default new Util() 可以在main.js里面通过import引入js import ...