数学建模——一维、二维插值模型详解Python代码
数学建模——一维、二维插值模型详解Python代码
一、一维插值
# -*-coding:utf-8 -*-
import numpy as np
from scipy import interpolate
import pylab as plx=np.linspace(0,10,11)
#x=[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
y=np.sin(x)
xnew=np.linspace(0,10,101)
pl.plot(x,y,"ro")for kind in ["nearest","zero","slinear","quadratic","cubic"]:#插值方式#"nearest","zero"为阶梯插值#slinear 线性插值#"quadratic","cubic" 为2阶、3阶B样条曲线插值f=interpolate.interp1d(x,y,kind=kind)# ‘slinear’, ‘quadratic’ and ‘cubic’ refer to a spline interpolation of first, second or third order)ynew=f(xnew)pl.plot(xnew,ynew,label=str(kind))
pl.legend(loc="lower right")
pl.show()
二、二维插值
# -*- coding: utf-8 -*-
"""
演示二维插值。
"""
import numpy as np
from scipy import interpolate
import pylab as pl
import matplotlib as mpldef func(x, y):return (x+y)*np.exp(-5.0*(x**2 + y**2))
X-Y轴分为15*15的网格
y,x= np.mgrid[-1:1:15j, -1:1:15j]
fvals = func(x,y) # 计算每个网格点上的函数值 15*15的值
print len(fvals[0])
#三次样条二维插值
newfunc = interpolate.interp2d(x, y, fvals, kind=‘cubic’)
计算100*100的网格上的插值
xnew = np.linspace(-1,1,100)#x
ynew = np.linspace(-1,1,100)#y
fnew = newfunc(xnew, ynew)#仅仅是y值 100*100的值
绘图
为了更明显地比较插值前后的区别,使用关键字参数interpolation=‘nearest’
关闭imshow()内置的插值运算。
pl.subplot(121)
im1=pl.imshow(fvals, extent=[-1,1,-1,1], cmap=mpl.cm.hot, interpolation=‘nearest’, origin=“lower”)#pl.cm.jet
#extent=[-1,1,-1,1]为x,y范围 favals为
pl.colorbar(im1)
pl.subplot(122)
im2=pl.imshow(fnew, extent=[-1,1,-1,1], cmap=mpl.cm.hot, interpolation=‘nearest’, origin=“lower”)
pl.colorbar(im2)
pl.show()
三、二维插值的三维展示方法```python
# -*- coding: utf-8 -*-
"""
演示二维插值。
"""
# -*- coding: utf-8 -*-
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
from scipy import interpolate
import matplotlib.cm as cm
import matplotlib.pyplot as pltdef func(x, y):return (x+y)*np.exp(-5.0*(x**2 + y**2))# X-Y轴分为20*20的网格
x = np.linspace(-1, 1, 20)
y = np.linspace(-1,1,20)
x, y = np.meshgrid(x, y)#20*20的网格数据fvals = func(x,y) # 计算每个网格点上的函数值 15*15的值fig = plt.figure(figsize=(9, 6))
#Draw sub-graph1
ax=plt.subplot(1, 2, 1,projection = '3d')
surf = ax.plot_surface(x, y, fvals, rstride=2, cstride=2, cmap=cm.coolwarm,linewidth=0.5, antialiased=True)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('f(x, y)')
plt.colorbar(surf, shrink=0.5, aspect=5)#标注#二维插值
newfunc = interpolate.interp2d(x, y, fvals, kind='cubic')#newfunc为一个函数# 计算100*100的网格上的插值
xnew = np.linspace(-1,1,100)#x
ynew = np.linspace(-1,1,100)#y
fnew = newfunc(xnew, ynew)#仅仅是y值 100*100的值 np.shape(fnew) is 100*100
xnew, ynew = np.meshgrid(xnew, ynew)
ax2=plt.subplot(1, 2, 2,projection = '3d')
surf2 = ax2.plot_surface(xnew, ynew, fnew, rstride=2, cstride=2, cmap=cm.coolwarm,linewidth=0.5, antialiased=True)
ax2.set_xlabel('xnew')
ax2.set_ylabel('ynew')
ax2.set_zlabel('fnew(x, y)')
plt.colorbar(surf2, shrink=0.5, aspect=5)#标注plt.show()
数学建模——一维、二维插值模型详解Python代码相关推荐
- 数学建模——智能优化之模拟退火模型详解Python代码
数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...
- 数学建模_随机森林分类模型详解Python代码
数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...
- 数学建模——支持向量机模型详解Python代码
数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...
- 数学建模——智能优化之粒子群模型详解Python代码
数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...
- 数学建模——线性规划模型详解Python代码
数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...
- 清风数学建模学习笔记——K-means聚类模型详解及SPSS操作流程
聚类模型 聚类模型,就是将样本划分为有类似的对象组成的多个类的过程.聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计.分析或预测:也可以探究不同类之间的相关性和主要差异.此外,聚类与分 ...
- 【自然语言处理】Word2Vec 词向量模型详解 + Python代码实战
文章目录 一.词向量引入 二.词向量模型 三.训练数据构建 四.不同模型对比 4.1 CBOW 4.2 Skip-gram 模型 4.3 CBOW 和 Skip-gram 对比 五.词向量训练过程 5 ...
- python随机生成二维列表_对python产生随机的二维数组实例详解
对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...
- php二维数组实例_什么是php二维数组?php二维数组实例详解
什么是php二维数组? 二维数组又称为矩阵,本质上是以数组作为数组元素的数组,一个数组的元素如果是一维数组,那么我们就称这个数组是二维数组. PHP二维数组实例详解 我们之前的一篇文章<PHP数 ...
最新文章
- 【机器学习】机器学习12个关键经验教训
- SQL工具-技术支持工具
- 白盒测试工具 - sonar的安装、配置与使用入门手册,用sonar检查代码质量实战演示
- 集合上二元关系性质判定的实现(python实现)
- i茅台app上线首日,直接冲到了App Store免费榜第一
- 多线程之终止线程的四种方法
- ubuntu+vulkan
- 内连接与外连接的区别
- 学习站点(ireaperwebEx播放器)
- Android-Binder机制
- excel文件修复工具_psd文件修复工具下载|Recovery Toolbox for ps 最新版v2.3.1.0 下载
- 前端|如何制作调查问卷
- 显示器的分辨率,字体像素
- 华为手机如何与台式计算机连接不上,华为手机连接不上电脑怎么处理
- 一文读懂 Redis!
- 华硕ROG冰刃5和枪神5有什么区别 哪个好
- H5\uniapp图片添加水印
- UGC、PGC、OGC的概念
- 应用程序无法启动,因为应用程序的并行配置不正确...解决方法
- PHP 获取本月与上个月的第一天和最后一天
热门文章
- 高校邦python程序设计基础篇_高校邦Python程序设计基础【实境编程】章节答案
- 实验二matlab数值,实验二MATLAB数值计算
- java对象重用_JAVA:避免重复的创建对象
- Linux和Windows栈帧机器码,栈溢出原理与 shellcode 开发
- centos7 mysql二进制_centos7+mysql5.7二进制安装
- linux内核红宝书,Solaris 10红宝书 9.3
- 据中心水冷系统备品备件管理新思路
- 计算机硬盘冒烟了,电脑硬盘冒烟损坏了怎么办?
- eviews如何处理缺失数据填补_python数据预处理之异常值、缺失值处理方法
- 成功解决ValueError: could not convert string to float: ‘\\N‘