# qrdelete
从 QR 分解中删除列或行
函数库: TyMath
# 语法
Q1,R1 = qrdelete(Q,R,j)
Q1,R1 = qrdelete(Q,R,j,"col")
Q1,R1 = qrdelete(Q,R,j,"row")
# 说明
Q1,R1 = qrdelete(Q,R,j) 返回矩阵 A1 的 QR 分解,其中 A1 是其列 A[:,j] 已删除的 A,Q,R = qr(A) 是 A 的 QR 分解。
Q1,R1 = qrdelete(Q,R,j,"col") 与 qrdelete(Q,R,j) 相同。
Q1,R1 = qrdelete(Q,R,j,"row") 返回矩阵 A1 的 QR 分解,其中 A1 是其行 A[j,:] 已删除的 A,Q,R = qr(A) 是 A 的 QR 分解。
# 示例
从 QR 分解中删除列或行
using TyMath
A = magic(5)
Q,R = qr(A)
j = 3
Q1,R1 = qrdelete(Q,R,j,"row")
Q1 =
4×4 Matrix{Float64}:
0.527401 -0.51966 -0.669671 -0.0578013
0.713543 0.691057 0.0158381 0.114218
0.310236 -0.198212 0.467507 -0.803681
0.34126 -0.461633 0.576825 0.581128
R1 =
4×5 Matrix{Float64}:
32.2335 26.0908 19.9482 21.4063 23.3297
0.0 -19.7045 -10.9891 0.431789 -1.48733
0.0 0.0 22.7444 5.83565 -3.19772
0.0 0.0 0.0 -14.5784 3.77958
返回有效的 QR 分解,虽然可能与以下项不同:
A2 = A
A2 = vcat(A2[1:j-1,:],A2[j+1:end,:])
Q2,R2 = qr(A2)
Q2 = Matrix(Q2)
Q2 =
4×4 Matrix{Float64}:
-0.527401 0.51966 0.669671 -0.0578013
-0.713543 -0.691057 -0.0158381 0.114218
-0.310236 0.198212 -0.467507 -0.803681
-0.34126 0.461633 -0.576825 0.581128
R2 =
4×5 Matrix{Float64}:
-32.2335 -26.0908 -19.9482 -21.4063 -23.3297
0.0 19.7045 10.9891 -0.431789 1.48733
0.0 0.0 -22.7444 -5.83565 3.19772
0.0 0.0 0.0 -14.5784 3.77958
# 算法
qrdelete 函数使用一系列的 Givens 旋转将分解的相应元素置零。