現在、最適化問題を解決していて、見つけた解決策を plot3d ツールキットでプロットしたいと考えています。関数 の最小値を見つけようとしているとしましょうF
。を最小化する x の値を呼び出しますF x*
。F
によって生成されたサーフェスをグリッドとしてプロットし、同じプロットに の最小値も印刷したいと考えていますF : F(x*)
。
私はこの目的のためにこのコードを使用します:
x = [a / 10 - 5 for a in range(100)]
y = [a / 10 - 5 for a in range(100)]
Z = []
for i in range(len(x)):
Z.append([0] * len(x))
Z = array(Z)
for i in range(len(x)):
for j in range(len(x)):
Z[i, j] = F([x[i], y[j]])
X = identity(len(x))
for i in range(len(x)):
X[:, i] = x
Y = X.T
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z, rstride=2, cstride=2, color='blue')
ax = fig.gca(projection = '3d')
ax.plot(sol.x[0], sol.x[1], [F(sol.x)], color='green')
plt.show()
sol.x
最小化する値はどこにありますかF
(簡単にするためsol.x=x*
)。このコードは次のエラーを返します。
Traceback (most recent call last):
File "projet2.py", line 103, in <module>
ax.plot(sol.x[0],sol.x[1],[f1(sol.x)],color='green')
File "/usr/lib/pymodules/python2.7/mpl_toolkits/mplot3d/axes3d.py", line 1296, in plot
len(xs) == len(args[0]) :
TypeError: object of type 'numpy.float64' has no len()
この問題を解決する方法を知っている人はいますか?
ありがとう
クエンティン