埃爾米特矩陣(Hermitian Matrix)

埃爾米特矩陣(Hermitian Matrix)

說明

模板類hermitian_matrix<T, F1, F2, A> 是其它的埃爾米特矩陣(hermitian matrix)的基容器適配器(base container adaptor)。對於一個(n x n )-維埃爾米特矩陣( hermitian matrix)且0 <= i < n, 0 <= j < n ,滿足hi, j = hj, i-。埃爾米特矩陣(hermitian matrices)的存儲是packed。

例子

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

int main () {
    using namespace boost::numeric::ublas;
    hermitian_matrix<std::complex<double>, lower> ml (3, 3);
    for (unsigned i = 0; i < ml.size1 (); ++ i) {
        for (unsigned j = 0; j < i; ++ j)
            ml (i, j) = std::complex<double> (3 * i + j, 3 * i + j);
        ml (i, i) = std::complex<double> (4 * i, 0);
    }
    std::cout << ml << std::endl;
    hermitian_matrix<std::complex<double>, upper> mu (3, 3);
    for (unsigned i = 0; i < mu.size1 (); ++ i) {
        mu (i, i) = std::complex<double> (4 * i, 0);
        for (unsigned j = i + 1; j < mu.size2 (); ++ j)
            mu (i, j) = std::complex<double> (3 * i + j, 3 * i + j);
    }
    std::cout << mu << std::endl;
}

定義

定義在頭文件 hermitian.hpp 中。

模板參數

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

模型(Model of)

矩陣(Matrix)

類型要求(Type requirements)

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

公有基類(Public base classes)

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

成員

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

注意

[1] 對於埃爾米特矩陣( hermitian matrix)所支持的參數是lowerupper

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

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

埃爾米特適配器(Hermitian Adaptor)

說明

模板類hermitian_adaptor<M, F> 是其它的矩陣的埃爾米特矩陣適配器(hermitian matrix adaptor) 。

例子

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

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

定義

定義在頭文件 hermitian.hpp 中。

模板參數

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

模型(Model of)

矩陣表達式(Matrix Expression)

類型要求(Type requirements)

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

公有基類(Public base classes)

matrix_expression<hermitian_adaptor<M, F> >

成員

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

注意

[1] 對於埃爾米特適配器( hermitian 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 ).