input: Write a python function to implement the given optimization algorithm and return the minimum value and its corresponding x value.
  assert opt(f, 0, 0.1, 100) == (x_value, min_value)  # Replace x_value and min_value with the expected results
  assert opt(f, 5, 0.01, 1000) == (x_value, min_value)  # Replace x_value and min_value with the expected results
  assert opt(f, -3, 0.1, 100) == (x_value, min_value)  # Replace x_value and min_value with the expected results
output: def opt(f, x0, alpha, max_iter):
      x = x0
      for _ in range(max_iter):
          grad = (f(x + 1e-6) - f(x)) / 1e-6  # Numerical gradient approximation
          x -= alpha * grad
      return x, f(x)