Matrix Template Library Help

来源:互联网 发布:windows集群 硬盘数据 编辑:程序博客网 时间:2024/05/22 04:14

部分函数功能说明

// element access functions
    int GetRowSize()const
    int GetColSize()const
    T   GetValue(const int& row,const int& col)const
    const vector<T> GetRowVector(const int& row)const
    const vector<T> GetColVector(const int& col)const
    const Matrix<T> GetRow(const int& row)const
    const Matrix<T> GetCol(const int& col)const

// modify     
    void Resize(const int& row,const int& col,T value=T(0));
    void SetValue(const int& row,const int& col,T value = T(0));    
    void AddRow(T value = T(0));
    void AddCol(T value = T(0));
    void DeleteRow(const int& row);
    void DeleteCol(const int& col);
    void InsertRow(const int& row,T value = T(0));
    void InsertCol(const int& col,T value = T(0));
    void SetRowVector(const int& row,const vector<T>& vec = vector<T>(0));
    void SetColVector(const int& col,const vector<T>& vec = vector<T>(0));
    void SwapRow(const int& row1,const int& row2);
    void SwapCol(const int& col1,const int& col2);

这些函数不用介绍了,功能根据函数顾名思义。】

// special functions
    Matrix<T> Turn();                        //
求转置矩阵
    Matrix<T> Inverse();                   //
求逆矩阵(必须是方阵,并且可逆,否则抛出exception
    Matrix<T> Unit(const int& row); //
单位矩阵(把矩阵重置为给定大小的单位阵)
    Matrix<T> Diag();                        //
求对角阵(返回对角阵元素组成的行矩阵)
    T         Det();                                 //
求矩阵的行列式的值(必须是方阵,否则抛出exception
    T         Trace();                             //
求方阵的迹(必须是方阵,否则抛出exception
    T         Norm(const int& p=2);  //
求矩阵的范数(默认为求2范数。注意:只有folatdoublelong double矩阵可以调用该函数
    T         CondNumber();              //
求矩阵的条件数
    T         Radius();// spectral  radius  //
求矩阵的半径
    int       Rank();                             //
求矩阵的秩
    Matrix<T> GetAij(const int& row,const int& col); //
取得矩阵的子矩阵(大的截取,小的补零)

// transform
    CMatrix< complex<double> > ToCDouble();  //
将矩阵转换为double型的复数矩阵,以便于作矩阵间的运算

//实数矩阵特有函数
    RMatrix<T> Jacobi(RMatrix<T>& value=RMatrix<T>());  //JACOBI
迭代法求实数矩阵的特征值,特征解
    RMatrix<double> ToDouble();    //
转换为double型矩阵

// 复数阵特有函数
    RMatrix<T>  Real();   //
取得实部矩阵
    RMatrix<T>  Imag();  //
取得虚数矩阵

【下面给出一个应用此矩阵库的小程序,示意主要函数的用法】

#include <iostream>
#include <stdlib.h>
#include "matrix6.hpp"

using namespace std;
using namespace soubam;

int main(int argc, char *argv[])
{
try
{

  complex< double >    temp(3,4); 
  RMatrix< int >       R1( 4, 3, 1),  R2(3, 5, 2);
  RMatrix< double >    R3( 4, 4 ),    R4(4, 3, 0.1);
  CMatrix< int >    C1( 4, 3,1),   C2(3, 5, 2);
  CMatrix< double >    C3( 5, 6, 2.3),C4(6, 7, 0.3);

  R1[0][0] = 3;   
  R1[0][1] = 5;
  R1[0][2] = 4;

  cout<<"R1="<<endl;
  cout<<R1<<endl; 

  R3.SetValue(0,1,1);
  R3.SetValue(1,1,2);
  R3.SetValue(2,1,3);
 
  cout<<"R3="<<endl;
  cout<<R3<<endl;
 
  cout<<"R4="<<endl;
  cout<<R4<<endl;

  cout<<"R3*R4="<<endl;
  cout<<R3*R4<<endl;

  cout<<"rank(R1)= "<<R1.Rank()<<endl;
   

  R2.Det();

  system("PAUSE"); 
  return 0;

}
 catch(OutOfRange e)
 {
  cout<<e.GetError()<<endl;
  cout<<"row= "<<e.InvalidRow()<<endl;
  cout<<"col= "<<e.InvalidCol()<<endl;
 }

 catch(MisMatch e)
 {
  cout<<e.GetError()<<endl;
 }
}

原创粉丝点击