當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Julia LinearAlgebra.GeneralizedSVD用法及代碼示例


用法:

GeneralizedSVD <: Factorization

兩個矩陣 AB 的廣義奇異值分解 (SVD) 的矩陣分解類型,例如 A = F.U*F.D1*F.R0*F.Q'B = F.V*F.D2*F.R0*F.Q' 。這是 svd(_, _) 的返回類型,對應的矩陣分解函數。

對於 M-by-N 矩陣 A 和 P-by-N 矩陣 B

  • U是一個M-by-M正交矩陣,
  • V是一個P-by-P正交矩陣,
  • Q是一個N-by-N正交矩陣,
  • D1 是一個 M-by-(K+L) 對角矩陣,前 K 個條目中有 1,
  • D2 是一個P-by-(K+L) 矩陣,其右上角L-by-L 塊是對角線,
  • R0 是一個 (K+L)-by-N 矩陣,其最右邊的 (K+L)-by-(K+L) 塊是非奇異的上塊三角形,

K+L 是矩陣 [A; B] 的有效數值秩。

迭代分解產生組件 UVQD1D2R0

F.D1F.D2 的條目是相關的,如 LAPACK 文檔中對 generalized SVDxGGSVD3 例程(在 LAPACK 3.6.0 和更高版本中)調用的解釋。

例子

julia> A = [1. 0.; 0. -1.]
2×2 Matrix{Float64}:
 1.0   0.0
 0.0  -1.0

julia> B = [0. 1.; 1. 0.]
2×2 Matrix{Float64}:
 0.0  1.0
 1.0  0.0

julia> F = svd(A, B)
GeneralizedSVD{Float64, Matrix{Float64}}
U factor:
2×2 Matrix{Float64}:
 1.0  0.0
 0.0  1.0
V factor:
2×2 Matrix{Float64}:
 -0.0  -1.0
  1.0   0.0
Q factor:
2×2 Matrix{Float64}:
 1.0  0.0
 0.0  1.0
D1 factor:
2×2 SparseArrays.SparseMatrixCSC{Float64, Int64} with 2 stored entries:
 0.707107   ⋅
  ⋅        0.707107
D2 factor:
2×2 SparseArrays.SparseMatrixCSC{Float64, Int64} with 2 stored entries:
 0.707107   ⋅
  ⋅        0.707107
R0 factor:
2×2 Matrix{Float64}:
 1.41421   0.0
 0.0      -1.41421

julia> F.U*F.D1*F.R0*F.Q'
2×2 Matrix{Float64}:
 1.0   0.0
 0.0  -1.0

julia> F.V*F.D2*F.R0*F.Q'
2×2 Matrix{Float64}:
 0.0  1.0
 1.0  0.0

相關用法


注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 LinearAlgebra.GeneralizedSVD — Type。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。