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


Julia LinearAlgebra.ldlt用法及代碼示例


用法一

ldlt(A::SparseMatrixCSC; shift = 0.0, check = true, perm=nothing) -> CHOLMOD.Factor

計算LDL' 稀疏矩陣的分解A.A必須是SparseMatrixCSC或一個LinearAlgebra.Symmetric/LinearAlgebra.Hermitian一個視圖SparseMatrixCSC.請注意,即使A沒有類型標簽,它仍然必須是對稱的或 Hermitian。使用fill-reducing 排列。F = ldlt(A)最常用於求解方程組A*x = bF\b.返回的分解對象F也支持方法LinearAlgebra.diag,LinearAlgebra.det,LinearAlgebra.logdet, 和inv方法.您可以從F使用F.L.但是,由於默認情況下啟用了透視,因此分解在內部表示為A == P'*L*D*L'*P有一個置換矩陣P;隻使用L不考慮P會給出不正確的答案。為了包括排列的影響,通常最好提取 "combined" 因子,例如PtL = F.PtL(相當於P'*L) 和LtP = F.UP(相當於L'*P)。支持因子的完整列表是:L, :PtL, :D, :UP, :U, :LD, :DU, :PtLD, :DUP.

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

設置可選的 shift 關鍵字參數計算 A+shift*I 而不是 A 的分解。如果提供了perm 參數,它應該是1:size(A,1) 的排列,給出使用的順序(而不是 CHOLMOD 的默認 AMD 順序)。

注意

此方法使用 SuiteSparse 中的 CHOLMOD 庫,該庫僅支持雙打或複雙打。不屬於這些元素類型的輸入矩陣將酌情轉換為SparseMatrixCSC{Float64}SparseMatrixCSC{ComplexF64}

CHOLMOD 中的許多其他函數都已包裝,但未從 Base.SparseArrays.CHOLMOD 模塊導出。

用法二

ldlt(S::SymTridiagonal) -> LDLt

計算實對稱三對角矩陣SLDLt 分解,使得S = L*Diagonal(d)*L' 其中L 是單位下三角矩陣,d 是向量。 LDLt 因式分解 F = ldlt(S) 的主要用途是用 F\b 求解線性方程組 Sx = b

例子

julia> S = SymTridiagonal([3., 4., 5.], [1., 2.])
3×3 SymTridiagonal{Float64, Vector{Float64}}:
 3.0  1.0   ⋅
 1.0  4.0  2.0
  ⋅   2.0  5.0

julia> ldltS = ldlt(S);

julia> b = [6., 7., 8.];

julia> ldltS \ b
3-element Vector{Float64}:
 1.7906976744186047
 0.627906976744186
 1.3488372093023255

julia> S \ b
3-element Vector{Float64}:
 1.7906976744186047
 0.627906976744186
 1.3488372093023255

相關用法


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