Я пытаюсь выполнить инверсию для матриц, размер которых превышает 10 000 x 10 000.
InverterTask<Double> matrixInverter = InverterTask.PRIMITIVE.make(storeM);
try{
storeI = matrixInverter.invert(storeM);
}catch (RecoverableCondition e){
throw new RuntimeException(e);
}
storeM - это матрица размером 10 000 x 10000.
Однако я столкнулся со следующей ошибкой:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at org.ojalgo.array.Primitive64Array.<init>(Primitive64Array.java:368)
at org.ojalgo.matrix.store.PrimitiveDenseStore.<init>(PrimitiveDenseStore.java:482)
at org.ojalgo.matrix.store.PrimitiveDenseStore$1.makeZero(PrimitiveDenseStore.java:255)
at org.ojalgo.matrix.store.PrimitiveDenseStore$1.makeZero(PrimitiveDenseStore.java:95)
at org.ojalgo.matrix.decomposition.GenericDecomposition.makeZero(GenericDecomposition.java:105)
at org.ojalgo.matrix.decomposition.InPlaceDecomposition.setInPlace(InPlaceDecomposition.java:83)
at org.ojalgo.matrix.decomposition.LUDecomposition.compute(LUDecomposition.java:266)
at org.ojalgo.matrix.decomposition.LUDecomposition.decompose(LUDecomposition.java:94)
at org.ojalgo.matrix.decomposition.LUDecomposition.invert(LUDecomposition.java:199)
at distlearn.Inversion.main(Inversion.java:46)
Какие еще методы я могу использовать в ojAlgo для выполнения такой задачи?
Редактировать:
Я на самом деле хочу выполнить регрессию гребня ядра, используя двойную проблему. Это означает, что для набора данных из N записей мне может потребоваться выполнить инверсию матрицы NxN.