数学建模——一维、二维插值模型详解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代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学建模——线性规划模型详解Python
- 下一篇: 数学建模——支持向量机模型详解Pytho