2011-08-26 30 views
0

我必須實現稀疏矩陣並做一些分解,如Cholesky分解,LU分解,QR分解。Java中的稀疏矩陣實現和操作

其實我找到了一個名爲JAMA的庫,它可以爲密集矩陣做到這一點。我不得不實現稀疏矩陣。

任何人都可以分享他們實現稀疏矩陣的經驗,或者是否有任何庫來實現它。

回答

1

有一個支持稀疏矩陣的la4j(Linear Algebra for Java)庫。 la4j使用最常見和有效的稀疏表示sush CRS (Compressed Row Storage)CCS (Compressed Column Storage)。以下是la4j中的相應類:CRSMatrixCCSMatrix。因此,您可以直接查看源代碼或直接使用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 
+0

這個解決方案已經過時。 – kongshem