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

Chương trình C++ triển khai phương pháp Khử Gauss-Jordan


Đây là chương trình C++ triển khai phương pháp Khử Gauss-Jordan. Phương pháp này dùng để phân tích hệ phương trình tuyến tính đồng thời. Nó tập trung vào việc giảm hệ phương trình về dạng ma trận đường chéo bằng các phép toán hàng, từ đó lấy nghiệm trực tiếp.

Thuật toán

Bắt đầu
  n = kích thước ma trận đầu vào
  Để tìm các phần tử của ma trận đường chéo:
    Vòng lặp lồng nhau j = 0 đến n và i = 0 đến n
      Phần tử hàng 1 cột 1 biến thành 1
      và các phần tử còn lại trong cột 1 biến thành 0.
      Tương tự, phần tử hàng 2 cột 2 thành 1,
      các phần tử khác trong cột 2 giảm về 0, và cứ thế.
  In tất cả các giá trị nghiệm đã tính.
Kết thúc

Ví dụ mã nguồn

#include <iostream>
using namespace std;

int main() {
    int i, j, k, n; // khai báo biến và ma trận
    float a[10][10], b, x[10];
    printf("\nNhập kích thước ma trận: ");
    scanf("%d", &n);
    printf("\nNhập các phần tử của ma trận mở rộng (theo hàng):\n");
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= (n+1); j++) {
            cout << "A[" << i << ", " << j << " ]=";
            cin >> a[i][j];
        }
    }
    // Tìm các phần tử của ma trận đường chéo
    for (j = 1; j <= n; j++) {
        for (i = 1; i <= n; i++) {
            if (i != j) {
                b = a[i][j] / a[j][j];
                for (k = 1; k <= n+1; k++) {
                    a[i][k] = a[i][k] - b * a[j][k];
                }
            }
        }
    }
    cout << "\nNghiệm là:\n";
    for (i = 1; i <= n; i++) {
        x[i] = a[i][n+1] / a[i][i];
        cout << "x" << i << "=" << x[i] << " ";
    }
    return 0;
}

Kết quả

Nhập kích thước ma trận: 3
Nhập các phần tử của ma trận mở rộng theo hàng:
A[1, 1]=1
A[1, 2]=2
A[1, 3]=-4
A[1, 4]=2
A[2, 1]=7
A[2, 2]=6
A[2, 3]=-2
A[2, 4]=-5
A[3, 1]=0
A[3, 2]=-3
A[3, 3]=-5
A[3, 4]=-8
Nghiệm là:
x1=-2.89831 x2=2.5678 x3=0.059322