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


Julia LinearAlgebra.lu!用法及代码示例


用法一

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

计算稀疏矩阵 A 的 LU 分解,重用存储在 F 中的现有 LU 分解的符号分解。稀疏矩阵 A 必须具有与用于创建 LU 分解 F 的矩阵相同的非零模式,否则将引发错误。

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

注意

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

Julia 1.5

lu! for UmfpackLU 至少需要 Julia 1.5。

例子

julia> A = sparse(Float64[1.0 2.0; 0.0 3.0]);

julia> F = lu(A);

julia> B = sparse(Float64[1.0 1.0; 0.0 1.0]);

julia> lu!(F, B);

julia> F \ ones(2)
2-element Vector{Float64}:
 0.0
 1.0

用法二

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

lu! lu 相同,但通过覆盖输入 A 而不是创建副本来节省空间。如果因式分解产生的数字不能由 A 的元素类型表示,则会引发 InexactError 异常,例如对于整数类型。

例子

julia> A = [4. 3.; 6. 3.]
2×2 Matrix{Float64}:
 4.0  3.0
 6.0  3.0

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> iA = [4 3; 6 3]
2×2 Matrix{Int64}:
 4  3
 6  3

julia> lu!(iA)
ERROR: InexactError: Int64(0.6666666666666666)
Stacktrace:
[...]

相关用法


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