code: def linear_grid(D, n = 100, min_max = (-100, 100)):
      
  
      g = np.linspace(min_max[0], min_max[1], n)
      G = np.ones((n, D))
  
      return G*g[:,None]
docs: Creates a D-dimensional grid of n linearly spaced points
  
      :param D: dimension of the grid
      :param n: number of points
      :param min_max: (min, max) list