1、C+矩阵运算类库很实用C+进行矩阵运算类库头文件:Matrix.hifndef MATRIX_H define MATRIX_H include iostream”include ”string”#include #include include fstreamincludesstream /istringstream 必须包含这个头文件using namespace std;class Matrixpublic:void readMatrix(string fileName);void showMatrix();void writeMatrix(string str);void invers
2、ion();/求矩阵的逆矩阵void change();/求矩阵的转置void operator +(Matrix a);/声明重载运算符的“+”函数void operator (Matrix &a);/声明重载运算符的“-函数void operator *(Matrix a);/声明重载运算符的“*”函数void operator =(Matrix &a);/声明重载运算符的“=”赋值函数vectorvector _mat;int row;int col;#endif源文件:main.cppinclude ”iostream”#include stringinclude include in
3、clude fstream#include*来读取1.txt中的内容了/ double tmp; string line; vectortmp) row.push_back(tmp);/在row尾部插入读入的数据 thiscol = row.size(); _mat。push_back(row); row.clear(); istr。clear(); line。clear(); this-row = _mat。size();/这里的row不是vector变量,是matrix中的row ifile。close();void Matrix:showMatrix() cout”矩阵:endl; /c
4、outrow=rowendl; /cout”col=”colendl; for(int i=0;irow;i+) for(int j=0;jcol;j+) cout_matij ; coutendl; void Matrix::writeMatrix(string str) ofstream os(str,ios::trunc); /ofstream os(”C:UsersAdministratorDesktop数据矩阵W.txt”,ios::trunc); if (os) for (int i=0;irow;+i) for (int j=0;jcol;+j) os _matij” ”; os
5、endl; else cerr”无法打开文件!endl;void Matrix::operator+(Matrix &a) /cout矩阵的和:”endl; double b200200; for(int i=0;irow;i+) for(int j=0;j t; for(int i=0;irow;i+) for(int j=0;jcol;j+) t。push_back(bij); box_plus._mat.push_back(t);/数据输入_mat量中 t.clear(); void Matrix::operator-(Matrix &a) /cout矩阵的差:”endl; double
6、 b200200; for(int i=0;irow;i+) for(int j=0;jcol;j+) bij=_matij-a。_matij; box_cut.col=col;box_cut.row=row;/行列数设置好 box_cut._mat.clear(); vector double t; for(int i=0;irow;i+) for(int j=0;jcol;j+) t.push_back(bij); box_cut._mat。push_back(t);/数据输入_mat量中 t。clear(); void Matrix:operator*(Matrix a) /可连续使用
7、/cout矩阵相乘:endl; double b200200; for(int i=0;irow;i+) for(int j=0;ja。col;j+) bij=0; for(int k=0;k t; for (int i=0;irow;i+) for(int j=0;jcol;j+) t.push_back(a._matij); _mat。push_back(t); t。clear(); void Matrix::change() /可连续使用 /cout矩阵的转置:endl; double b200200; for(int i=0;irow;i+) for(int j=0;jcol;j+)
8、bji=_matij; box_change.col=row;box_change.row=col;/行列数设置好 box_change。_mat。clear(); vector t; for(int i=0;icol;i+) for(int j=0;jrow;j+) t。push_back( bij); box_change._mat.push_back(t);/数据输入_mat量中 t。clear(); void Matrix::inversion() /可连续使用 /coutcol; double b200200; for(i=0;iM;i+) /赋值 for(j=0;jM;j+) bi
9、j=_matij; for(i=0;iM;i+) /扩展 for(j=M;jN;j+) if(i=(jM)) bij=1; else bij=0; for(i=0;iM;i+) if(bii=0) for(k=i;kM;k+) if(bki!=0) for(int j=0;jN;j+) double temp; temp=bij; bij=bkj; bkj=temp; break; if(k=M) cout=i;j) bij/=bii; for(k=0;kM;k+) if(k!=i) double temp=bki; for(j=0;j t; for(int i=0;iM;i+) for(int j=M;jN;j+) /coutbijendl; t.push_back( bij); box_inver._mat。push_back(t);/数据输入_mat量中 t.clear(); int main() / system(pause); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1