# 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 旋转将分解的相应元素置零。

# 另请参阅

planerot | qrinsert