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


Julia LinearAlgebra.lu用法及代码示例


用法一

lu(A::SparseMatrixCSC; check = true) -> F::UmfpackLU

计算稀疏矩阵 A 的 LU 分解。

对于具有实数或复数元素类型的稀疏 AF 的返回类型为 UmfpackLU{Tv, Ti} ,其中 Tv = Float64 ComplexF64 并且 Ti 是整数类型( Int32 Int64 )。

check = true 时,如果分解失败,则会引发错误。当 check = false 时,检查分解的有效性(通过 issuccess )由用户负责。

分解F 的各个组件可以通过索引访问:

零件说明
LL(下三角)部分的LU
UU(上三角)部分的LU
p右排列Vector
q左排列Vector
RsVector 比例因子
:(L,U,p,q,Rs) 组件

FA之间的关系是

F.L*F.U == (F.Rs .* A)[F.p, F.q]

F进一步支持以下函数:

注意

lu(A::SparseMatrixCSC) 使用作为 SuiteSparse 一部分的 UMFPACK 库。由于此库仅支持具有 Float64 ComplexF64 元素的稀疏矩阵,因此 luA 转换为类型为 SparseMatrixCSC{Float64}SparseMatrixCSC{ComplexF64} 的副本(视情况而定)。

用法二

lu(A, pivot = RowMaximum(); check = true) -> F::LU

计算 A 的 LU 分解。

check = true 时,如果分解失败,则会引发错误。当 check = false 时,检查分解的有效性(通过 issuccess )由用户负责。

在大多数情况下,如果 AAbstractMatrix{T} 的子类型 S 且元素类型 T 支持 +-*/ ,则返回类型为 LU{T,S{T}} 。如果选择了旋转(默认),则元素类型还应支持 abs < 。可以通过传递 pivot = NoPivot() 来关闭旋转。

分解 F 的各个组件可以通过 getproperty 访问:

零件说明
F.LL(下三角)部分的LU
F.UU(上三角)部分的LU
F.p(右)排列Vector
F.P(右)排列Matrix

迭代分解生成组件 F.LF.UF.p

FA之间的关系是

F.L*F.U == A[F.p, :]

F进一步支持以下函数:

支持的函数LULU{T,Tridiagonal{T}}
:/
:\方法
inv方法
LinearAlgebra.det
LinearAlgebra.logdet
LinearAlgebra.logabsdet
size

例子

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

julia> F = lu(A)
LU{Float64, Matrix{Float64}}
L factor:
2×2 Matrix{Float64}:
 1.0       0.0
 0.666667  1.0
U factor:
2×2 Matrix{Float64}:
 6.0  3.0
 0.0  1.0

julia> F.L * F.U == A[F.p, :]
true

julia> l, u, p = lu(A); # destructuring via iteration

julia> l == F.L && u == F.U && p == F.p
true

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 LinearAlgebra.lu — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。