1、C++进行矩阵运算类库
头文件:Matrix.h
#ifndef MATRIX_H
#define MATRIX_H
#include "iostream"
#include "string"
#include
2、leName); void showMatrix(); void writeMatrix(string str); void inversion();//求矩阵的逆矩阵 void change();//求矩阵的转置 void operator +(Matrix &a);//声明重载运算符的“+”函数 void operator -(Matrix &a);//声明重载运算符的“-”函数 void operator *(Matrix &a);//声明重载运算符的“*”函数 void operator =(Matrix &a);//声明重载运算符的“=”赋值函数 vector<
3、vector
4、算 using namespace std; //将运算得到的数据存储到box中,形成一个完整的Matrix量 Matrix box_mul;//矩阵相乘的结果 Matrix box_inver;//矩阵的逆的结果 Matrix box_change;//矩阵转置的结果 Matrix box_plus;//矩阵加的结果 Matrix box_cut;//矩阵减的结果 void Matrix::readMatrix(string fileName) { ifstream ifile(fileName.c_str(),ios::in);/*声明一个输入句柄,打开f
5、ileName所指文件。
接下来就可以通过ifile>>***来读取1.txt中的内容了*/
double tmp;
string line;
vector
6、back(row);
row.clear();
istr.clear();
line.clear();
}
this->row = _mat.size();//这里的row不是vector变量,是matrix中的row
ifile.close();
}
void Matrix::showMatrix()
{
cout<<"矩阵:"< 7、l;j++)
cout<<_mat[i][j]<<" ";
cout< 8、j)
os<< _mat[i][j]<<" ";
os< 9、t[i][j];
}
box_plus.col=col;box_plus.row=row;//行列数设置好
box_plus._mat.clear();
vector 10、{
//cout<<"矩阵的差:"< 11、 t.push_back(b[i][j]);
}
box_cut._mat.push_back(t);//数据输入_mat量中
t.clear();
}
}
void Matrix::operator*(Matrix &a) //可连续使用
{
//cout<<"矩阵相乘:"< 12、
b[i][j]+=_mat[i][k]*a._mat[k][j];
}
}
}
box_mul.col=a.col;
box_mul.row=row;//行列数设置好
box_mul._mat.clear();
vector 13、ar();
}
}
void Matrix::operator=(Matrix &a)
{
row=a.row;col=a.col;
_mat.clear();
vector 14、"矩阵的转置:"< 15、 b[i][j]);
}
box_change._mat.push_back(t);//数据输入_mat量中
t.clear();
}
}
void Matrix::inversion() //可连续使用
{
//cout<<"矩阵的逆:"< 16、
b[i][j]=_mat[i][j]; }
for(i=0;i 17、 b[i][j]=0;
}
for(i=0;i 18、
for(int j=0;j 19、 b[i][j]=b[k][j];
b[k][j]=temp;
}
break;
}
}
if(k== 20、M)
{
cout<<"该矩阵不可逆!\n";
exit(0);
}
}
for(j=N-1;j>=i;j--)
b[i][j]/=b[i][i];
for(k=0;k 21、 if(k!=i)
{
double temp=b[k][i];
for(j=0;j 22、
box_inver.col=col;box_inver.row=row;//行列数设置好
box_inver._mat.clear();
vector






