优化和拟合演示

日期2017-07-13(最后修改),2006-02-10(创建)

这是一个快速示例,展示如何从多个 贝塞尔函数 中创建数据并找到局部最大值,然后使用 scipy.interpolate 模块中的某些样条函数拟合曲线。 enthought.chaco 包和 wxpython 用于创建绘图。 PyCrust(随 wxpython 提供)用作 Python shell。

在 [ ]
from enthought.chaco.wx import plt
from scipy import arange, optimize, special

plt.figure()
plt.hold()
w = []
z = []
x = arange(0,10,.01)

for k in arange(1,5,.5):
   y = special.jv(k,x)
   plt.plot(x,y)
   f = lambda x: -special.jv(k,x)
   x_max = optimize.fminbound(f,0,6)
   w.append(x_max)
   z.append(special.jv(k,x_max))

plt.plot(w,z, 'ro')
from scipy import interpolate
t = interpolate.splrep(w, z, k=3)
s_fit3 = interpolate.splev(x,t)
plt.plot(x,s_fit3, 'g-')
t5 = interpolate.splrep(w, z, k=5)
s_fit5 = interpolate.splev(x,t5)
plt.plot(x,s_fit5, 'y-')
在 [ ]
#class left

# ![](files/../_static/items/attachments/OptimizationAndFitDemo1/chacoscreenshot.png)
Optimization Example

章节作者:SciPyDotOrg、Unknown[1]、Unknown[133]、PauliVirtanen、Christian Gagnon

附件