类 RRQRDecomposition

java.lang.Object
org.hipparchus.linear.QRDecomposition
org.hipparchus.linear.RRQRDecomposition

public class RRQRDecomposition extends QRDecomposition
计算矩阵的揭示秩QR分解,带有列置换。

矩阵A的揭示秩QR分解由三个矩阵Q、R和P组成,使得AP=QR。其中Q是正交的(QTQ = I),R是上三角矩阵。如果A是m×n矩阵,则Q是m×m矩阵,R是m×n矩阵,P是n×n矩阵。

具有列置换的QR分解会产生一个揭示秩QR分解,可以使用getRank(double)方法返回输入矩阵A的秩。

该类使用Householder反射来计算分解。

为了提高效率,分解以紧凑形式进行转置。这允许内部循环在行内进行迭代,在Java中这样做更加高效。

该类基于来自JAMA库的同名类,做出以下更改:

另请参阅:
  • 构造器详细资料

    • RRQRDecomposition

      public RRQRDecomposition(RealMatrix matrix)
      计算给定矩阵的QR分解。奇异阈值默认为零。
      参数:
      matrix - 要分解的矩阵。
      另请参阅:
    • RRQRDecomposition

      public RRQRDecomposition(RealMatrix matrix, double threshold)
      计算给定矩阵的QR分解。
      参数:
      matrix - 要分解的矩阵。
      threshold - 奇异阈值。
      另请参阅:
  • 方法详细资料

    • decompose

      protected void decompose(double[][] qrt)
      分解矩阵。
      覆盖:
      decompose 在类中 QRDecomposition
      参数:
      qrt - 转置矩阵
    • performHouseholderReflection

      protected void performHouseholderReflection(int minor, double[][] qrt)
      对A的子矩阵A(minor, minor)执行Householder反射。
      覆盖:
      performHouseholderReflection 在类中 QRDecomposition
      参数:
      minor - 子矩阵索引
      qrt - 转置矩阵
    • getP

      public RealMatrix getP()
      返回在矩阵A的QR分解中使用的置换矩阵P,使得AP = QR。如果在此分解中未使用任何置换,则P等于单位矩阵。
      返回:
      一个置换矩阵。
    • getRank

      public int getRank(double dropThreshold)
      返回有效的数值矩阵秩。

      有效的数值秩是非可忽略奇异值的数量。

      此实现查看右下子矩阵序列的Frobenius范数。当看到范数大幅下降时,将返回秩。下降计算如下:

         (thisNorm/lastNorm) * rNorm < dropThreshold
       

      其中thisNorm是当前子矩阵的Frobenius范数,lastNorm是上一个子矩阵的Frobenius范数,rNorm是完整矩阵的Frobenius范数

      参数:
      dropThreshold - 触发秩计算的阈值
      返回:
      有效的数值矩阵秩
    • getSolver

      public DecompositionSolver getSolver()
      获取用于在最小二乘意义下找到A × X = B解的求解器。

      最小二乘意义意味着可以为超定系统计算一个求解器(即方程数多于未知数的系统,对应于具有比列数更多行的高瘦A矩阵)。在任何情况下,如果矩阵在构造中设置的容差内是奇异的,则在调用solve方法时将触发错误。

      覆盖:
      getSolver 在类中 QRDecomposition
      返回:
      一个求解器