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
线程。
非常欢迎贡献、功能请求和建议。如果您遇到任何问题,请打开问题。