Python实现线性插值和三次样条插值的示例代码
作者:XHHP 发布时间:2023-12-04 19:19:42
标签:Python,线性插值,三次样条插值
(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)、结果展示
来源:https://blog.csdn.net/weixin_41799019/article/details/97629116


猜你喜欢
- 前言在实际生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实
- Python的优点和缺点本节内容如下:Python的优点Python的缺点使用Python的知名网站Python的优点1. 简单 Pytho
- python之pkl文件pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西。cPickle在python3中
- MybatisPlus处理Mysql的json类型1、在数据库表定义JSON字段;2、在实体类加上@TableName(autoResult
- 目标在本节中,将学习根据立体图像创建深度图基础在上一节中,看到了对极约束和其他相关术语等基本概念。如果有两个场景相同的图像,则可以通过直观的
- 关于Mysql的触发器,基本上每个Mysql教程里都有讲到,但是我发现那些教程里讲的都是如何处理其他表的数据。在Mysql中写触发器操作本表
- 如下所示:b.reset_index(drop=True)reset_index代表重新设置索引,drop=True为删除原索引。来源:ht
- 爬虫所需要的功能,基本上在urllib中都能找到,学习这个标准库,可以更加深入的理解后面更加便利的requests库。首先在Pytho2.x
- TensorFlow修改变量值后,需要重新赋值,assign用起来有点小技巧,就是需要需要弄个操作子,运行一下。下面这么用是不行的impor
- 本文实例讲述了Python实现分割文件及合并文件的方法。分享给大家供大家参考。具体如下:分割文件split.py如下:#!/usr/bin/
- 1、除法相关在python3之前,print 13/4 #result=3然而在这之后,却变了!print(13 / 4) #r
- 大家好,我是辰哥。辰哥之前就想着Python可不可以剪辑视频(提取视频的音频,视频截取等等),然后辰哥在网上一搜,还真找到了Python的一
- 在网上的一些资料的基础上自己又添了些新内容,算是Python socket编程练手吧。#coding=utf-8import socketi
- Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。属性的__d
- a=1 #1 为对象,def func(x): print('x的地址{}'.form
- XML是一项热门的技术。它之所以能够引起人们的兴趣,一个主要的原因在于它十分的简单,人们可以很容易地理解和使用它。每一个程序员都能轻易地看懂
- 基于python opencv人脸识别的签到系统前言先看下效果实现的功能开始准备页面的构建功能实现代码部分总结前言一个基于opencv人脸识
- 前言:最近写爬虫会经常遇到一些验证码识别的问题,现如今的验证码已经是五花八门,刚开始的验证码就是简单的对生成的验证码图片进行一些干扰,但是随
- 在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简
- 介绍毫无疑问,任何一个试图使用 CSS 的网页设计师和开发人员都会发现不同的浏览器要求不同的样式声明。这些烦恼归咎于各浏览器及其各版本不同程