@Override public Matrix transSolve(Matrix B, Matrix X) { // We allow non-square matrices, as we then use a least-squares solver if (numColumns != B.numRows()) throw new IllegalArgumentException("numColumns != B.numRows() (" + numColumns + " != " + B.numRows() + ")"); if (numRows != X.numRows()) throw new IllegalArgumentException("numRows != X.numRows() (" + numRows + " != " + X.numRows() + ")"); if (X.numColumns() != B.numColumns()) throw new IllegalArgumentException( "X.numColumns() != B.numColumns() (" + X.numColumns() + " != " + B.numColumns() + ")"); return QRsolve(B, X, Transpose.Transpose); }
@Override public Matrix transSolve(Matrix B, Matrix X) { // We allow non-square matrices, as we then use a least-squares solver if (numColumns != B.numRows()) throw new IllegalArgumentException("numColumns != B.numRows() (" + numColumns + " != " + B.numRows() + ")"); if (numRows != X.numRows()) throw new IllegalArgumentException("numRows != X.numRows() (" + numRows + " != " + X.numRows() + ")"); if (X.numColumns() != B.numColumns()) throw new IllegalArgumentException( "X.numColumns() != B.numColumns() (" + X.numColumns() + " != " + B.numColumns() + ")"); return QRsolve(B, X, Transpose.Transpose); }
@Override public Matrix solve(Matrix B, Matrix X) { // We allow non-square matrices, as we then use a least-squares solver if (numRows != B.numRows()) throw new IllegalArgumentException("numRows != B.numRows() (" + numRows + " != " + B.numRows() + ")"); if (numColumns != X.numRows()) throw new IllegalArgumentException("numColumns != X.numRows() (" + numColumns + " != " + X.numRows() + ")"); if (X.numColumns() != B.numColumns()) throw new IllegalArgumentException( "X.numColumns() != B.numColumns() (" + X.numColumns() + " != " + B.numColumns() + ")"); if (isSquare()) return LUsolve(B, X); else return QRsolve(B, X, Transpose.NoTranspose); }
@Override public Matrix solve(Matrix B, Matrix X) { // We allow non-square matrices, as we then use a least-squares solver if (numRows != B.numRows()) throw new IllegalArgumentException("numRows != B.numRows() (" + numRows + " != " + B.numRows() + ")"); if (numColumns != X.numRows()) throw new IllegalArgumentException("numColumns != X.numRows() (" + numColumns + " != " + X.numRows() + ")"); if (X.numColumns() != B.numColumns()) throw new IllegalArgumentException( "X.numColumns() != B.numColumns() (" + X.numColumns() + " != " + B.numColumns() + ")"); if (isSquare()) return LUsolve(B, X); else return QRsolve(B, X, Transpose.NoTranspose); }