数学建模——一维、二维插值模型详解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代码相关推荐

  1. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  2. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  3. 数学建模——支持向量机模型详解Python代码

    数学建模--支持向量机模型详解Python代码 from numpy import * import random import matplotlib.pyplot as plt import num ...

  4. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  5. 数学建模——线性规划模型详解Python代码

    数学建模--线性规划模型详解Python代码 标准形式为: min z=2X1+3X2+x s.t x1+4x2+2x3>=8 3x1+2x2>=6 x1,x2,x3>=0 上述线性 ...

  6. 清风数学建模学习笔记——K-means聚类模型详解及SPSS操作流程

    聚类模型   聚类模型,就是将样本划分为有类似的对象组成的多个类的过程.聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计.分析或预测:也可以探究不同类之间的相关性和主要差异.此外,聚类与分 ...

  7. 【自然语言处理】Word2Vec 词向量模型详解 + Python代码实战

    文章目录 一.词向量引入 二.词向量模型 三.训练数据构建 四.不同模型对比 4.1 CBOW 4.2 Skip-gram 模型 4.3 CBOW 和 Skip-gram 对比 五.词向量训练过程 5 ...

  8. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

  9. php二维数组实例_什么是php二维数组?php二维数组实例详解

    什么是php二维数组? 二维数组又称为矩阵,本质上是以数组作为数组元素的数组,一个数组的元素如果是一维数组,那么我们就称这个数组是二维数组. PHP二维数组实例详解 我们之前的一篇文章<PHP数 ...

最新文章

  1. 【机器学习】机器学习12个关键经验教训
  2. SQL工具-技术支持工具
  3. 白盒测试工具 - sonar的安装、配置与使用入门手册,用sonar检查代码质量实战演示
  4. 集合上二元关系性质判定的实现(python实现)
  5. i茅台app上线首日,直接冲到了App Store免费榜第一
  6. 多线程之终止线程的四种方法
  7. ubuntu+vulkan
  8. 内连接与外连接的区别
  9. 学习站点(ireaperwebEx播放器)
  10. Android-Binder机制
  11. excel文件修复工具_psd文件修复工具下载|Recovery Toolbox for ps 最新版v2.3.1.0 下载
  12. 前端|如何制作调查问卷
  13. 显示器的分辨率,字体像素
  14. 华为手机如何与台式计算机连接不上,华为手机连接不上电脑怎么处理
  15. 一文读懂 Redis!
  16. 华硕ROG冰刃5和枪神5有什么区别 哪个好
  17. H5\uniapp图片添加水印
  18. UGC、PGC、OGC的概念
  19. 应用程序无法启动,因为应用程序的并行配置不正确...解决方法
  20. PHP 获取本月与上个月的第一天和最后一天

热门文章

  1. 高校邦python程序设计基础篇_高校邦Python程序设计基础【实境编程】章节答案
  2. 实验二matlab数值,实验二MATLAB数值计算
  3. java对象重用_JAVA:避免重复的创建对象
  4. Linux和Windows栈帧机器码,栈溢出原理与 shellcode 开发
  5. centos7 mysql二进制_centos7+mysql5.7二进制安装
  6. linux内核红宝书,Solaris 10红宝书 9.3
  7. 据中心水冷系统备品备件管理新思路
  8. 计算机硬盘冒烟了,电脑硬盘冒烟损坏了怎么办?
  9. eviews如何处理缺失数据填补_python数据预处理之异常值、缺失值处理方法
  10. 成功解决ValueError: could not convert string to float: ‘\\N‘