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多线程编程(五):死锁的形成
Apr 05 Python
python简单的函数定义和用法实例
May 07 Python
python字符类型的一些方法小结
May 16 Python
Python Socket编程详细介绍
Mar 23 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
Python虚拟环境的原理及使用详解
Jul 02 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 Python
django中的数据库迁移的实现
Mar 16 Python
解决django接口无法通过ip进行访问的问题
Mar 27 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下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
Python提取频域特征知识点浅析
2019/03/04 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
python爬取youtube视频的示例代码
2021/03/03 Python
一道SQL存储过程面试题
2016/10/07 面试题
酷瑞网络科技面试题
2012/03/30 面试题
汽车维修工岗位职责
2014/02/12 职场文书
房地产广告策划方案
2014/05/15 职场文书
支行行长岗位职责
2015/02/15 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
详解Python生成器和基于生成器的协程
2021/06/03 Python