Треугольная матрица

Треугольная матрица

Описание

Шаблонный класс triangular_matrix<T, F1, F2, A> является базовым адаптером-контейнером для треугольных матриц. Для (n x n)-размерной нижней треугольной матрицы и 0 <= i < n,0 <= j < n, элементы ti, j = 0 , если i > j. Если к тому же содержащиеся ti, i= 1, то матрица называется единичной нижней треугольной. Для (n x n)-размерной верхней треугольной матрицы и 0 <= i < n,0 <= j < n элементы ti, j = 0 , если i < j. Если к тому же содержащиеся элементы i, i= 1, то матрица называется единичной верхней треугольной. Содержимое треугольных матриц сжато.

Пример

#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/io.hpp>
 
int main() {
    using namespace boost::numeric::ublas; triangular_matrix<double,lower> ml (3, 3);
    for (unsigned i = 0; i < ml.size1(); ++ i)
        for (unsigned j = 0; j <= i; ++ j)
            ml (i, j) = 3 * i + j;
    std::cout << ml << std::endl;
    triangular_matrix<double,upper> mu (3, 3);
    for (unsigned i = 0; i < mu.size1(); ++ i)
        for (unsigned j = i; j < mu.size2 (); ++ j)
            mu (i, j) = 3 * i + j;
    std::cout << mu << std::endl; }
}

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

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

Определение

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

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

Параметр

Описание

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

T

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

F1

Функциональный элемент, описывающий тип треугольной матрицы. [1]

lower

F2

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

row_major

A

Тип адаптированного (присоединенного) массива. [3]

unbounded_array<T>

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

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

Описание

triangular_matrix ()

Создает пустую triangular_matrix с нулевым количеством строк и столбцов.

triangular_matrix (size_type size1, size_type size2)

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

triangular_matrix (const triangular_matrix &m)

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

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

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

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

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

size_type size1 () const

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

size_type size2 () const

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

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

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

reference operator () (size_type i, size_type j)

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

triangular_matrix &operator = (const triangular_matrix &m)

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

triangular_matrix &assign_temporary (triangular_matrix &m)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

void swap (triangular_matrix &m)

Обменивает содержимое треугольных матриц.

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

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

void erase (size_type i, size_type j)

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

void clear ()

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

const_iterator1 begin1 () const

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

const_iterator1 end1 () const

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

iterator1 begin1 ()

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

iterator1 end1 ()

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

const_iterator2 begin2 () const

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

const_iterator2 end2 () const

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

iterator2 begin2 ()

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

iterator2 end2 ()

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

const_reverse_iterator1 rbegin1 () const

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

const_reverse_iterator1 rend1 () const

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

reverse_iterator1 rbegin1 ()

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

reverse_iterator1 rend1 ()

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

const_reverse_iterator2 rbegin2 () const

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

const_reverse_iterator2 rend2 () const

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

reverse_iterator2 rbegin2 ()

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

reverse_iterator2 rend2 ()

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

Примечание

[1] Поддерживаемые параметры типов треугольных матриц: lower , unit_lower, upper и unit_upper .

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

[3] Поддерживаемые параметры адаптированных массивов: unbounded_array<T> , bounded_array<T> и std::vector<T> .

Треугольный адаптер

Описание

Шаблонный класс triangular_adaptor<M, F> является треугольным матричным адаптером для других матриц.

Пример

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

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

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

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

Определение

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

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

Параметр

Описание

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

M

Тип адаптированной (присоединенной) матрицы.

F

Функциональный элемент, описывающий тип треугольного адаптера. [1]

lower

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

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

Описание

triangular_adaptor (matrix_type &data)

Создает triangular_adaptor матрицы.

triangular_adaptor (const triangular_adaptor &m)

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

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

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

size_type size1 () const

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

size_type size2 () const

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

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

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

reference operator () (size_type i, size_type j)

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

triangular_adaptor &operator = (const triangular_adaptor &m)

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

triangular_adaptor &assign_temporary (triangular_adaptor &m)

Устанавливает временный адаптер. Может изменять треугольный адаптер m.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вычисленный оператор присваивания. Делит треугольный адаптер на скаляр.

void swap (triangular_adaptor &m)

Обменивает содержимое треугольных адаптеров.

const_iterator1 begin1 () const

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

const_iterator1 end1 () const

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

iterator1 begin1 ()

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

iterator1 end1 ()

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

const_iterator2 begin2 () const

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

const_iterator2 end2 () const

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

iterator2 begin2 ()

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

iterator2 end2 ()

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

const_reverse_iterator1 rbegin1 () const

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

const_reverse_iterator1 rend1 () const

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

reverse_iterator1 rbegin1 ()

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

reverse_iterator1 rend1 ()

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

const_reverse_iterator2 rbegin2 () const

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

const_reverse_iterator2 rend2 () const

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

reverse_iterator2 rbegin2 ()

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

reverse_iterator2 rend2 ()

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

Примечание

[1] Поддерживаемые параметры типов треугольных адаптеров: lower , unit_lower, upper и unit_upper .


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 год.