class_docstr: Representation of a positive semidefinite matrix in factored form.
  
  The representation is constructed based on a vector `diag` and
  rectangular matrix `root`, such that the PSD matrix represented by
  the class instance is Diag + root * root', where Diag is the
  square diagonal matrix with `diag` on its main diagonal.
  
  Parameters
  ----------
  diag : 1d array_like
      See above
  root : 2d array_like
      See above
  
  Notes
  -----
  The matrix is represented internally in the form Diag^{1/2}(I +
  factor * scales * factor')Diag^{1/2}, where `Diag` and `scales`
  are diagonal matrices, and `factor` is an orthogonal matrix.
code: def __init__(self, diag, root):
      self.diag = diag
      self.root = root
      root = root / np.sqrt(diag)[:, None]
      u, s, vt = np.linalg.svd(root, 0)
      self.factor = u
      self.scales = s**2
  
imports: import numpy
  import scipy.sparse
  from scipy.sparse.linalg import svds
  from scipy.optimize import fminbound
  import warnings
  from statsmodels.tools.tools import Bunch
  from statsmodels.tools.sm_exceptions import IterationLimitWarning, iteration_limit_doc
label_desc: Use image node_id 1 to create a new FactoredPSDMatrix object  with example: obj = FactoredPSDMatrix(diag, root)