lessthanoptimal/ejml

A fast and easy to use linear algebra library written in Java for dense, sparse, real, and complex matrices.

EJML: 効率的な Java 行列ライブラリ

それは何か

Java 用の線形代数ライブラリ — 行列を扱うための数学ツール — 100% Java で書かれ、Apache v2.0 ライセンスの下で無料で公開されています。実数、複素数、密行列、疎行列を扱います。

設計目標

  • 効率性: 小さい行列と大きい行列の両方に対して、可能な限り計算効率とメモリ効率を高めます。
  • アクセシビリティ: 初心者と専門家の両方が使用できます。
  • 実行時に最適なアルゴリズムを選択し、クリーンな API を提供し、複数のインターフェースを提供することで、これらの目標を達成します。

3 つの使用方法

  1. Operations(手続き型) — 最下位レベルで、メモリ、速度、特定のアルゴリズムをほぼ完全に制御できます。手続き型 API(行列に対する関数呼び出し)を使用します。
  2. SimpleMatrix — Jama に触発された、簡素化された使いやすいオブジェクト指向 API で、フロースタイルのインターフェースを備えています。
  3. Equations — Matlab に似たシンボリックインターフェース。コンパクトな方程式文字列を書くことができます。

これら 3 つはすべて同じ数学を実行できます(README には各スタイルのカルマンゲインの例が示されています)。

機能のハイライト

  • 基本演算子 — 加算、乗算など
  • 行列操作 — 抽出、挿入、結合など
  • 線形ソルバー — 線形、最小二乗、増分
  • 分解 — LU、QR、Cholesky、SVD、固有値など
  • 行列の特徴 — ランク、対称性、定値性など
  • ランダム行列生成 — 共分散、直交、対称
  • 異なる内部形式 — 行優先、ブロック、疎
  • Graph BLAS(セミリング)
  • シングルスレッドおよび並行実装
  • Kotlin 拡張
  • すべてのアルゴリズムのユニットテスト

品質とパフォーマンス

  • 正確性を保証するために広範にユニットテストされています
  • 内部および Java Matrix Benchmark に対してベンチマークされています
  • ドキュメントは ejml.org(マニュアル、JavaDoc)にあります

パッケージとモジュール

Maven Central で org.ejml:ejml-all:0.46.0 として入手可能(または個別のモジュールを取得):

モジュール 目的
ejml-core コアデータ構造と共通コード
ejml-fdense 密な実数 32 ビット浮動小数点アルゴリズム
ejml-ddense 密な実数 64 ビット浮動小数点アルゴリズム
ejml-cdense 密な複素数 32 ビット浮動小数点アルゴリズム
ejml-zdense 密な複素数 64 ビット浮動小数点アルゴリズム
ejml-fsparse 疎な実数 32 ビット浮動小数点アルゴリズム
ejml-dsparse 疎な実数 64 ビット浮動小数点アルゴリズム
ejml-simple SimpleMatrix および Equations インターフェース
ejml-java9module Java モジュールシステム(JPMS)用の単一統合 jar

Java モジュールシステムの注意: 複数の ejml-* モジュールを同時にモジュールパスに配置しないでください。パッケージ分割エラーが発生します。代わりに ejml-java9module jar を使用してください。

行列タイプの命名規則

行列クラス名は DMatrixRMaj のようなパターンに従います:

  • 最初の文字 = データ型:D(実数 double)、F(実数 float)、Z(複素数 double)、C(複素数 float)、B(バイナリ)
  • 中間 = 構造:RMaj(密な行優先)、RBlock(ブロック)、NxN/N(固定サイズ)、CSC(圧縮スパース列)、Triplet

例:DMatrixRMaj = double、実数、密、行優先行列。

ソースからのビルド

  • Gradle でビルドされます。Java 17+ が必要ですが、Java 11 バイトコードを生成します。
  • コマンド:./gradlew autogenerate 次に ./gradlew publishToMavenLocal。
  • その他のコマンド:createLibraryDirectory(すべてのモジュール jar を ejml/libraries に保存)および oneJar(すべてを単一の EJML.jar にコンパイル)。
  • 事前ビルドされた jar は Maven Central で入手可能です。ほとんどのユーザーはビルドする必要はありません。

リポジトリ構成

  • docs/ — ドキュメント(古い可能性があります。オンラインが最新です)
  • examples/ — 使用例
  • main/ — ライブラリのソースコード
  • change.txt — バージョン履歴

コミュニティとサポート

  • Google グループ: efficient-java-matrix-library-discuss
  • 問題トラッカー: GitHub issues(github.com/lessthanoptimal/ejml/issues)
  • クレジット: 著者は David Watkins(『行列計算の基礎』)と Timothy A. Davis(『疎線形システムの直接法』および CSparse、これが疎アルゴリズムの種となりました)に感謝します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト