\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - dD Geometry Kernel

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
Matrix Concept Reference
Linear Algebra Concepts

## Definition

An instance of data type `Matrix` is a matrix of variables of number type `NT`. The types `Matrix` and `Vector` together realize many functions of basic linear algebra.

## Types
typedef unspecified_type | NT
| the ring type of the components.
typedef unspecified_type | iterator
| bidirectional iterator for accessing all components row-wise.
typedef unspecified_type | const_iterator
| bidirectional iterator for accessing all components row-wise.
typedef unspecified_type | row_iterator
| random access iterator for accessing row entries.
typedef unspecified_type | const_row_iterator
| random access iterator for accessing row entries.
typedef unspecified_type | column_iterator
| random access iterator for accessing column entries.
typedef unspecified_type | const_column_iterator
| random access iterator for accessing column entries.
typedef unspecified_type | Identity
| a tag class for identity initialization
typedef unspecified_type | Vector
| the vector type used.

## Creation
| Matrix ()
| creates an instance `M` of type `Matrix`.
| Matrix (int n)
| creates an instance `M` of type `Matrix` of dimension \( n \times n\) initialized to the zero matrix.
| Matrix (int m, int n)
| creates an instance `M` of type `Matrix` of dimension \( m \times n\) initialized to the zero matrix.
| Matrix (std::pair< int, int > p)
| creates an instance `M` of type `Matrix` of dimension `p.first` \( \times\)`p.second` initialized to the zero matrix.
| Matrix (int n, Identity, NT x=NT(1))
| creates an instance `M` of type `Matrix` of dimension \( n \times n\) initialized to the identity matrix (times `x`).
| Matrix (int m, int n, NT x)
| creates an instance `M` of type `Matrix` of dimension \( m \times n\) initialized to the matrix with `x` entries.
template<class Forward_iterator >
| Matrix (Forward_iterator first, Forward_iterator last)
| creates an instance `M` of type `Matrix`. More...
| Matrix (std::vector< Vector > A)
| creates an instance `M` of type `Matrix`. More...

## Operations
int | row_dimension ()
| returns \( n\), the number of rows of `M`.
int | column_dimension ()
| returns \( m\), the number of columns of `M`.
std::pair< int, int > | dimension ()
| returns \( (m,n)\), the dimension pair of `M`.
Vector | row (int i)
| returns the \( i\)-th row of `M` (an \( m\) - vector). More...
Vector | column (int i)
| returns the \( i\)-th column of `M` (an \( n\) - vector). More...
NT & | operator() (int i, int j)
| returns \( M_{i,j}\). More...
void | swap_rows (int i, int j)
| swaps rows \( i\) and \( j\). More...
void | swap_columns (int i, int j)
| swaps columns \( i\) and \( j\). More...
row_iterator | row_begin (int i)
| an iterator pointing to the first entry of the \( i\)th row. More...
row_iterator | row_end (int i)
| an iterator pointing beyond the last entry of the \( i\)th row. More...
const_row_iterator | row_begin (int i) const
| an iterator pointing to the first entry of the \( i\)th row. More...
const_row_iterator | row_end (int i) const
| an iterator pointing beyond the last entry of the \( i\)th row. More...
column_iterator | column_begin (int i)
| an iterator pointing to the first entry of the \( i\)th column. More...
column_iterator | column_end (int i)
| an iterator pointing beyond the last entry of the \( i\)th column. More...
const_column_iterator | column_begin (int i) const
| an iterator pointing to the first entry of the \( i\)th column. More...
const_column_iterator | column_end (int i) const
| an iterator pointing beyond the last entry of the \( i\)th column. More...
iterator | begin ()
| an iterator pointing to the first entry of \( M\).
terator | end ()
| an iterator pointing beyond the last entry of \( M\).
const_iterator | begin () const
| an iterator pointing to the first entry of \( M\).
const_terator | end () const
| an iterator pointing beyond the last entry of \( M\).
bool | operator== (const Matrix &M1)
| Test for equality.
bool | operator!= (const Matrix &M1)
| Test for inequality.

## Arithmetic Operators
Matrix | operator+ (const Matrix &M1)
| Addition. More...
Matrix | operator- (const Matrix &M1)
| Subtraction. More...
Matrix | operator- ()
| Negation.
Matrix | operator* (const Matrix &M1)
| Multiplication. More...
Vector | operator* (const Vector &vec)
| Multiplication with vector. More...
Matrix | operator* (const NT &x, const Matrix &M)
| Multiplication of every entry with `x`.
Matrix | operator* (const Matrix &M, const NT &x)
| Multiplication of every entry with `x`.

## Constructor & Destructor Documentation

template<class Forward_iterator >

Matrix::Matrix | ( | Forward_iterator | first,
|  | Forward_iterator | last
| ) |  |

creates an instance `M` of type `Matrix`.

Let \( S\) be the ordered set of \( n\) column-vectors of common dimension \( m\) as given by the iterator range `[first,last)`. `M` is initialized to an \( m \times n\) matrix with the columns as specified by \( S\).

Precondition
  `Forward_iterator` has a value type `V` from which we require to provide a iterator type `V::const_iterator`, to have `V::value_type == NT`.

Note that `Vector` or `std::vector<NT>` fulfill these requirements.

Matrix::Matrix | ( | std::vector< Vector > | A) |  |

creates an instance `M` of type `Matrix`.

Let \( A\) be an array of \( n\) column-vectors of common dimension \( m\). `M` is initialized to an \( m \times n\) matrix with the columns as specified by \( A\).

## Member Function Documentation

Vector Matrix::column | ( | int | i) |  |

returns the \( i\)-th column of `M` (an \( n\) - vector).

Precondition
  \( 0 \le i \le n - 1\).

column_iterator Matrix::column_begin | ( | int | i) |  |

an iterator pointing to the first entry of the \( i\)th column.

Precondition
  \( 0\le i\le n-1\).

const_column_iterator Matrix::column_begin | ( | int | i) |  | const

an iterator pointing to the first entry of the \( i\)th column.

Precondition
  \( 0\le i\le n-1\).

column_iterator Matrix::column_end | ( | int | i) |  |

an iterator pointing beyond the last entry of the \( i\)th column.

Precondition
  \( 0\le i\le n-1\).

const_column_iterator Matrix::column_end | ( | int | i) |  | const

an iterator pointing beyond the last entry of the \( i\)th column.

Precondition
  \( 0\le i\le n-1\).

NT& Matrix::operator() | ( | int | i,
|  | int | j
| ) |  |

returns \( M_{i,j}\).

Precondition
  \( 0\le i\le m-1\) and \( 0\le j\le n-1\).

Matrix Matrix::operator* | ( | const Matrix & | M1) |  |

Multiplication.

Precondition
  `M.column_dimension() = M1.row_dimension()`

Vector Matrix::operator* | ( | const Vector & | vec) |  |

Multiplication with vector.

Precondition
  `M.column_dimension() = vec.dimension()`

Matrix Matrix::operator+ | ( | const Matrix & | M1) |  |

Addition.

Precondition
  `M.row_dimension() == M1.row_dimension()`
  `M.column_dimension() == M1.column_dimension()`

Matrix Matrix::operator- | ( | const Matrix & | M1) |  |

Subtraction.

Precondition
  `M.row_dimension() == M1.row_dimension()`
  `M.column_dimension() == M1.column_dimension()`

Vector Matrix::row | ( | int | i) |  |

returns the \( i\)-th row of `M` (an \( m\) - vector).

Precondition
  \( 0 \le i \le m - 1\).

row_iterator Matrix::row_begin | ( | int | i) |  |

an iterator pointing to the first entry of the \( i\)th row.

Precondition
  \( 0\le i\le m-1\).

const_row_iterator Matrix::row_begin | ( | int | i) |  | const

an iterator pointing to the first entry of the \( i\)th row.

Precondition
  \( 0\le i\le m-1\).

row_iterator Matrix::row_end | ( | int | i) |  |

an iterator pointing beyond the last entry of the \( i\)th row.

Precondition
  \( 0\le i\le m-1\).

const_row_iterator Matrix::row_end | ( | int | i) |  | const

an iterator pointing beyond the last entry of the \( i\)th row.

Precondition
  \( 0\le i\le m-1\).

void Matrix::swap_columns | ( | int | i,
|  | int | j
| ) |  |

swaps columns \( i\) and \( j\).

Precondition
  \( 0\le i\le n-1\) and \( 0\le j\le n-1\).

void Matrix::swap_rows | ( | int | i,
|  | int | j
| ) |  |

swaps rows \( i\) and \( j\).

Precondition
  \( 0\le i\le m-1\) and \( 0\le j\le m-1\).