21xrx.com
2024-12-22 22:40:38 Sunday
登录
文章检索 我的文章 写文章
C++实现矩阵求逆的代码
2023-07-05 13:16:37 深夜i     --     --
C++ 矩阵 求逆 代码

矩阵求逆是矩阵运算中常用的操作之一,它是指对于一个给定的矩阵A,在数域上找到另一个矩阵B,使得它们的乘积为单位矩阵,也就是AB=BA=I。在实际应用中,矩阵求逆常常涉及到操作大量数据,而C++作为一种高效的编程语言,可以通过其自带的矩阵运算库和一些常用算法来完成这一任务。下面我们来看一下C++实现矩阵求逆的代码。

首先,在C++中想要进行矩阵运算,可以使用头文件 中的matrix类进行定义。具体的实现步骤如下:

1.定义矩阵A和矩阵B以及它们的行列数

matrix A(n, n), B(n, n);

2.输入矩阵A的数据

//如下是一个3x3的矩阵

A(1, 1) = 1; A(1, 2) = 2; A(1, 3) = 3;

A(2, 1) = 4; A(2, 2) = 5; A(2, 3) = 6;

A(3, 1) = 7; A(3, 2) = 8; A(3, 3) = 9;

3.使用C++标准库中的高斯消元法进行求逆

//定义一个求逆的函数

void Inverse(matrix & A, matrix & B) {

  int n = A.rowdim();

  matrix Inv(n, n);

  B.unit();

  for (int k = 1; k <= n; k++) {

    int i = k;

    for (; i <= n; i++) {

      if (abs(A(i, k)) > EPS) break;

    }

    if (i > n) return;

    if (i != k) {

      for (int j = 1; j <= n; j++) {

        swap(A(i, j), A(k, j));

        swap(B(i, j), B(k, j));

      }

    }

    double t = A(k, k);

    for (int j = 1; j <= n; j++) {

      A(k, j) /= t;

      B(k, j) /= t;

    }

    for (i = 1; i <= n; i++) {

      if (i == k) continue;

      t = A(i, k);

      for (int j = 1; j <= n; j++) {

        A(i, j) -= t * A(k, j);

        B(i, j) -= t * B(k, j);

      }

    }

  }

}

4.输出矩阵B的数据即为矩阵A的逆

//如下是输出一个3x3矩阵的逆

Inverse(A, B);

for (int i = 1; i <= n; i++) {

  for (int j = 1; j <= n; j++) {

    cout << B(i, j) << " ";

  }

  cout << endl;

}

以上就是使用C++实现矩阵求逆的代码,只需要定义好矩阵,并调用高斯消元法进行运算,最终输出逆矩阵即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复