用法一
ldlt(A::SparseMatrixCSC; shift = 0.0, check = true, perm=nothing) -> CHOLMOD.Factor
计算A
.A
必须是SparseMatrixCSC
或一个LinearAlgebra.Symmetric/LinearAlgebra.Hermitian一个视图SparseMatrixCSC
.请注意,即使A
没有类型标签,它仍然必须是对称的或 Hermitian。使用fill-reducing 排列。F = ldlt(A)
最常用于求解方程组A*x = b
和F\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
计算实对称三对角矩阵S
的LDLt
分解,使得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
相关用法
- Julia LinearAlgebra.ldlt!用法及代码示例
- Julia LinearAlgebra.ldiv!用法及代码示例
- Julia LinearAlgebra.logdet用法及代码示例
- Julia LinearAlgebra.lu用法及代码示例
- Julia LinearAlgebra.lq用法及代码示例
- Julia LinearAlgebra.logabsdet用法及代码示例
- Julia LinearAlgebra.lmul!用法及代码示例
- Julia LinearAlgebra.lyap用法及代码示例
- Julia LinearAlgebra.lu!用法及代码示例
- Julia LinearAlgebra.BLAS.dot用法及代码示例
- Julia LinearAlgebra.bunchkaufman用法及代码示例
- Julia LinearAlgebra.cholesky!用法及代码示例
- Julia LinearAlgebra.istriu用法及代码示例
- Julia LinearAlgebra.istril用法及代码示例
- Julia LinearAlgebra.stride1用法及代码示例
- Julia LinearAlgebra.svd用法及代码示例
- Julia LinearAlgebra.eigen用法及代码示例
- Julia LinearAlgebra.BLAS.dotu用法及代码示例
- Julia LinearAlgebra.I用法及代码示例
- Julia LinearAlgebra.Transpose用法及代码示例
- Julia LinearAlgebra.det用法及代码示例
- Julia LinearAlgebra.tril!用法及代码示例
- Julia LinearAlgebra.schur!用法及代码示例
- Julia LinearAlgebra.tr用法及代码示例
- Julia LinearAlgebra.axpby!用法及代码示例
注:本文由纯净天空筛选整理自julialang.org大神的英文原创作品 LinearAlgebra.ldlt — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。