# CholeskyDecomposition (3) - Linux Man Pages

## NAME

QuantLib::Matrix - Matrix used in linear algebra.

## SYNOPSIS

#include <ql/math/matrix.hpp>

Inherited by Disposable< Matrix >.

### Public Types

typedef Real * iterator

typedef const Real * const_iterator

typedef boost::reverse_iterator< iterator > reverse_iterator

typedef boost::reverse_iterator< const_iterator > const_reverse_iterator

typedef Real * row_iterator

typedef const Real * const_row_iterator

typedef boost::reverse_iterator< row_iterator > reverse_row_iterator

typedef boost::reverse_iterator< const_row_iterator > const_reverse_row_iterator

typedef step_iterator< iterator > column_iterator

typedef step_iterator< const_iterator > const_column_iterator

typedef boost::reverse_iterator< column_iterator > reverse_column_iterator

typedef boost::reverse_iterator< const_column_iterator > const_reverse_column_iterator

### Public Member Functions

Constructors, destructor, and assignment

Matrix ()
creates a null matrix
Matrix (Size rows, Size columns)
creates a matrix with the given dimensions
Matrix (Size rows, Size columns, Real value)
creates the matrix and fills it with value
Matrix (const Matrix &)

Matrix (const Disposable< Matrix > &)

Matrix & operator= (const Matrix &)

Matrix & operator= (const Disposable< Matrix > &)

Algebraic operators

const Matrix & operator+= (const Matrix &)

const Matrix & operator-= (const Matrix &)

const Matrix & operator*= (Real)

const Matrix & operator/= (Real)

Iterator access

const_iterator begin () const

iterator begin ()

const_iterator end () const

iterator end ()

const_reverse_iterator rbegin () const

reverse_iterator rbegin ()

const_reverse_iterator rend () const

reverse_iterator rend ()

const_row_iterator row_begin (Size i) const

row_iterator row_begin (Size i)

const_row_iterator row_end (Size i) const

row_iterator row_end (Size i)

const_reverse_row_iterator row_rbegin (Size i) const

reverse_row_iterator row_rbegin (Size i)

const_reverse_row_iterator row_rend (Size i) const

reverse_row_iterator row_rend (Size i)

const_column_iterator column_begin (Size i) const

column_iterator column_begin (Size i)

const_column_iterator column_end (Size i) const

column_iterator column_end (Size i)

const_reverse_column_iterator column_rbegin (Size i) const

reverse_column_iterator column_rbegin (Size i)

const_reverse_column_iterator column_rend (Size i) const

reverse_column_iterator column_rend (Size i)

Element access

const_row_iterator operator[] (Size) const

const_row_iterator at (Size) const

row_iterator operator[] (Size)

row_iterator at (Size)

Disposable< Array > diagonal (void) const

Inspectors

Size rows () const

Size columns () const

bool empty () const

Utilities

void swap (Matrix &)

### Related Functions

(Note that these are not member functions.)
const Disposable< Matrix > operator+ (const Matrix &, const Matrix &)

const Disposable< Matrix > operator- (const Matrix &, const Matrix &)

const Disposable< Matrix > operator* (const Matrix &, Real)

const Disposable< Matrix > operator* (Real, const Matrix &)

const Disposable< Matrix > operator/ (const Matrix &, Real)

const Disposable< Array > operator* (const Array &, const Matrix &)

const Disposable< Array > operator* (const Matrix &, const Array &)

const Disposable< Matrix > operator* (const Matrix &, const Matrix &)

const Disposable< Matrix > transpose (const Matrix &)

const Disposable< Matrix > outerProduct (const Array &v1, const Array &v2)

template<class Iterator1 , class Iterator2 > const Disposable< Matrix > outerProduct (Iterator1 v1begin, Iterator1 v1end, Iterator2 v2begin, Iterator2 v2end)

void swap (Matrix &, Matrix &)

std::ostream & operator<< (std::ostream &, const Matrix &)

Disposable< Matrix > inverse (const Matrix &m)

Real determinant (const Matrix &m)

const Disposable< Matrix > CholeskyDecomposition (const Matrix &m, bool flexible=false)

const Disposable< Matrix > pseudoSqrt (const Matrix &, SalvagingAlgorithm::Type=SalvagingAlgorithm::None)
Returns the pseudo square root of a real symmetric matrix.
const Disposable< Matrix > rankReducedSqrt (const Matrix &, Size maxRank, Real componentRetainedPercentage, SalvagingAlgorithm::Type)
Returns the rank-reduced pseudo square root of a real symmetric matrix.

## Detailed Description

Matrix used in linear algebra.

This class implements the concept of Matrix as used in linear algebra. As such, it is not meant to be used as a container.

## Member Function Documentation

### const Matrix & operator+= (const Matrix & m)

Precondition:

all matrices involved in an algebraic expression must have the same size.

## Friends And Related Function Documentation

### const Disposable< Matrix > pseudoSqrt (const Matrix &, SalvagingAlgorithm::Type = SalvagingAlgorithm::None) [related]

Returns the pseudo square root of a real symmetric matrix.

Given a matrix \$ M \$, the result \$ S \$ is defined as the matrix such that \$ S S^T = M. \$ If the matrix is not positive semi definite, it can return an approximation of the pseudo square root using a (user selected) salvaging algorithm.

For more information see: 'The most general methodology to create a valid correlation matrix for risk management and option pricing purposes', by R. Rebonato and P. Jäckel. The Journal of Risk, 2(2), Winter 1999/2000 http://www.rebonato.com/correlationmatrix.pdf

Revised and extended in 'Monte Carlo Methods in Finance', by Peter Jäckel, Chapter 6.

Precondition:

the given matrix must be symmetric.

Warning

Higham algorithm only works for correlation matrices.

Tests

*
the correctness of the results is tested by reproducing known good data.
*
the correctness of the results is tested by checking returned values against numerical calculations.

### const Disposable< Matrix > rankReducedSqrt (const Matrix &, Size maxRank, Real componentRetainedPercentage, SalvagingAlgorithm::Type) [related]

Returns the rank-reduced pseudo square root of a real symmetric matrix.

The result matrix has rank<=maxRank. If maxRank>=size, then the specified percentage of eigenvalues out of the eigenvalues' sum is retained.

If the input matrix is not positive semi definite, it can return an approximation of the pseudo square root using a (user selected) salvaging algorithm.

Precondition:

the given matrix must be symmetric.

## Author

Generated automatically by Doxygen for QuantLib from the source code.