2017-11-20 3 views
0

私は、bisplrepを使用して作成された3DサーフェスBスプラインのすべてのローカル最大値のx、y座標を探したいと思います。3DサーフェスBスプライスPython scipy bisplrepの最大点を求めます。 sprootを使用できますか?

splreとsplrootを使用して、単一変量B-Splineを検索します。 bisplrepの最大値と最小値はどのようにして検出されますか?

私のコードは以下の通りです。

tck = interpolate.bisplrep(X, Y, sensor_counts, s=0) 
xnew, ynew = np.mgrid[ min(grid_x):max(grid_x):100j, min(grid_y):max(grid_y):100j] 
znew = interpolate.bisplev(xnew[:,0], ynew[0,:], tck, dx=0, dy=1) 
print xnew 
print ynew 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
print tck 
surf = ax.plot_surface(xnew, ynew, znew, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False) 
cset = ax.contour(xnew, ynew, znew, zdir='z', offset=5100, cmap=cm.coolwarm) 

答えて

0

私たちはpythonのscipy.optimizeライブラリを使用することができます。

次のようにscipy.optimize.fmin_tncを使用しました。

def neg_bspline(x): 
global tck 
f = -interpolate.bisplev(x[0], x[1], tck, dx=0, dy=0) 
g = [-interpolate.bisplev(x[0], x[1], tck, dx=1, dy=0), -interpolate.bisplev(x[0], x[1], tck, dx=0, dy=1)] 
return f, g 

for i in sensor_array: 
    x0 = i.get_coordinate() 
    print x0 
    bounds = [(0,200) , (0,200)] 
    x0 = fmin_tnc(neg_bspline, x0=x0, bounds=bounds) 
    print x0 
    solutions.append(x0[0]) 
result_plot(solutions) 
関連する問題