class_docstr: Barrier optimization problem:
      minimize fun(x) - barrier_parameter*sum(log(s))
      subject to: constr_eq(x)     = 0
                constr_ineq(x) + s = 0
docstr: Returns scaled Lagrangian Hessian
docstr_tok: ["Returns","scaled","Lagrangian","Hessian"]
code: def lagrangian_hessian(self, z, v):
      """Returns scaled Lagrangian Hessian"""
      # Compute Hessian in relation to x and s
      Hx = self.lagrangian_hessian_x(z, v)
      if self.n_ineq > 0:
          S_Hs_S = self.lagrangian_hessian_s(z, v)
  
      # The scaled Lagragian Hessian is:
      #     [ Hx    0    ]
      #     [ 0   S Hs S ]
      def matvec(vec):
          vec_x = self.get_variables(vec)
          vec_s = self.get_slack(vec)
          if self.n_ineq > 0:
              return np.hstack((Hx.dot(vec_x), S_Hs_S * vec_s))
          else:
              return Hx.dot(vec_x)
  
      return LinearOperator(
          (self.n_vars + self.n_ineq, self.n_vars + self.n_ineq), matvec
      )
  
imports: import scipy.sparse
  import numpy
  from .equality_constrained_sqp import equality_constrained_sqp
  from scipy.sparse.linalg import LinearOperator
label_desc: Use image node_id 15 for calling the BarrierSubproblem obj's underlying member method code with example usage: obj.lagrangian_hessian(z, v) and returns: LinearOperator, np, Hx