Матрица

Матрица

Описание

Шаблонный класс matrix<T, F, A> является базовым контейнерным адаптером для плотных матриц. Для (m x n)-размерной матрицы и 0 <= i < m, 0 <= j < n каждый элемент mi, j отображается в (i x n + j)-й элемент контейнера для главного направления строки или (i + j x m)-й элемент контейнера для главного направления колонки.

Пример

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    matrix<double> m (3, 3);
    for (unsigned i = 0; i < m.size1 (); ++ i)
        for (unsigned j = 0; j < m.size2 (); ++ j)
            m (i, j) = 3 * i + j;
    std::cout << m << std::endl;
}

Будет выведено на экран:

[3,3]((0,1,2),(3,4,5),(6,7,8))

Определение

Определено в заголовочном файле matrix.hpp.

Параметры шаблона

Параметр

Описание

Значение по умолчанию

T

Тип объектов, размещаемых в матрице.

F

Функция, определяющая организацию хранения. [1]

row_major

A

Тип массива Storage (хранилища). [2]

unbounded_array<T>

Функции-члены

Функция-член

Описание

matrix ()

Создает пустую матрицу matrix, которая содержит "0" строк и "0" столбцов.

matrix (size_type size1, size_type size2)

Создает пустую матрицу matrix, которая содержит size1 строк и size2 столбцов.

matrix (const matrix &m)

Конструктор копирования.

template<class AE>
matrix (const matrix_expression<AE> &ae)

Расширенный конструктор копирования.

void resize (size_type size1, size_type size2, bool preserve = true)

Переинициализирует объект matrix до размеров size1 строк и size2 столбцов. Существующие элементы matrix сохраняются.

size_type size1 () const

Возврящает число строк.

size_type size2 () const

Возвращает число столбцов.

const array_type& data () const

array_type& data ()

const_reference operator () (size_type i, size_type j) const

Возвращает const ссылку на j -й элемент в i-ой строке.

reference operator () (size_type i, size_type j)

Возвращает ссылку на j -й элемент в i-ой строке.

matrix &operator = (const matrix &m)

Оператор присваивания.

matrix &assign_temporary (matrix &m)

Устанавливает временную матрицу. Может изменять матрицу m.

template<class AE>
matrix &operator = (const matrix_expression<AE> &ae)

Расширенный оператор присваивания.

template<class AE>
matrix &assign (const matrix_expression<AE> &ae)

Задает матричное выражение для матрицы. Левая и правая части присваивания должны быть независимыми.

template<class AE>
matrix &operator += (const matrix_expression<AE> &ae)

Вычисленный оператор присваивания. Добавляет матричное выражение к матрице.

template<class AE>
matrix &plus_assign (const matrix_expression<AE> &ae)

Добавляет матричное выражение к матрице. Левая и правая части присваивания должны быть независимыми.

template<class AE>
matrix &operator -= (const matrix_expression<AE> &ae)

Вычисленный оператор присваивания. Вычитает матричное выражение из матрицы.

template<class AE>
matrix &minus_assign (const matrix_expression<AE> &ae)

Вычитает матричное выражение из матрицы. Левая и правая части присваивания должны быть независимыми.

template<class AT>
matrix &operator *= (const AT &at)

Вычисленный оператор присваивания. Умножает матрицу на число.

template<class AT>
matrix &operator /= (const AT &at)

Вычисленный оператор присваивания. Делит матрицу на число.

void swap (matrix &m)

Обменивает содержимое матриц.

void insert_element (size_type i, size_type j, const_reference t)

Вставляет значение t в j-ый элемент i-ой строки.

void erase_element (size_type i, size_type j)

Удаляет значение t в j-ом элементе i-ой строки.

void clear ()

Очищает матрицу.

const_iterator1 begin1 () const

Возвращает const_iterator1, указывающий на начало matrix.

const_iterator1 end1 () const

Возвращает const_iterator1, указывающий на конец matrix.

iterator1 begin1 ()

Возвращает iterator1, указывающий на начало matrix.

iterator1 end1 ()

Возвращает iterator1, указывающий на конец matrix.

const_iterator2 begin2 () const

Возвращает const_iterator2, указывающий на начало matrix.

const_iterator2 end2 () const

Возвращает const_iterator2, указывающий на конец matrix.

iterator2 begin2 ()

Возвращает iterator2, указывающий на начало matrix.

iterator2 end2 ()

Возвращает iterator2, указывающий на конец matrix.

const_reverse_iterator1 rbegin1 () const

Возвращает const_reverse_iterator1, указывающий на начало инвертированной (обратной) matrix.

const_reverse_iterator1 rend1 () const

Возвращает const_reverse_iterator1, указывающий на конец инвертированной (обратной) matrix.

reverse_iterator1 rbegin1 ()

Возвращает reverse_iterator1, указывающий на начало инвертированной (обратной) matrix.

reverse_iterator1 rend1 ()

Возвращает reverse_iterator1, указывающий на конец инвертированной (обратной) matrix.

const_reverse_iterator2 rbegin2 () const

Возвращает const_reverse_iterator2, указывающий на начало инвертированной (обратной) matrix.

const_reverse_iterator2 rend2 () const

Возвращает const_reverse_iterator2, указывающий на конец инвертированной (обратной) matrix.

reverse_iterator2 rbegin2 ()

Возвращает reverse_iterator2, указывающий на начало инвертированной (обратной) matrix.

reverse_iterator2 rend2 ()

Возвращает reverse_iterator2, указывающий на конец инвертированной (обратной) matrix.

Notes

[1] Поддерживаемые параметры организации хранения: row_major и column_major.

[2] Основные параметры для массива: unbounded_array<T> , bounded_array<T> и std::vector<T> .

Единичная матрица

Описание

Шаблонный класс identity_matrix<T> представляет единичные матрицы. Для (m x n)-размерной единичной матрицы и 0 <= i < m, 0 <= j < n элементы idi, j = 0, если i <> j, и idi, i= 1.

Пример

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    identity_matrix<double> m (3);
    std::cout << m << std::endl;
}

Будет выведено на экран:

[3,3]((1,0,0),(0,1,0),(0,0,1))

Определение

Определена в заголовочном файле matrix.hpp.

Параметры шаблона

Параметр

Описание

Значение по умолчанию

T

Тип объектов, размещаемых в матрице.

int

Функции-члены

Функции-члены

Описание

identity_matrix ()

Создает объект класса identity_matrix, который содержит "0" строк и "0" столбцов.

identity_matrix (size_type size)

Создает объект класса identity_matrix, который содержит size строк и size столбцов.

identity_matrix (const identity_matrix &m)

Конструктор копирования.

void resize (size_type size, bool preserve = true)

Изменяет размер identity_matrix до размера в size строк и size столбцов. Поэтому существующие элементы itendity_matrix всегда сохраняются.

size_type size1 () const

Возвращает число строк.

size_type size2 () const

Возвращает число столбцов.

const_reference operator () (size_type i, size_type j) const

Возвращает значение элемента в i-ой строке и вj-ом столбце.

identity_matrix &operator = (const identity_matrix &m)

Оператор присваивания.

identity_matrix &assign_temporary (identity_matrix &m)

Устанавливает временную матрицу. Может изменять единичную матрицу m .

void swap (identity_matrix &m)

Обменивает содержимое единичных матриц.

const_iterator1 begin1 () const

Вовзвращает const_iterator1, указывающий на начало identity_matrix.

const_iterator1 end1 () const

Вовзвращает const_iterator1, указывающий на конец identity_matrix.

const_iterator2 begin2 () const

Вовзвращает const_iterator2, указывающий на начало identity_matrix.

const_iterator2 end2 () const

Вовзвращает const_iterator2, указывающий на конец identity_matrix.

const_reverse_iterator1 rbegin1 () const

Вовзвращает const_reverse_iterator1, указывающий на начало инвертированной (обратной) identity_matrix.

const_reverse_iterator1 rend1 () const

Вовзвращает const_reverse_iterator1, указывающий на конец инвертированной (обратной) identity_matrix.

const_reverse_iterator2 rbegin2 () const

Вовзвращает const_reverse_iterator2, указывающий на начало инвертированной (обратной) identity_matrix.

const_reverse_iterator2 rend2 () const

Вовзвращает const_reverse_iterator2, указывающий на конец инвертированной (обратной) identity_matrix.

Нулевая матрица

Описание

Шаблонный класс zero_matrix<T> представляет нулевые матрицы. В (m x n)-размерной нулевой матрице и 0 <= i < m, 0 <= j < n содержатся элементы zi, j = 0.

Пример

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    zero_matrix<double> m (3, 3);
    std::cout << m << std::endl;
}

Будет выведено на экран:

[3,3]((0,0,0),(0,0,0),(0,0,0))

Определение

Определена в заголовочном файле matrix.hpp.

Параметры шаблона

Параметр

Описание

Значение по умолчанию

T

Тип объектов, размещаемых в матрице.

int

Функции-члены

Функции-члены

Описание

zero_matrix ()

Создает объект класса zero_matrix, содержащий "0" строк и "0" столбцов.

zero_matrix (size_type size1, size_type size2)

Создает объект класса zero_matrix, содержащий size1 строк и size2 столбцов.

zero_matrix (const zero_matrix &m)

Конструктор копирования.

void resize (size_type size1, size_type size2, bool preserve = true)

Изменяет размер zero_matrix до матрицы, содержащей size1 строк и size2 столбцов. Существующие элемены матрицы zero_matrix всегда сохраняются.

size_type size1 () const

Возвращает количество строк.

size_type size2 () const

Возвращает количество столбцов.

const_reference operator () (size_type i, size_type j) const

Возвращает значение элемента в i-ой строке и в j-м столбце.

zero_matrix &operator = (const zero_matrix &m)

Оператор присваивания.

zero_matrix &assign_temporary (zero_matrix &m)

Устанавливает временную матрицу. Может изменять нулевую матрицуm .

void swap (zero_matrix &m)

Обменивает содержимое единичных матриц.

const_iterator1 begin1 () const

Возвращает const_iterator1, указывающий на начало zero_matrix.

const_iterator1 end1 () const

Возвращает const_iterator1, указывающий на конец zero_matrix.

const_iterator2 begin2 () const

Возвращает const_iterator2, указывающий на начало zero_matrix.

const_iterator2 end2 () const

Возвращает const_iterator2, указывающий на конец zero_matrix.

const_reverse_iterator1 rbegin1 () const

Возвращает const_reverse_iterator1, указывающий на начало инвертированной (обратной) zero_matrix.

const_reverse_iterator1 rend1 () const

Возвращает const_reverse_iterator1, указывающий на конец инвертированной (обратной) zero_matrix.

const_reverse_iterator2 rbegin2 () const

Возвращает const_reverse_iterator2, указывающий на начало инвертированной (обратной) zero_matrix.

const_reverse_iterator2 rend2 () const

Возвращает const_reverse_iterator2, указывающий на конец инвертированной (обратной) zero_matrix.

Скалярная матрица

Описание

Шаблонный класс scalar_matrix<T> представляет скалярные матрицы. Для (m x n)-размерной скалярной матрицы и 0 <= i < m, 0 <= j < n элементы zi, j = s.

Пример

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    scalar_matrix<double> m (3, 3);
    std::cout << m << std::endl;
}

Будет выведено на экран:

[3,3]((1,1,1),(1,1,1),(1,1,1))

Определение

Определена в заголовочном файле matrix.hpp.

Параметры шаблона

Параметр

Описание

Значение по умолчанию

T

Тип объектов, размещаемых в матрице.

int

Функции-члены

Функции-члены

Описание

scalar_matrix ()

Создает scalar_matrix, которая содержит скалярное число нулевых элементов.

scalar_matrix (size_type size1, size_type size2, const value_type &value)

Создает scalar_matrix, которая содержит size1 строк size2 элементов, каждый из которых имеет определенное значение.

scalar_matrix (const scalar_matrix &m)

Конструктор копирования.

void resize (size_type size1, size_type size2, bool preserve = true)

Изменяет размер scalar_matrix до size1 строк и size2 столбцов. Существующие элементы scalar_matrix сохраняются.

size_type size1 () const

Возвращает число строк.

size_type size2 () const

Возвращает число столбцов.

const_reference operator () (size_type i, size_type j) const

Возвращает значение элемента в i-ой строке и j-м столбце.

scalar_matrix &operator = (const scalar_matrix &m)

Оператор присваивания.

scalar_matrix &assign_temporary (scalar_matrix &m)

Устанавливает временную матрицу. Может изменять скалярную матрицу m.

void swap (scalar_matrix &m)

Обменивает содержимое скалярных матриц.

const_iterator1 begin1 () const

Возвращает const_iterator1, указывающий на начало scalar_matrix.

const_iterator1 end1 () const

Возвращает const_iterator1, указывающий на конец scalar_matrix.

const_iterator2 begin2 () const

Возвращает const_iterator2, указывающий на начало scalar_matrix.

const_iterator2 end2 () const

Возвращает const_iterator2, указывающий на конец scalar_matrix.

const_reverse_iterator1 rbegin1 () const

Возвращает const_reverse_iterator1, указывающий на начало инвертированной (обратной) scalar_matrix.

const_reverse_iterator1 rend1 () const

Возвращает const_reverse_iterator1, указывающий на конец инвертированной (обратной) scalar_matrix.

const_reverse_iterator2 rbegin2 () const

Возвращает const_reverse_iterator2, указывающий на начало инвертированной (обратной) scalar_matrix.

const_reverse_iterator2 rend2 () const

Возвращает const_reverse_iterator2, указывающий на конец инвертированной (обратной) scalar_matrix.


Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies. This document is provided ``as is'' without express or implied warranty, and with no claim as to its suitability for any purpose.

Перевод с оригинала: Кулиш. В. И. 2006 год.