插值方法 - 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# 调试】.net中的 .pdb文件是什么,有什么用
mscn:在 Visual Studio 调试器(C#)中指定符号 (.pdb) 和源文件 PDB全称Program Database,程序数据库 ( .pdb) 文件(也称为符号文件)将项目源代码中 ...
- 为Visual Studio 2019设置 更改皮肤
下载主题插件:Color Themes for Visual Studio 安装插件 下载完成后 关闭vs2019 完成初始化,初始化完成后,再次打开软件进行配置. 卸载插件 点击卸载,然后关闭vs2 ...
- linux下确认裸盘是否使用-渐入佳境
--作者:飞翔的小胖猪 --创建时间:2021年3月9日 6.1 概述 在私有云和虚拟化环境中业务方经常会根据自己的业务情况申请磁盘用作数据存储用.如果申请了磁盘但没有使用的情况,将极大的造成资源的浪 ...
- @PostConstruct使用注意点
前景提要:在一个项目中,由于数据库中敏感词删除掉了,但是在网页进行匹配时仍然能够匹配上已删除的词. 查看项目源码发现使用了@PostConstruct注解: 此注解的作用是:@PostConstruc ...
- Js-左侧折叠
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CentOS 8 网卡命令使用
之前一直用CENTOS7中service来重启网卡,但是换成CENTOS8后centos8的网卡服务与centos7有所不同,无法通过systemctl或者service命令重启网卡.centos8网 ...
- LGP3703题解
不会数据结构石锤了/kk 题意清晰. 我们看到 \(1\) 操作比较奇怪,考虑从 \(1\) 操作入手. 设 \(f_u\) 为 \(u\) 到根节点一共有多少种颜色,我们使用树剖来维护这个东西. 考 ...
- 手写 Vue2 系列 之 patch —— diff
前言 上一篇文章 手写 Vue2 系列 之 初始渲染 中完成了原始标签.自定义组件.插槽的的初始渲染,当然其中也涉及到 v-bind.v-model.v-on 指令的原理.完成首次渲染之后,接下来就该 ...
- 【1024打卡】C++字符串的输出((c语言风格)
c++字符串输出(c语言风格) 文章目录 c++字符串输出(c语言风格) 杂记 代码 杂记 今天程序设计竞赛白给了,果然还是太弱了,y总带带我TAT ┭┮﹏┭┮1024快乐 代码 c语言学习 #inc ...
- VBS文件无限循环解决办法
VBS文件无限循环解决办法,也就相当于编程中的停止运行指令. 那么如何关掉VBS文件呢?当然关机后会自动关掉,还有另外一种方法就是,在"任务管理器"中找到进程"WScri ...