当矩阵A 的列数大于其秩时,qr(A) 会产生怎样的奇怪结果?是什么原因导致了这种结果?

编程语言 2026-07-09

我不了解Julia的 qr 函数的行为。

对于 qr(A_1) 的结果,A_1 的秩为2,因此结果符合预期。

另一方面,qr(A_2) 的结果令人困惑。由于 A_2 的秩为1,我原本期望 Q 的列数为1,R 的行数也为1。然而,实际结果在 Q 中显示有2 列,在 R 中显示有2 行。

在我看来,Q 的第二列和 R 的第二行似乎没有意义。请解释 qr 的这看似怪异的行为。

using LinearAlgebra
e_1 = zeros(4)
e_1[1] = 1
e_2 = zeros(4)
e_2[2] = 1
A_1 = [e_1 e_2]
Q, R = qr(A_1)
display(Matrix(Q))
display(R)
4×2 Matrix{Float64}:
 1.0  0.0
 0.0  1.0
 0.0  0.0
 0.0  0.0
2×2 Matrix{Float64}:
 1.0  0.0
 0.0  1.0
A_2 = [e_1 e_1]
Q, R = qr(A_2)
display(Matrix(Q))
display(R)
4×2 Matrix{Float64}:
 1.0  0.0
 0.0  1.0
 0.0  0.0
 0.0  0.0
2×2 Matrix{Float64}:
 1.0  1.0
 0.0  0.0

解决方案

从数学角度看,矩形矩阵的QR分解有时会出现一些无意义的数值。你所期望的,这被称为“瘦QR”或“简化的QR分解”。

维基百科 > QR分解 > 矩形矩阵

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章