秩亏矩阵QR分解:Julia中对角元零判定公式的求解
Julia中QR分解判定矩阵秩亏的阈值判定方法
在数值计算中,判定QR分解后R矩阵的对角元是否可视为零,核心采用相对阈值准则,而非固定绝对数值——因为绝对阈值会被矩阵的尺度大小干扰,相对准则更具通用性。具体判定公式与逻辑如下:
- 对目标矩阵执行QR分解,得到上三角矩阵R,提取其对角元集合
{r₁₁, r₂₂, ..., rₙₙ}(Julia中默认输出的R矩阵对角元是降序排列的)。 - 计算R矩阵对角元中的最大值:
r_max = maximum(abs.(diag(R))) - 计算判定阈值,公式为:
其中:threshold = n * eps(T) * r_maxn是矩阵的维度(若为m×n矩阵,取较大的维度值)eps(T)是当前计算所用浮点数类型T的机器精度(比如Float64的eps()约为2.22e-16,Float32约为1.19e-7)r_max是R矩阵对角元的最大绝对值
- 遍历R的每个对角元
r_ii,若abs(r_ii) < threshold,则认为该对角元在数值意义上等价于0,对应矩阵存在线性相关的列/行,可判定为秩亏矩阵。
补充说明:
- 乘以维度
n是为了抵消数值计算过程中累积的误差,这是数值线性代数领域的通用经验修正。 - 若问题对精度要求更宽松或严格,可调整阈值的系数,比如用
sqrt(n)*eps(T)或10n*eps(T),但n*eps(T)是最常用的保守性阈值。
内容的提问来源于stack exchange,提问作者James Rider
相关产品推荐
相关产品推荐

