Apache Commonsを使って行列計算

ApacheプロジェクトのうちのApache Commons Mathライブラリでは、行列計算を簡単に行うためのAPIが提供されています。もし、Javaで行列計算をさっさとやってしまいたい場合などは非常に役に立つと思います。

Apache Commons Mathは次のページからダウンロードできます。
[web] Aapche Commons Math
このページの「Releases」と書かれたタイトルの下にあるリンクから、ダウンロードページに行けます。現在の最新リリースは、Ver.1.2 です。

Commons Mathのライブラリを取得してきたら、javadocを見ながら早速作成してみましょう。
このライブラリの中で、行列計算をするために重要なのは、MatrixUtilsクラス、BigMatrixインターフェース、RealMatrixインターフェースです。
(パッケージは全てorg.apache.commons.math.linear です。)

行列計算をさせる流れは以下の通り。
1.行列として扱いたいデータ(配列の配列)を用意する。
2.MatrixUtilsクラスのcreateXXXMatrixメソッド(XXXは、RealやBig等と置き換わります。詳細はAPIを参照。)を使って、BigMatixもしくはRealMatrixのインスタンスを生成。
3.生成したインスタンスを利用して、行列計算

ちなみに、このRealMatrixインターフェース等を見てもらうと分かる通り、生成されるインスタンスは不変ではありません。複数のスレッド間で参照・変更をする場合は、必ず同期をとる必要があります。

public static void main(String[] args){
  double[][] array = {
    {1,2,3},
    {4,5,6},
    {7,8,9}
  };
  RealMatrix matrix = MatrixUtils.createRealMatrix(array);
  System.out.println(matrix.getDeterminant());  # 行列式の表示
}

前へ

VMWare Server 2.0で入力を求められるユーザID/パスワード

次へ

Javaで行列式計算(余因子展開)