/* * Copyright (c) 2009-2014, Peter Abeles. All Rights Reserved. * * This file is part of Efficient Java Matrix Library (EJML). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package mikera.matrixx.decompose; import mikera.matrixx.AMatrix; /** * <p> * QR decompositions decompose a rectangular matrix 'A' such that 'A=QR'. Where * A ∈ ℜ <sup>n × m</sup> , n ≥ m, Q ∈ ℜ <sup>n * × n</sup> is an orthogonal matrix, and R ∈ ℜ <sup>n × * m</sup> is an upper triangular matrix. Some implementations of QR * decomposition require that A has full rank. * </p> * <p> * Some features of QR decompositions: * <ul> * <li>Can decompose rectangular matrices.</li> * <li>Numerically stable solutions to least-squares problem, but not as stable * as SVD</li> * </ul> * </p> * <p> * Orthogonal matrices have the following properties: * <ul> * <li>QQ<sup>T</sup>=I</li> * <li>Q<sup>T</sup>=Q<sup>-1</sup></li> * </ul> * </p> * * @author Peter Abeles */ public interface IQRResult { /** * <p> * Returns the Q matrix from the decomposition. * </p> * * @return The Q matrix. */ public AMatrix getQ(); /** * <p> * Returns the R matrix from the decomposition. * </p> * * @return The R matrix. */ public AMatrix getR(); }