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