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メソッド *1 を使って、BigMatixもしくはRealMatrixのインスタンスを生成。
3.生成したインスタンスを利用して、行列計算
ちなみに、このRealMatrixインターフェース等を見てもらうと分かる通り、生成されるインスタンスは不変ではありません。複数のスレッド間で参照・変更をする場合は、必ず同期をとる必要があります。
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メソッド *1 を使って、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()); # 行列式の表示
}
*1
: XXXは、RealやBig等と置き換わります。詳細はAPIを参照。
トラックバック(1)
このブログ記事を参照しているブログ一覧: Apache Commonsを使って行列計算
このブログ記事に対するトラックバックURL: http://trialpc.net/mt/mt-tb.cgi/1753
» Javaで行列式を計算する(LostMemories)~のトラックバック
Javaで行列式を計算させるのに一番手っ取り早いのはフリーのライブラリを利用する... 続きを読む

コメントする