input: Write a python function to optimize a given mathematical function over specified ranges for x and y, returning the minimum value and corresponding (x, y) coordinates.
  assert optimize(lambda x, y: x**2 + y**2, (-2, 2), (-3, 3)) == (0.0, 0.0, 0.0)
  assert optimize(lambda x, y: (x-1)**2 + (y+2)**2, (-2, 2), (-3, 3)) == (0.0, 1.0, -2.0)
  assert optimize(lambda x, y: np.sin(x) + np.cos(y), (-np.pi, np.pi), (-np.pi, np.pi)) == (-2.0, 0.0, np.pi)
output: def optimize(func, x_range, y_range):
      from scipy.optimize import minimize
      import numpy as np
  
      def objective(xy):
          x, y = xy
          return func(x, y)
  
      x0 = [0, 0]
      bounds = [x_range, y_range]
      result = minimize(objective, x0, bounds=bounds)
      x_min, y_min = result.x
      min_value = result.fun
  
      return min_value, x_min, y_min