Python实现线性插值和三次样条插值的示例代码


Posted in Python onNovember 13, 2019

(1)、函数

y = sin(x)

(2)、数据准备

#数据准备
X=np.arange(-np.pi,np.pi,1) #定义样本点X,从-pi到pi每次间隔1
Y= np.sin(X)#定义样本点Y,形成sin函数
new_x=np.arange(-np.pi,np.pi,0.1) #定义差值点

(3)、样条插值

#进行样条差值
import scipy.interpolate as spi
 
#进行一阶样条插值
ipo1=spi.splrep(X,Y,k=1) #样本点导入,生成参数
iy1=spi.splev(new_x,ipo1) #根据观测点和样条参数,生成插值
 
#进行三次样条拟合
ipo3=spi.splrep(X,Y,k=3) #样本点导入,生成参数
iy3=spi.splev(new_x,ipo3) #根据观测点和样条参数,生成插值

(4)、绘图

##作图
fig,(ax1,ax2)=plt.subplots(2,1,figsize=(10,12))

ax1.plot(X,Y,'o',label='样本点')
ax1.plot(new_x,iy1,label='插值点')
ax1.set_ylim(Y.min()-1,Y.max()+1)
ax1.set_ylabel('指数')
ax1.set_title('线性插值')
ax1.legend()

ax2.plot(X,Y,'o',label='样本点')
ax2.plot(new_x,iy3,label='插值点')
ax2.set_ylim(Y.min()-1,Y.max()+1)
ax2.set_ylabel('指数')
ax2.set_title('三次样条插值')
ax2.legend()

(5)、综合代码

import numpy as np
import matplotlib.pyplot as plt
 
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
 
#数据准备
X=np.arange(-np.pi,np.pi,1) #定义样本点X,从-pi到pi每次间隔1
Y= np.sin(X)#定义样本点Y,形成sin函数
new_x=np.arange(-np.pi,np.pi,0.1) #定义差值点
 
#进行样条差值
import scipy.interpolate as spi
 
#进行一阶样条插值
ipo1=spi.splrep(X,Y,k=1) #样本点导入,生成参数
iy1=spi.splev(new_x,ipo1) #根据观测点和样条参数,生成插值
 
#进行三次样条拟合
ipo3=spi.splrep(X,Y,k=3) #样本点导入,生成参数
iy3=spi.splev(new_x,ipo3) #根据观测点和样条参数,生成插值

 
 
##作图
fig,(ax1,ax2)=plt.subplots(2,1,figsize=(10,12))

ax1.plot(X,Y,'o',label='样本点')
ax1.plot(new_x,iy1,label='插值点')
ax1.set_ylim(Y.min()-1,Y.max()+1)
ax1.set_ylabel('指数')
ax1.set_title('线性插值')
ax1.legend()

ax2.plot(X,Y,'o',label='样本点')
ax2.plot(new_x,iy3,label='插值点')
ax2.set_ylim(Y.min()-1,Y.max()+1)
ax2.set_ylabel('指数')
ax2.set_title('三次样条插值')
ax2.legend()

(6)、结果展示

Python实现线性插值和三次样条插值的示例代码

Python实现线性插值和三次样条插值的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现批量下载文件
May 17 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 Python
Python处理CSV与List的转换方法
Apr 19 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
python实现在一个画布上画多个子图
Jan 19 Python
python yield和Generator函数用法详解
Feb 10 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 Python
Python坐标线性插值应用实现
Nov 13 #Python
python如果快速判断数字奇数偶数
Nov 13 #Python
Python 异步协程函数原理及实例详解
Nov 13 #Python
python文字转语音实现过程解析
Nov 12 #Python
python文字转语音的实例代码分析
Nov 12 #Python
Python上下文管理器全实例详解
Nov 12 #Python
python3-flask-3将信息写入日志的实操方法
Nov 12 #Python
You might like
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
PHP 实现缩略图
2021/03/09 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python读大数据txt
2016/03/28 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
烹饪自我鉴定
2014/03/01 职场文书
总经理工作职责范文
2014/03/14 职场文书
如何写好自荐信
2014/04/07 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
汽车车尾标语大全
2015/08/11 职场文书
提档介绍信范文
2015/10/22 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS