QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
qrdecomposition.hpp
Go to the documentation of this file.
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2008 Klaus Spanderen
5
6 This file is part of QuantLib, a free-software/open-source library
7 for financial quantitative analysts and developers - http://quantlib.org/
8
9 QuantLib is free software: you can redistribute it and/or modify it
10 under the terms of the QuantLib license. You should have received a
11 copy of the license along with this program; if not, please email
12 <quantlib-dev@lists.sf.net>. The license is also available online at
13 <http://quantlib.org/license.shtml>.
14
15 This program is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the license for more details.
18*/
19
20/*! \file qrdecomposition.hpp
21 \brief QR decomposition
22*/
23
24#ifndef quantlib_qr_decomposition_hpp
25#define quantlib_qr_decomposition_hpp
26
27#include <ql/math/matrix.hpp>
28
29namespace QuantLib {
30
31 //! QR decompoisition
32 /*! This implementation is based on MINPACK
33 (<http://www.netlib.org/minpack>,
34 <http://www.netlib.org/cephes/linalg.tgz>)
35
36 This subroutine uses householder transformations with column
37 pivoting (optional) to compute a qr factorization of the
38 m by n matrix A. That is, qrfac determines an orthogonal
39 matrix q, a permutation matrix p, and an upper trapezoidal
40 matrix r with diagonal elements of nonincreasing magnitude,
41 such that A*p = q*r.
42
43 Return value ipvt is an integer array of length n, which
44 defines the permutation matrix p such that A*p = q*r.
45 Column j of p is column ipvt(j) of the identity matrix.
46
47 See lmdiff.cpp for further details.
48 */
49 std::vector<Size> qrDecomposition(const Matrix& A,
50 Matrix& q,
51 Matrix& r,
52 bool pivot = true);
53
54 //! QR Solve
55 /*! This implementation is based on MINPACK
56 (<http://www.netlib.org/minpack>,
57 <http://www.netlib.org/cephes/linalg.tgz>)
58
59 Given an m by n matrix A, an n by n diagonal matrix d,
60 and an m-vector b, the problem is to determine an x which
61 solves the system
62
63 A*x = b , d*x = 0 ,
64
65 in the least squares sense.
66
67 d is an input array of length n which must contain the
68 diagonal elements of the matrix d.
69
70 See lmdiff.cpp for further details.
71 */
72 Array qrSolve(const Matrix& a,
73 const Array& b,
74 bool pivot = true,
75 const Array& d = Array());
76}
77
78#endif
Date d
ext::function< Real(Real)> b
matrix used in linear algebra.
Definition: any.hpp:35
Array qrSolve(const Matrix &a, const Array &b, bool pivot, const Array &d)
QR Solve.
std::vector< Size > qrDecomposition(const Matrix &M, Matrix &q, Matrix &r, bool pivot)
QR decompoisition.
ext::shared_ptr< YieldTermStructure > q
ext::shared_ptr< YieldTermStructure > r