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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。