pythonでGriewankを3dグラフで出力する際にエラー
https://www.cs.unm.edu/~neal.holts/dga/benchmarkFunction/griewank.html
上記のサイトを参考にGriewankの3Dグラフをpythonで出力しようとしたのですがエラーが出ます
全く原因が分からないので詳しい方がいましたら教えてください
お願いします
ソースコード
import numpy as np
import random
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import math
def func1(self, chromosome):
"""F6 Griewank's function
multimodal, symmetric, inseparable"""
part1 = 0
for i in range(len(chromosome)):
part1 += chromosome[i]**2
part2 = 1.0
for i in range(len(chromosome)):
part2 *= math.cos(float(chromosome[i]) / math.sqrt(i+1.0))
return 1 + (float(part1)/4000.0) - float(part2)
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
X, Y = np.meshgrid(x, y)
Z = func1(X, Y)
fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
ax.plot_wireframe(X, Y, Z)
plt.show()
エラー
TypeError Traceback (most recent call last) <ipython-input-46-c8c05ada4569> in <module>()
22
23 X, Y = np.meshgrid(x, y)
---> 24 Z = func1(X, Y)
25
26 fig = plt.figure()
<ipython-input-46-c8c05ada4569> in func1(self, chromosome)
14
15 for i in range(len(chromosome)):
---> 16 part2 *= math.cos(float(chromosome[i]) / math.sqrt(i+1.0))
17
18 return 1 + (float(part1)/4000.0) - float(part2)
TypeError: only size-1 arrays can be converted to Python scalars