線形問題、特異値および固有値問題、および線形マップまたは演算子の関数のベクトルへの適用のための多数の Krylov ベースのアルゴリズムを集めた Julia パッケージ。
ドキュメント | ビルドステータス | デジタルオブジェクト識別子 | ライセンス |
---|---|---|---|
このバージョンでは、 Base
およびLinearAlgebra
の最小限のメソッド セットではなく、VectorInterface.jl に依存し、VectorInterface.jl を使用して入力ベクトルのベクトルのような動作を定義するようになりました。利点は、入れ子になったベクトルやタプルなどの不変オブジェクトなど、標準 Julia のさらに多くの型がそのままサポートされることです。必要なメソッドの古いセットが実装されていたカスタム ユーザー タイプの場合、VectorInferace.jl にはメソッドのフォールバック定義があり、これらのタイプは引き続きサポートされるはずですが、これにより警告が出力される可能性があります。少なくとも、VectorInterface のバンなしまたはダブルバンありのメソッドに対する完全なサポートを実装することをお勧めします。タイプがこの動作をサポートしている場合、後者のメソッドのセットはインプレース突然変異を使用できます。
特に、タプルがサポートされるようになりました。
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
: 線形非一次常微分方程式の指数積分器。 ϕ₀(z) = exp(z)
を一般化するϕⱼ
関数の線形結合を計算します。 KrylovKit.jl
Julia パッケージ マネージャーを使用してインストールできます。 Julia REPL から、 ]
と入力して Pkg REPL モードに入り、次を実行します。
pkg> add KrylovKit
または、同様に、 Pkg
API を使用します。
julia > import Pkg; Pkg . add ( " KrylovKit.jl " )
このパッケージは、Linux、macOS、および Windows、32 ビットおよび 64 ビット アーキテクチャ、 1
スレッドと4
スレッドでの Julia master
ブランチの現在の安定版および夜間ビルドである Julia 1.0
に対してテストされています。
機能のリクエストや提案と同様に、貢献も大歓迎です。問題が発生した場合は、問題を開いてください。