對稱矩陣(Symmetric Matrix)

對稱矩陣(Symmetric Matrix)

說明

模板類symmetric_matrix<T, F1, F2, A> 是對稱矩陣的基容器適配器(base container adaptor)。對於一個(n x n )-維對稱矩陣且0 <= i < n, 0 <= j < n ,滿足si, j = sj, i。對稱矩陣的存儲是packed。

例子

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

int main () {
    using namespace boost::numeric::ublas;
    symmetric_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;
    symmetric_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;
}

定義

定義在頭文件 symmetric.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<symmetric_matrix<T, F1, F2, A> >

成員

成員 說明
symmetric_matrix (size_type size) 分配一個包含sizesize個元素的未初始化的symmetric_matrix
symmetric_matrix (const symmetric_matrix &m) 拷貝構造函數
template<class AE>
symmetric_matrix (const matrix_expression<AE> &ae)
擴展拷貝構造函數。
void resize (size_type size, bool preserve = true) 重新分配一個包含sizesize個元素的symmetric_matrix。 如果指定,symmetric_matrix中已經存在的元素將會被保留。
size_type size1 () const 返回行數。
size_type size2 () const 返回列數。
const_reference operator () (size_type i, size_type j) const 返回第i行第j列的元素的const引用。
reference operator () (size_type i, size_type j) 返回第i行第j列的元素的引用。
symmetric_matrix &operator = (const symmetric_matrix &m) 賦值運算符。
symmetric_matrix &assign_temporary (symmetric_matrix &m) 賦值給一個臨時變量。可能會改變對稱矩陣 m
template<class AE>
symmetric_matrix &operator = (const matrix_expression<AE> &ae)
擴展的賦值運算符。
template<class AE>
symmetric_matrix &assign (const matrix_expression<AE> &ae)
將一個矩陣表達式賦給一個對稱矩陣(symmetric matrix)。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
symmetric_matrix &operator += (const matrix_expression<AE> &ae)
一個運算賦值運算符(computed assignment operator)。將一個矩陣表達式加到一個對稱矩陣中。
template<class AE>
symmetric_matrix &plus_assign (const matrix_expression<AE> &ae)
將一個矩陣表達式加到一個對稱矩陣中。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
symmetric_matrix &operator -= (const matrix_expression<AE> &ae)
一個運算賦值運算符(computed assignment operator)。從一個對稱矩陣中減去一個矩陣表達式。
template<class AE>
symmetric_matrix &minus_assign (const matrix_expression<AE> &ae)
從一個對稱矩陣中減去一個矩陣表達式。賦值的左邊和右邊應當是相互獨立的。
template<class AT>
symmetric_matrix &operator *= (const AT &at)
一個運算賦值運算符(computed assignment operator)。 將一個對稱矩陣乘以一個標量。
template<class AT>
symmetric_matrix &operator /= (const AT &at)
一個運算賦值運算符(computed assignment operator)。將一個對稱矩陣除以一個標量。
void swap (symmetric_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 返回指向symmetric_matrix開始處的const_iterator1
const_iterator1 end1 () const 返回指向symmetric_matrix終止處的const_iterator1
iterator1 begin1 () 返回指向symmetric_matrix開始處的iterator1
iterator1 end1 () 返回指向symmetric_matrix終止處的iterator1
const_iterator2 begin2 () const 返回指向symmetric_matrix開始處的const_iterator2
const_iterator2 end2 () const 返回指向symmetric_matrix終止處的const_iterator2
iterator2 begin2 () 返回指向symmetric_matrix開始處的iterator2
iterator2 end2 () 返回指向symmetric_matrix終止處的iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)symmetric_matrix開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)symmetric_matrix終止處的const_reverse_iterator1
reverse_iterator1 rbegin1 () 返回指向反轉的(reversed)symmetric_matrix開始處的reverse_iterator1
reverse_iterator1 rend1 () 返回指向反轉的(reversed)symmetric_matrix終止處的reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)symmetric_matrix開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reversed)symmetric_matrix終止處的const_reverse_iterator2
reverse_iterator2 rbegin2 () 返回指向反轉的(reversed)symmetric_matrix開始處的reverse_iterator2
reverse_iterator2 rend2 () 返回指向反轉的(reversed)symmetric_matrix終止處的reverse_iterator2

注意

[1] 對於對稱矩陣所支持的類型參數為lowerupper

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

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

Symmetric Adaptor

說明

模板類symmetric_adaptor<M, F> 是其它容器的對稱矩陣適配器(symmetric matrix adaptor)。

例子

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

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

定義

定義在頭文件 symmetric.hpp 中。

模板參數

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

模型(Model of)

矩陣表達式(Matrix Expression)

類型要求(Type requirements)

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

公有基類(Public base classes)

matrix_expression<symmetric_adaptor<M, F> >

成員

成員 說明
symmetric_adaptor () 構造一個包含0行0個元素的symmetric_adaptor
symmetric_adaptor (matrix_type &data) 構造一個矩陣的symmetric_adaptor
symmetric_adaptor (const symmetric_adaptor &m) 拷貝構造函數。
template<class AE>
symmetric_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個元素的引用。
symmetric_adaptor &operator = (const symmetric_adaptor &m) 賦值運算符。
symmetric_adaptor &assign_temporary (symmetric_adaptor &m) 賦值給一個臨時變量。可能會改變對稱適配器(symmetric adaptor) m
template<class AE>
symmetric_adaptor &operator = (const matrix_expression<AE> &ae)
擴展賦值運算符。
template<class AE>
symmetric_adaptor &assign (const matrix_expression<AE> &ae)
將一個矩陣表達式賦給一個對稱適配器(symmetric adaptor)。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
symmetric_adaptor &operator += (const matrix_expression<AE> &ae)
一個運算賦值運算符(computed assignment operator)。將一個矩陣表達式加到一個對稱適配器(symmetric adaptor)中。
template<class AE>
symmetric_adaptor &plus_assign (const matrix_expression<AE> &ae)
將一個矩陣表達式加到一個對稱適配器(symmetric adaptor)中。賦值的左邊和右邊應當是相互獨立的。
template<class AE>
symmetric_adaptor &operator -= (const matrix_expression<AE> &ae)
一個運算賦值運算符(computed assignment operator)。從一個對稱適配器(symmetric adaptor)中減去一個矩陣表達式。
template<class AE>
symmetric_adaptor &minus_assign (const matrix_expression<AE> &ae)
從一個對稱適配器(symmetric adaptor)中減去一個矩陣表達式。賦值的左邊和右邊應當是相互獨立的。
template<class AT>
symmetric_adaptor &operator *= (const AT &at)
一個運算賦值運算符(computed assignment operator)。 將一個對稱適配器(symmetric adaptor)乘以一個標量。
template<class AT>
symmetric_adaptor &operator /= (const AT &at)
一個運算賦值運算符(computed assignment operator)。將一個對稱適配器(symmetric adaptor)除以一個標量。
void swap (symmetric_adaptor &m) 交換對稱適配器(symmetric adaptor)的內容。
const_iterator1 begin1 () const 返回指向symmetric_adaptor開始處的const_iterator1
const_iterator1 end1 () const 返回指向symmetric_adaptor終止處的const_iterator1
iterator1 begin1 () 返回指向symmetric_adaptor開始處的iterator1
iterator1 end1 () 返回指向symmetric_adaptor終止處的iterator1
const_iterator2 begin2 () const 返回指向symmetric_adaptor開始處的const_iterator2
const_iterator2 end2 () const 返回指向symmetric_adaptor終止處的const_iterator2
iterator2 begin2 () 返回指向symmetric_adaptor開始處的iterator2
iterator2 end2 () 返回指向symmetric_adaptor終止處的iterator2
const_reverse_iterator1 rbegin1 () const 返回指向反轉的(reversed)symmetric_adaptor開始處的const_reverse_iterator1
const_reverse_iterator1 rend1 () const 返回指向反轉的(reversed)symmetric_adaptor終止處的const_reverse_iterator1
reverse_iterator1 rbegin1 () 返回指向反轉的(reversed)symmetric_adaptor開始處的reverse_iterator1
reverse_iterator1 rend1 () 返回指向反轉的(reversed)symmetric_adaptor終止處的reverse_iterator1
const_reverse_iterator2 rbegin2 () const 返回指向反轉的(reversed)symmetric_adaptor開始處的const_reverse_iterator2
const_reverse_iterator2 rend2 () const 返回指向反轉的(reversed)symmetric_adaptor終止處的const_reverse_iterator2
reverse_iterator2 rbegin2 () 返回指向反轉的(reversed)symmetric_adaptor開始處的reverse_iterator2
reverse_iterator2 rend2 () 返回指向反轉的(reversed)symmetric_adaptor終止處的reverse_iterator2

Notes

[1] 對於對稱適配器(symmetric adaptor)所支持的參數是lowerupper


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 ).