C++矩阵类(7)

2019-02-14 21:55

strcpy(m_Name,Name); else

strcpy(m_Name,\

m_pData = new double[m_Row * m_Col]; if(Data != NULL) {

for(int i = 0;i < m_Row;i++) for(int j = 0;j< m_Col;j++) {

m_pData[i+j] = Data[i+j]; } }

return TRUE; }

CMatrix & CMatrix::operator =(double m) {

m_Row = 1; m_Col = 1;

Create(m_Row,m_Col,NULL,\ m_pData[0] = m; return *this; }

CMatrix & CMatrix::operator =(const CMatrix & m) {

m_Row = m.m_Row; m_Col = m.m_Col; if(m_pData !=NULL) {

delete []m_pData; m_pData =NULL; }

Create(m_Row,m_Col,NULL,m_Name); for(int i=0;i

m_pData[i]=m.m_pData[i]; }

return *this; }

CMatrix CMatrix::operator *(double m)

{

CMatrix tp = *this;

for(int i=0;i

tp.m_pData[i]*=m; }

return tp; }

CMatrix CMatrix::operator *(const CMatrix & m) {

CMatrix temp;

temp.m_Row=m_Row; temp.m_Col=m.m_Col;

temp.Create(temp.m_Row,temp.m_Col,NULL,\ for(int i=0;i

for(int j=0;j

double total=0.0;

for(int n=0;n

total+=m_pData[i*m_Col+n]*m.m_pData[n*m.m_Col+j]; }

temp.m_pData[i*temp.m_Col+j]=total; } }

return temp; }

CMatrix CMatrix::operator +(const CMatrix & m) {

CMatrix tp;

if(m_Row != m.m_Row || m_Col != m.m_Col) return tp; tp.m_Row = m_Row; tp.m_Col = m_Col;

tp.Create(tp.m_Row,tp.m_Col,NULL,\ for(int i=0;i

tp.m_pData[i] = m_pData[i] + m.m_pData[i]; }

return tp; }

CMatrix CMatrix::operator -(const CMatrix & m) {

CMatrix tp;

if(m_Row != m.m_Row || m_Col != m.m_Col) return tp; tp.m_Row = m_Row; tp.m_Col = m_Col;

tp.Create(tp.GetRowNum(),tp.GetColNum(),NULL,\ for(int i = 0; i < tp.m_Row*tp.m_Col; i++ ) {

tp.m_pData[i] = m_pData[i] - m.m_pData[i]; }

return tp; }

double CMatrix::Deternimant() {

if(m_Row == 0 || m_Col == 0) return 0.0;

if(m_Row == 1 && m_Col == 1) return m_pData[0];

if(m_Row == 2 && m_Col == 2) return m_pData[0] * m_pData[3] - m_pData[2] * m_pData[1]; double sum=0.0; double sub=0.0;

for(int i=0;i

double total=1.0; int tpRow=0; int num=0;

for(int tpCon=i;tpCon

total*=m_pData[tpRow*m_Col+tpCon]; num++; }

tpRow=num;

for(tpCon=0;tpRow

total*=m_pData[tpRow*m_Col+tpCon]; }

sub+=total; } {

double total=1.0; int tpRow=0; int num=0;

for(int tpCon=i;tpCon>=0;tpCon--,tpRow++) {

total*=m_pData[tpRow*m_Col+tpCon]; num++; }

tpRow=num;

for(tpCon=m_Col-1;tpRow

total*=m_pData[tpRow*m_Col+tpCon]; }

sum+=total; } }

return sub-sum; }

CMatrix CMatrix::Transposed() {

CMatrix temp;

if(m_Row == 0 || m_Col == 0) return temp; if(m_Row == 1 && m_Col == 1) return *this; temp.Create(m_Col,m_Row,NULL,\ for(int i=0;i

for(int j=0;j

temp.m_pData[i*temp.GetColNum()+j] = m_pData[j*m_Col+i]; } }

return temp; }

CMatrix CMatrix::GetAccompany() {

CMatrix m;

m.m_Col=m_Col; m.m_Row=m_Row;

m.Create(m_Row,m_Col,NULL,\ for(int i=0;i

for(int j=0;j

CMatrix tp;

tp.m_Col=m_Col-1; tp.m_Row=m_Row-1;

tp.Create(tp.m_Row,tp.m_Col,NULL,\ int num=0;

for(int g=0;g

if(g==i) continue;

for(int h=0;h

if(h==j) continue; else {

tp.m_pData[num]=m_pData[g*m_Col+h]; num++; } } }

int tip; float fuhao; tip=i+j+2; fuhao=1.0;

if(tip%2==1) fuhao=-1.0;

m.m_pData[i*m_Col+j]=fuhao*tp.Deternimant(); } }

m = m.Transposed(); return m; }

CMatrix CMatrix::GetReverse() {

CMatrix tp; tp.m_Col=1; tp.m_Row=1;

tp.Create(1,1,NULL,\

tp.m_pData[0]=double(1.0/m_pData[0]); if(m_Row==1&&m_Col==1) return tp; tp.m_pData[0]=double(1.0/Deternimant()); return GetAccompany()*tp.m_pData[0]; }

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


C++矩阵类(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:天津重点中学2010年八年级数学下学期期末测试题人教版[1]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: