input: Write a function to implement the gradient descent algorithm in Python. The function should take input parameters x, y, learning_rate, and iterations, and return the optimized values of m_curr and b_curr after performing the specified number of iterations.
  assert gradient_descent([1, 2, 3, 4, 5], [5, 7, 9, 11, 13], 0.01, 100) == (2.0, 3.0)
  assert gradient_descent([1, 2, 3, 4, 5], [6, 8, 10, 12, 14], 0.01, 100) == (2.0, 4.0)
  assert gradient_descent([1, 2, 3, 4, 5], [5, 7, 9, 11, 13], 0.02, 100) == (2.0, 3.0)
  assert gradient_descent([1, 2, 3, 4, 5], [6, 8, 10, 12, 14], 0.02, 100) == (2.0, 4.0)
output: def gradient_descent(x, y, learning_rate, iterations):
      m_curr = 0
      b_curr = 0
      n = len(x)
      for i in range(iterations):
          y_predicted = m_curr * x + b_curr
          md = -(2/n) * sum(x * (y - y_predicted))
          bd = -(2/n) * sum(y - y_predicted)
          m_curr = m_curr - learning_rate * md
          b_curr = b_curr - learning_rate * bd
      return m_curr, b_curr