Мне было интересно, какой правильный и лучший способ на Java инвертировать (двойную) 2D-матрицу. Мой вход (MatrixToBeInverted) - двойной [] [], заполненный и более 20x20. Использование такого кода приведет к ошибкам.Лучший способ инвертировать n x n Матрица
invMatrix = LinearAlgebra.inverse(MatrixToBeInverted);
Я читал, что функция .inverse() устарела.
При использовании Apache Commons 2.4 с таким кодом:
System.out.println(new org.apache.commons.math3.linear.LUDecomposition(
MatrixUtils.createRealMatrix(MatrixToBeInverted)
).getSolver().getInverse());
Я получаю такую ошибку:
Exception in thread "main" org.apache.commons.math3.linear.SingularMatrixException: matrix is singular
at org.apache.commons.math3.linear.LUDecomposition$Solver.solve(LUDecomposition.java:335)
at org.apache.commons.math3.linear.LUDecomposition$Solver.getInverse(LUDecomposition.java:383)
at MatrixCalc.calculateMatrix(MatrixCalc.java:405)
at MatrixCalc.main(MatrixCalc.java:932)
Но на самом деле я знаю, что матрица ввода может быть перевернутой.
Какую библиотеку вы используете? Java не имеет стандартного класса LinearAlgebra. – user2357112
Следующее -> org.math.array.LinearAlgebra – user3086819
Это [JMathTools] (http://jmathtools.berlios.de/doku.php)? Или [JMathArray] (https://code.google.com/p/jmatharray/)? Я не вижу ничего, говоря, что метод 'inverse' устарел. – user2357112