GUPTRI算法利用奇异值分解(SVD)来确定矩阵的数值秩。设 A = U \Sigma V^{\ast} 是一个n \times n矩阵A的SVD,其中U和V是酉矩阵,\Sigma = {\rm diag}(\sigma_1,\ldots,\sigma_n),且 0 \leq \sigma_1 \leq \cdots \leq \sigma_n 。
给定一个容差\epsilon,矩阵的数值秩是满足 \sigma_{n-k+1} > \epsilon \cdot \sigma_n 的最大k值。这种定义并不能保证秩的稳定性,即相对于\epsilon的微小扰动可能导致矩阵秩的变化。如果\sigma_{n-k+1}仅略大于\sigma_{n-k},则秩对扰动敏感。给定一个常数gap,要求选择k为满足以下条件的最大数: \sigma_{n-k+1} > \epsilon \cdot \sigma_n 且 \sigma_{n-k+1} > gap \cdot \sigma_{n-k} (参考文献[121,122])。在实际应用中,使用\sigma_{n-k+1} > \epsilon \Vert A\Vert _F,即用\Vert A \Vert _F替代\Vert A\Vert _2。如果gap准则失败,\sigma_{n-k}也被视为零。此过程重复进行,直到gap准则得到满足。如果无法满足,则对于容差参数\epsilon和gap,数值秩未定义。