C/C++ code#include
using namespace std;
double* inverse_matrix(int determinant_scale, double *deter)//返回deter的逆矩阵,determinant_scale为矩阵的阶数,deter为第一个元素的地址
{
///初始化单位矩阵
double *i_matrix = new double[determinant_scale*determinant_scale];
for(int row_i=0; row_i
{
for(int column_i=0; column_i
{
if(row_i==column_i)
{
i_matrix[row_i*determinant_scale+column_i] = 1;
}
else
{
i_matrix[row_i*determinant_scale+column_i] = 0;
}
}
}
转变成上三角矩阵
for(int row=0; row
{
if(deter[row*determinant_scale+row]==0)
{
for(int row2=row+1; row2
double temp;
for(int column2=row; column2
{
temp = deter[row*determinant_scale+column2];
deter[row*determinant_scale+column2] = deter[row2*determinant_scale+column2];
deter[row2*determinant_scale+column2] = temp;
}
for(int column3=0; column3
{
temp = i_matrix[row*determinant_scale+column3];
i_matrix[row*determinant_scale+column3] = i_matrix[row2*determinant_scale+column3];
i_matrix[row2*determinant_scale+column3] = temp;
}
}
for(int row2=row+1; row2
{
double k = -1*(deter[row2*determinant_scale+row]/deter[row*determinant_scale+row]);
for(int column2=row; column2
{
deter[row2*determinant_scale+column2] += k*deter[row*determinant_scale+column2];
}
for(int column3=0; column3
{
i_matrix[row2*determinant_scale+column3] += k*i_matrix[row*determinant_scale+column3];
}
}
}
//转变成对角矩阵
for(int re_row=determinant_scale-1; re_row>-1; --re_row)
{
for(int row2=re_row-1; row2>-1; --row2)
{
double k = -1*(deter[row2*determinant_scale+re_row]/deter[re_row*determinant_scale+re_row]);
deter[row2*determinant_scale+re_row] += k*deter[row*determinant_scale+re_row];
for(int column3=0; column3
{
i_matrix[row2*determinant_scale+column3] += k*i_matrix[re_row*determinant_scale+column3];
}
}
}
/转变成单位矩阵
for(int r=0; r
{
for(int c=0; c
{
i_matrix[r*determinant_scale+c] *= (1/deter[r*determinant_scale+r]);
}
}
///返回逆矩阵
return i_matrix;
}
int main()
{
double a[3][3] = {1,2,3,2,1,2,1,3,3};
double *inverse_a;
inverse_a = inverse_matrix(3, a[0]);//3为矩阵的阶数,a[0]为第一个元素的地址.
for(int i=0; i<9; ++i)
{
cout<
if(i%3==2)
{
cout<
}
}
return 0;
}
------解决方案--------------------