Đâ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