スパース行列を実装し、コレスキー分解、LU分解、QR分解などの分解を実行する必要があります。
実際、密行列に対してこれを実行できるJAMAというライブラリを見つけました。
しかし、スパース行列を実装する必要があります。
誰もがスパース行列を実装した経験を共有できますか、それを実装するためのライブラリがありますか。
スパース行列を実装し、コレスキー分解、LU分解、QR分解などの分解を実行する必要があります。
実際、密行列に対してこれを実行できるJAMAというライブラリを見つけました。
しかし、スパース行列を実装する必要があります。
誰もがスパース行列を実装した経験を共有できますか、それを実装するためのライブラリがありますか。
ColtまたはMatrix-Toolkits-Javaを見たことがありますか?これらはあなたを助けるかもしれません。
スパース行列をサポートするla4j (Java用線形代数)ライブラリがあります。la4jは、CRS(圧縮行ストレージ)およびCCS(圧縮列ストレージ)として最も一般的で効果的なスパース表現を使用します。la4jの対応するクラスは次のとおりです:CRSMatrixおよびCCSMatrix。したがって、ソースを調べたり、前述の分解でla4jのスパース行列を直接使用したりできます。
簡単な例を次に示します。
Matrix a = new CRSMatrix(new double[][]{
{ 1.0, 0.0, 0.0 },
{ 0.0, 2.0, 0.0 },
{ 0.0, 0.0, 3.0 }
});
Matrix[] qr = a.decompose(Matrices.QR_DECOMPOSITOR); // qr[0] = Q, qr[1] = R
Matrix[] u = a.decompose(Matrices.CHOLESKY_DECOMPOSITOR); // u[0] = U