KrylovKit.jl
v0.8.3
一個 Julia 包,收集了許多基於 Krylov 的線性問題、奇異值和特徵值問題的演算法以及線性映射函數或向量運算符的應用。
文件 | 建置狀態 | 數字物件識別符 | 執照 |
---|---|---|---|
此版本現在依賴並使用 VectorInterface.jl 來定義輸入向量的類似向量的行為,而不是Base
和LinearAlgebra
中的一些最小方法集。優點是現在支援開箱即用的標準 Julia 中的更多類型,例如巢狀向量或不可變物件(例如元組)。對於實作了舊的所需方法集的自訂使用者類型,VectorInferace.jl 中有方法的後備定義,以便仍然支援這些類型,但這可能會導致列印警告。建議至少對 VectorInterface 中不帶 bang 或帶 double bang 的方法實現完全支持,如果您的類型支持此行為,則後一組方法可以使用就地突變。
特別是,現在支援元組:
julia > values, vectors, info = eigsolve (t -> cumsum (t) .+ 0.5 .* reverse (t), ( 1 , 0 , 0 , 0 ));
julia > values
4 - element Vector{ComplexF64} :
2.5298897746721303 + 0.0im
0.7181879189193713 + 0.4653321688070444im
0.7181879189193713 - 0.4653321688070444im
0.03373438748912972 + 0.0im
julia > vectors
4 - element Vector{NTuple{ 4 , ComplexF64}} :
( 0.25302539267845964 + 0.0im , 0.322913174072047 + 0.0im , 0.48199234088257203 + 0.0im , 0.774201921982351 + 0.0im )
( 0.08084058845575778 + 0.46550907490257704im , 0.16361072959559492 - 0.20526827902633993im , - 0.06286027036719286 - 0.6630573167350086im , - 0.47879640378455346 - 0.18713670961291684im )
( 0.08084058845575778 - 0.46550907490257704im , 0.16361072959559492 + 0.20526827902633993im , - 0.06286027036719286 + 0.6630573167350086im , - 0.47879640378455346 + 0.18713670961291684im )
( 0.22573986355213632 + 0.0im , - 0.5730667760748933 + 0.0im , 0.655989711683001 + 0.0im , - 0.4362493350466509 + 0.0im )
KrylovKit.jl 接受通用函數或可呼叫物件作為線性映射,以及具有類似向量行為(如文件中定義)的通用 Julia 物件作為向量。
KrylovKit 的高階介面由下列函數提供:
linsolve
:求解線性系統eigsolve
:找到一些特徵值和對應的特徵向量geneigsolve
:找出一些廣義特徵值和對應的向量svdsolve
:找到一些奇異值和對應的左右奇異向量exponentiate
:將線性映射的指數應用於向量expintegrator
:線性非齊次 ODE 的指數積分器,計算ϕⱼ
函數的線性組合,該函數概括ϕ₀(z) = exp(z)
。 KrylovKit.jl
可以使用 Julia 套件管理器安裝。在 Julia REPL 中,輸入]
進入 Pkg REPL 模式並運行:
pkg> add KrylovKit
或者,等效地,透過Pkg
API:
julia > import Pkg; Pkg . add ( " KrylovKit.jl " )
該軟體包針對 Julia 1.0
進行了測試,Julia 1.0 是 Linux、macOS 和 Windows 上 Julia master
分支的當前穩定版和夜間版本,32 位元和 64 位元架構以及1
和4
。
非常歡迎貢獻、功能請求和建議。如果您遇到任何問題,請開啟問題。