Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm ma trận nghịch đảo bằng phương pháp Gauss-Jordan C++

Mô tả bài toán

Cho ma trận vuông. Tìm ma trận nghịch đảo A⁻¹ sao cho A·A⁻¹ = I bằng khử Gauss-Jordan (phép toán hàng cơ bản).

Giải thuật

  1. Tạo ma trận mở rộng [A | I].
  2. Khử hàng để biến A thành I (ma trận đơn vị), lúc này nửa phải thành A⁻¹.
  3. Các phép toán: đổi hàng, nhân hàng với hằng số ≠0, cộng hàng này vào hàng kia nhân hằng số.

Mã nguồn C++

#include <iostream>
#include <vector>
using namespace std;

void printMat(float** a, int n, int m) {
    for (int i=0;i0;i--) if (a[i-1][0] < a[i][0]) swap(a[i-1], a[i]);
    // Gauss-Jordan
    for (int i=0;i

Đầu ra

Inverse matrix:
-0.049  0.163  -0.011
0.205  -0.141  -0.106
-0.110  0.057   0.205