Class Q_Sylvest

java.lang.Object
jline.lib.qmam.Q_Sylvest

public final class Q_Sylvest extends Object
  • Method Details

    • qSylvest

      public static Matrix qSylvest(ComplexMatrix U, ComplexMatrix T, Matrix B)
      Solves the equation X*kron(A,I)+B*X=-I, where kron(A,I)=U*T*U' is given by its complex Schur decomposition (U unitary, T upper triangular).

      Mirrors MATLAB Q_Sylvest.m: B is reduced to upper Hessenberg form NBAR=V'*B*V, the transformed equation Y*T+NBAR*Y=F with F=-V'*U is solved column by column exploiting the triangularity of T, and the solution is mapped back as X=real(V*Y*U').

      Parameters:
      U - unitary factor of the complex Schur decomposition of kron(A,I)
      T - upper triangular factor of the complex Schur decomposition of kron(A,I)
      B - the coefficient matrix multiplying X from the left
      Returns:
      the real solution X
    • qSylvest

      public static Matrix qSylvest(ComplexMatrix U, ComplexMatrix T, Matrix V, Matrix NBAR, Matrix C)
      Solves X*kron(A,I)+B*X=-C, with B given by its Hessenberg form V'*B*V=NBAR and kron(A,I)=U*T*U'.

      This is the right-hand-side form inlined by MATLAB Q_CT_MMAPK_PHK_1.m in its queue length recursions (F=-V'*Cn*U); with C=I it reduces to qSylvest(ComplexMatrix, ComplexMatrix, Matrix).

      Parameters:
      U - unitary factor of the complex Schur decomposition of kron(A,I)
      T - upper triangular factor of the complex Schur decomposition of kron(A,I)
      V - orthogonal factor of the Hessenberg decomposition of B
      NBAR - upper Hessenberg form V'*B*V of B
      C - the right-hand side
      Returns:
      the real solution X
    • schurDecomposition

      public static Map<String,ComplexMatrix> schurDecomposition(Matrix A)
      Computes the complex Schur decomposition of A, equivalent to MATLAB's [U,T] = schur(A,'complex') with A = U*T*U'.
      Parameters:
      A - the matrix to decompose
      Returns:
      a map with keys "U" (unitary) and "T" (upper triangular)
    • kronEye

      public static ComplexMatrix kronEye(ComplexMatrix A, int m)
      Computes kron(A, eye(m)) for a complex matrix A.
      Parameters:
      A - the complex matrix
      m - the order of the identity factor
      Returns:
      the Kronecker product kron(A, eye(m))