您的位置:首页 > 编程语言 > MATLAB

Matlab求矩阵的逆矩阵的C++代码

2012-06-06 16:38 344 查看
void Inverse_Matrix(double * Ora_Matrix,int m_Image_Rows,int m_Image_Colunms)

{

//求矩阵的逆矩阵

int rows=m_Image_Rows;

int colunms=m_Image_Colunms;

double *Re_Matrix=new double[2*rows*colunms];

for (int i=0;i<rows;i++)

{

for (int j=0;j<colunms;j++)

{

Re_Matrix[i*2*colunms+j]=Ora_Matrix[i*colunms+j];

}

}

for (int i=0;i<rows;i++)

{

//在原始矩阵右侧加入同大小的单位矩阵

for (int j=colunms;j<colunms*2;j++)

{

Re_Matrix[i*2*colunms+j]=(j-i==colunms)?1:0;

}

}

//进行初等变换

for (int i=0;i<rows;i++)

{

if (Re_Matrix[i*2*colunms+i]!=1.0)

{

double tem=Re_Matrix[i*2*colunms+i];

Re_Matrix[i*2*colunms+i]=1.0;

for (int j=i;j<colunms*2;j++)

{

Re_Matrix[i*2*colunms+j]/=tem;

}

}

for (int k=0;k<rows;k++)

{

if (i!=k)

{

double tem=Re_Matrix[k*2*colunms+i];

for (int j=0;j<colunms*2;j++)

{

Re_Matrix[k*2*colunms+j]-=(tem*Re_Matrix[i*2*colunms+j]);

}

}

else continue;

}

}

for (int i=0;i<rows;i++)

{

for (int j=0;j<colunms;j++)

{

Ora_Matrix[i*colunms+j]=Re_Matrix[i*2*colunms+j+colunms];

}

}

delete[] Re_Matrix;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: