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


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