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


Julia LinearAlgebra.bunchkaufman用法及代碼示例


用法:

bunchkaufman(A, rook::Bool=false; check = true) -> S::BunchKaufman

根據存儲在 A 中的三角形,計算對稱或 Hermitian 矩陣 A 的 Bunch-Kaufman [Bunch1977] 分解為 P'*U*D*U'*PP'*L*D*L'*P ,並返回 BunchKaufman 對象。請注意,如果 A 是複對稱的,則 U'L' 表示非共軛轉置,即 transpose(U)transpose(L)

在給定 S.uploS.p 的情況下,迭代分解產生組件 S.DS.US.L

如果 rooktrue ,則使用車旋轉。如果rook 為假,則不使用車旋轉。

check = true 時,如果分解失敗,則會引發錯誤。當 check = false 時,檢查分解的有效性(通過 issuccess )由用戶負責。

以下函數可用於BunchKaufman 對象: size \ inv issymmetric ishermitian getindex

例子

julia> A = [1 2; 2 3]
2×2 Matrix{Int64}:
 1  2
 2  3

julia> S = bunchkaufman(A) # A gets wrapped internally by Symmetric(A)
BunchKaufman{Float64, Matrix{Float64}}
D factor:
2×2 Tridiagonal{Float64, Vector{Float64}}:
 -0.333333  0.0
  0.0       3.0
U factor:
2×2 UnitUpperTriangular{Float64, Matrix{Float64}}:
 1.0  0.666667
  ⋅   1.0
permutation:
2-element Vector{Int64}:
 1
 2

julia> d, u, p = S; # destructuring via iteration

julia> d == S.D && u == S.U && p == S.p
true

julia> S.U*S.D*S.U' - S.P*A*S.P'
2×2 Matrix{Float64}:
 0.0  0.0
 0.0  0.0

julia> S = bunchkaufman(Symmetric(A, :L))
BunchKaufman{Float64, Matrix{Float64}}
D factor:
2×2 Tridiagonal{Float64, Vector{Float64}}:
 3.0   0.0
 0.0  -0.333333
L factor:
2×2 UnitLowerTriangular{Float64, Matrix{Float64}}:
 1.0        ⋅
 0.666667  1.0
permutation:
2-element Vector{Int64}:
 2
 1

julia> S.L*S.D*S.L' - A[S.p, S.p]
2×2 Matrix{Float64}:
 0.0  0.0
 0.0  0.0

相關用法


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