三角矩陣(Triangular Matrix)

Triangular Matrix

說明

模板類triangular_matrix<T, F1, F2, A> 是三角矩陣的基容器適配器(base container adaptor)。對於一個(n x n )-維 下三角矩陣且0 <= i < n,0 <= j < n ,如果i > j,那麼滿足ti, j = 0 。 如果進一步滿足 holds ti, i= 1 ,那麼這個矩陣稱為單位下三角矩陣(unit lower triangular)。對於一個(n x n )-維上三角矩陣( upper triangular matrix)且0 <= i < n,0 <= j < n ,如果i < j,那麼滿足ti, j = 0 。如果進一步滿足 ti, i= 1 ,那麼這個矩陣稱為單位上三角矩陣( unit lower triangular)。三角矩陣的存儲是 packed。

例子

#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;
}

定義

定義在頭文件 triangular.hpp 中。

模板參數

參數 說明 缺省值
T 存儲在矩陣中的對象的類型。
F1 用於描述三角矩陣的類型的函數對象。[1] lower
F2 描述存儲組織的函數對象。[2] row_major
A 適配數組(adapted array)的類型。 [3] unbounded_array<T>

模型(Model of)

矩陣(Matrix)

類型要求(Type requirements)

沒有,除了由矩陣(Matrix) 所施加的類型要求。

公有基類(Public base classes)

matrix_container<triangular_matrix<T, F1, F2, A> >

成員

成員 說明
triangular_matrix () 分配一個包含0行0個元素且未初始化的triangular_matrix
triangular_matrix (size_type size1, size_type size2) 分配一個包含size1size2且未初始化的triangular_matrix
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) 重新分配一個包含size1size2個元素的triangular_matrix。 如果指定, triangular_matrix中已經存在的元素將會被保存。
size_type size1 () const 返回行數。
size_type size2 () const 返回列數。
const_reference operator () (size_type i, size_type j) const 返回第i-th行第j列的元素的const引用。
reference operator () (size_type i, size_type j) 返回第i-th行第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插入到第i-th行第 j-th個元素。
void erase (size_type i, size_type j) 刪除第i-th行第 j-th個元素。
void clear () 清除矩陣。
const_iterator1 begin1 () const 返回指向triangular_matrix開始處的const_iterator1
const_iterator1 end1 () const 返回指向triangular_matrix終止處的const_iterator1
iterator1 begin1 () 返回指向triangular_matrix開始處的iterator1
iterator1 end1 () 返回指向triangular_matrix終止處的iterator1
const_iterator2 begin2 () const 返回指向triangular_matrix開始處的const_iterator2。.
const_iterator2 end2 () const 返回指向triangular_matrix終止處的const_iterator2
iterator2 begin2 () 返回指向triangular_matrix開始處的iterator2
iterator2 end2 () 返回指向triangular_matrix終止處的iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)triangular_matrix開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)triangular_matrix終止處的const_reverse_iterator1
reverse_iterator1 rbegin1 () 返回指向反轉的(reversed)triangular_matrix開始處的reverse_iterator1
reverse_iterator1 rend1 () 返回指向反轉的(reversed)triangular_matrix終止處的reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)triangular_matrix開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reversed)triangular_matrix終止處的const_reverse_iterator2
reverse_iterator2 rbegin2 () 返回指向反轉的(reversed)triangular_matrix開始處的reverse_iterator2
reverse_iterator2 rend2 () 返回指向反轉的(reversed)triangular_matrix終止處的reverse_iterator2

注意

[1] 三角形矩陣類型所支持的參數是lower , unit_lower, upper and unit_upper

[2] 對於存儲組織所支持的參數是row_majorcolumn_major

[3] 對於適配數組(adapted array)所支持參數是unbounded_array<T> , bounded_array<T>std::vector<T>

Triangular Adaptor

說明

模板類triangular_adaptor<M, F> 是其它的矩陣的三角形矩陣適配器(triangular matrix adaptor)。

例子

#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;
}

定義

定義在頭文件 triangular.hpp 中。

模板參數

參數 說明 缺省值
M 適配矩陣(adapted matrix)的類型。
F 用於描述三角適配器(triangular adaptor)類型的函數對象。 [1] lower

模型(Model of)

矩陣表達式(Matrix Expression)

類型要求(Type requirements)

沒有,除了由矩陣表達式(Matrix Expression) 所施加的類型要求。

公有基類(Public base classes)

matrix_expression<triangular_adaptor<M, F> >

成員

成員 說明
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 返回第i-th行第j-th列的元素的const引用。
reference operator () (size_type i, size_type j) 返回第i-th行第j-th列的元素的引用。
triangular_adaptor &operator = (const triangular_adaptor &m) 賦值運算符。
triangular_adaptor &assign_temporary (triangular_adaptor &m) 賦值給一個臨時變量。可能會改變三角形矩陣適配器(triangular adaptor) m
template<class AE>
triangular_adaptor &operator = (const matrix_expression<AE> &ae)
擴展賦值運算符。
template<class AE>
triangular_adaptor &assign (const matrix_expression<AE> &ae)
將一個矩陣表達式賦值給一個三角形矩陣適配器(triangular adaptor)。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
triangular_adaptor &operator += (const matrix_expression<AE> &ae)
一個運算賦值運算符。將一個矩陣表達式加到一個三角矩陣適配器(triangular adaptor)。
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 返回指向triangular_adaptor開始處的const_iterator1
const_iterator1 end1 () const 返回指向triangular_adaptor終止處的const_iterator1
iterator1 begin1 () 返回指向triangular_adaptor開始處的iterator1
iterator1 end1 () 返回指向triangular_adaptor終止處的iterator1
const_iterator2 begin2 () const 返回指向triangular_adaptor開始處的const_iterator2
const_iterator2 end2 () const 返回指向triangular_adaptor終止處的const_iterator2
iterator2 begin2 () 返回指向triangular_adaptor開始處的iterator2
iterator2 end2 () 返回指向triangular_adaptor終止處的iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)triangular_adaptor開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)triangular_adaptor終止處的const_reverse_iterator1
reverse_iterator1 rbegin1 () 返回指向反轉的(reversed)triangular_adaptor開始處的reverse_iterator1
reverse_iterator1 rend1 () 返回指向反轉的(reversed)triangular_adaptor終止處的reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)triangular_adaptor開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reversed)triangular_adaptor開始處的const_reverse_iterator2
reverse_iterator2 rbegin2 () 返回指向反轉的(reversed)triangular_adaptor開始處的reverse_iterator2
reverse_iterator2 rend2 () 返回指向反轉的(reversed)triangular_adaptor開始處的reverse_iterator2

注意

[1] 對於三角形適配器( triangular adaptor are)所支持的參數是 lower , unit_lower, upperunit_upper


Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
Use, modification and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt ).