当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。