Документация для Джама не очень хорошая.
Фактически, если вы посмотрите исходный код, вы обнаружите, что Matrix.inverse()
в конечном итоге вызывает LUDecomposition.solve(...)
, а код говорит:
270 /** Solve A*X = B
271 @param B A Matrix with as many rows as A and any number of columns.
272 @return X so that L*U*X = B(piv,:)
273 @exception IllegalArgumentException Matrix row dimensions must agree.
274 @exception RuntimeException Matrix is singular.
275 */
277 public Matrix solve (Matrix B) {
278 if (B.getRowDimension() != m) {
279 throw new IllegalArgumentException("Matrix row dimensions must agree.");
280 }
281 if (!this.isNonsingular()) {
282 throw new RuntimeException("Matrix is singular.");
283 }
Как гласит Википедия:
"В линейной алгебре n-на-n (квадратная) матрица A называется обратимой, невырожденной или невырожденной, если существует n-на-n матрица B такая, что AB = BA = I п
где I n обозначает единичную матрицу n-на-n, а используемое умножение - обычное умножение матриц. "
Короче говоря, единственное число означает необратимый.
Если вы недовольны JAMA, взгляните на библиотеки Apache Commons Maths, в частности модуль Linear Algebra .