方阵的逆矩阵的求法

来源:互联网 发布:广东卫视网络广播 编辑:程序博客网 时间:2024/04/27 20:21

用高斯消元法求方阵逆矩阵

#include<iostream>#include<iomanip>using namespace std;int main(){    cout << "输入方阵的行与列:";    int row, col;    cin >> row >> col;    double **matrix = new double*[row];    double **inverseMatrix = new double*[row];    for (int i = 0; i < col; ++i)    {        matrix[i] = new double[col];        inverseMatrix[i] = new double[col];    }    cout << "输入矩阵:" << endl;    for (int i = 0; i < row; ++i)        for (int j = 0; j < col; ++j)            cin >> matrix[i][j];    cout << "\n原矩阵为:" << endl;    for (int i = 0; i < row; ++i)    {        for (int j = 0; j < col; ++j)        {            cout << setw(4) << matrix[i][j];        }        cout << endl;    }    //初始化为逆矩阵为单位矩阵    for (int i = 0;i < row; ++i)    {        for (int j = 0; j < col; ++j)            inverseMatrix[i][j] = 0;        inverseMatrix[i][i] = 1;    }    //矩阵行变换,把原矩阵变换为单位矩阵,单位矩阵采取相同变换后为逆矩阵    for (int k = 0; k < row; ++k)    {        for (int i = 0; i < col; ++i)        {            //对角线元素不处理            if (i == k)                continue;            else            {                //算出比例                double ratio = matrix[i][k] / matrix[k][k];                //Ri = Ri - kRj                for (int j = 0; j < col; j++)                {                    matrix[i][j] -= ratio * matrix[k][j];                    inverseMatrix[i][j] -= ratio * inverseMatrix[k][j];                }            }        }    }    //输出逆矩阵    cout << "\n逆矩阵为:" << endl;    for (int i = 0; i < row; ++i)    {        for (int j = 0; j < col; ++j)        {            cout << setw(4) << inverseMatrix[i][j];        }        cout << endl;    }    for (int i = 0; i < col; ++i)    {        delete[] matrix[i];        delete[] inverseMatrix[i];    }    delete[]matrix;    delete[]inverseMatrix;    system("pause");    return 0;}

0 0