Я пытаюсь найти нулевое пространство (основание для ядра) любой данной матрицы в Java. Чтобы упростить жизнь, я использую разложение QR ApacheMath таким образом, что A = QR, где Q - обратимый (сам по себе) иR - матрица верхнего треугольника.
, какой метод мне следует использовать из QR-разложения ApacheMath, чтобы вычислить базу для Ядра R (которая также является основой для ядра A)?
Я использовал: http://commons.apache.org/proper/commons-math/userguide/linear.html
и
http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math4/linear/QRDecomposition.html
ссылки и пришел к следующему коду:
RealMatrix coefficients =
new Array2DRowRealMatrix(new double[][] { { 1,2,2,3 }, { 2,4,1,3 }, { 3,6,1,4 } },
false);
DecompositionSolver solver = new QRDecomposition(coefficients).getSolver();
RealVector constants = new ArrayRealVector(new double[] { 0,0,0 }, false);
RealVector solution = solver.solve(constants);
и отправляет ошибку, что матрица является единственной, что имеет смысл, потому что в первой ссылке, которую я использую, говорится, что:
"если матрица является единственной в пределах допуска, установленного при построении, ошибка будет вызванакогда будет вызван метод решения, как для алгоритмов, которые вычисляют точные решения, так и для алгоритмов, которые вычисляют решения наименьших квадратов. ".