code: def minimum_eigen_vector(x, num_steps, learning_rate, vector_prod_fn):
    
    x = tf.nn.l2_normalize(x)
    for _ in range(num_steps):
      x = eig_one_step(x, learning_rate, vector_prod_fn)
    return x
docs: Computes eigenvector which corresponds to minimum eigenvalue.
  
    Args:
      x: initial value of eigenvector.
      num_steps: number of optimization steps.
      learning_rate: learning rate.
      vector_prod_fn: function which takes x and returns product H*x.
  
    Returns:
      approximate value of eigenvector.
  
    This function finds approximate value of eigenvector of matrix H which
    corresponds to smallest (by absolute value) eigenvalue of H.
    It works by solving optimization problem x^{T}*H*x -> min.