我必须实现稀疏矩阵并进行一些分解,如Cholesky分解,LU分解,QR分解。
实际上我找到了一个名为JAMA的库,它能够为密集矩阵做到这一点。
但我必须实现稀疏矩阵。
任何人都可以分享他们实现稀疏矩阵的经验,或者是否有任何库来实现它。
答案 0 :(得分:1)
您是否看过Colt或Matrix-Toolkits-Java?这些可能会帮助你。
答案 1 :(得分:1)
有一个支持稀疏矩阵的la4j(线性代数for Java)库。 la4j使用最常见且有效的稀疏表示形式CRS (Compressed Row Storage)和CCS (Compressed Column Storage)。以下是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