Paket Julia yang mengumpulkan sejumlah algoritme berbasis Krylov untuk masalah linier, masalah nilai tunggal dan nilai eigen, serta penerapan fungsi peta linier atau operator pada vektor.
Dokumentasi | Membangun Status | Pengenal Objek Digital | Lisensi |
---|---|---|---|
Versi ini sekarang bergantung pada dan menggunakan VectorInterface.jl untuk mendefinisikan perilaku seperti vektor dari vektor masukan, bukan sekumpulan metode minimal dari Base
dan LinearAlgebra
. Keuntungannya adalah lebih banyak tipe dari Julia standar yang kini didukung secara langsung, seperti vektor bersarang atau objek yang tidak dapat diubah seperti tupel. Untuk tipe pengguna khusus yang menerapkan kumpulan metode lama yang diperlukan, terdapat definisi fallback metode di VectorInferace.jl sehingga tipe ini tetap didukung, namun hal ini mungkin mengakibatkan peringatan dicetak. Disarankan untuk menerapkan dukungan penuh setidaknya untuk metode di VectorInterface tanpa bang atau dengan double bang, di mana rangkaian metode terakhir dapat menggunakan mutasi di tempat jika tipe Anda mendukung perilaku ini.
Secara khusus, tupel sekarang didukung:
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 menerima fungsi umum atau objek yang dapat dipanggil sebagai peta linier, dan objek Julia umum dengan perilaku seperti vektor (seperti yang didefinisikan dalam dokumen) sebagai vektor.
Antarmuka tingkat tinggi KrylovKit disediakan oleh fungsi-fungsi berikut:
linsolve
: menyelesaikan sistem liniereigsolve
: temukan beberapa nilai eigen dan vektor eigen yang sesuaigeneigsolve
: temukan beberapa nilai eigen umum dan vektor yang sesuaisvdsolve
: temukan beberapa nilai tunggal dan vektor tunggal kiri dan kanan yang sesuaiexponentiate
: menerapkan eksponensial peta linier ke vektorexpintegrator
: integrator eksponensial untuk ODE non-homogen linier, menghitung kombinasi linier fungsi ϕⱼ
yang menggeneralisasi ϕ₀(z) = exp(z)
. KrylovKit.jl
dapat diinstal dengan manajer paket Julia. Dari Julia REPL, ketik ]
untuk masuk ke mode Pkg REPL dan jalankan:
pkg> add KrylovKit
Atau, yang setara, melalui Pkg
API:
julia > import Pkg; Pkg . add ( " KrylovKit.jl " )
Paket ini diuji terhadap Julia 1.0
, versi stabil saat ini dan versi malam dari cabang master
Julia di Linux, macOS, dan Windows, arsitektur 32 dan 64-bit dan dengan 1
dan 4
thread.
Kontribusi sangat diharapkan, begitu pula permintaan dan saran fitur. Silakan buka masalah jika Anda mengalami masalah.