Я также использую Jama для SVD и имею ту же проблему при решении большой матрицы.
Чтобы уменьшить количество случаев переполнения памяти, я настроил SingularValueDecomposition.java на компактный. Настройка заключается в том, что в матрице A она имеет так много значений 0 (ноль), что компакт для всех используемых матриц, таких как A, U, V, Work и т. Д., Только позволяет памяти для доступного значения, которое больше 0.
Прежде чем использовать компактный SVD, вы должны сделать матричный файл, такой как
r / t c / t value / n
r / t c / t value / n
... '/ t' и '/ n' означают табуляцию и новую строку соответственно.
примеры, (0, 0, 0), (0, 1, 0,5), (0, 2, 0), (0, 3, 0,2), (1, 0, 1), (1, 1, 0), (1, 2, 0), (1, 3, 0.3) и размер матрицы 2 * 4 (R * C), тогда вы просто создаете файл как
MATRIXSIZE / т 2 / т 4 / н
0 / т 1 / т 0,5 / н
0 / т 3 / т 0,2 / н
1 / т 0 / т 1 / н
1 / т 3 / т 0,3 / н
Если вы хотите его использовать, сообщите мне свой адрес электронной почты (mg.hwang@gmail.com).
Я дам более подробную информацию, чтобы использовать его по электронной почте.
Я проверил, что результат был правильным. Однако я не уверен, насколько он эффективен для компьютера.
Во всяком случае, это работает и показывает лучше, даже если не сильно.