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 Gauss-Seidel


Phương pháp Gauss-Seidel là phương pháp lặp để giải hệ phương trình tuyến tính. Đây là chương trình C++ triển khai phương pháp Gauss-Seidel.

Thuật toán

Bắt đầu
  Nhập kích thước ma trận p và các phần tử của nó.
  Nhập giá trị ban đầu của x và số lần lặp q.
  Khi q > 0
    Vòng lặp i = 0 đến p-1
      Khởi tạo n[i] = (b[i] / a[i][i]).
      Vòng lặp j = 0 đến p-1
        Nếu (j == i)
          n[i] = n[i] - ((a[i][j] / a[i][i]) * m[j]).
        m[i] = n[i].
    Giảm q.
  /*
    a[i][j] = ma trận đầu vào.
    b[i] = mảng chứa giá trị vế phải của phương trình.
    m[i] = lưu giá trị ban đầu của x.
  */
  Trả về 0
Kết thúc

Ví dụ mã nguồn

#include <iostream>
#include <conio.h>
using namespace std;

int main(void) {
    float a[10][10], b[10], m[10], n[10];
    int p = 0, q = 0, i = 0, j = 0;
    cout << "Nhập kích thước mảng 2D: ";
    cin >> p;
    for (i = 0; i < p; i++) {
        for (j = 0; j < p; j++) {
            cout << "a[" << i << ", " << j << " ]=";
            cin >> a[i][j];
        }
    }
    cout << "\nNhập giá trị vế phải của phương trình\n";
    for (i = 0; i < p; i++) {
        cout << "b[" << i << "] = ";
        cin >> b[i];
    }
    cout << "Nhập giá trị ban đầu của x\n";
    for (i = 0; i < p; i++) {
        cout << "x:[" << i << "]=";
        cin >> m[i];
    }
    cout << "\nNhập số lần lặp: ";
    cin >> q;
    while (q > 0) {
        for (i = 0; i < p; i++) {
            n[i] = (b[i] / a[i][i]);
            for (j = 0; j < p; j++) {
                if (j == i)
                    continue;
                n[i] = n[i] - ((a[i][j] / a[i][i]) * m[j]);
                m[i] = n[i];
            }
            cout << "x" << i+1 << "=" << n[i] << " ";
        }
        cout << "\n";
        q--;
    }
    return 0;
}

Kết quả

Nhập kích thước mảng 2D: 2
a[0, 0]=1
a[0, 1]=2
a[1, 0]=3
a[1, 1]=4
Nhập giá trị vế phải của phương trình
b[0]=1
b[1]=2
Nhập giá trị ban đầu của x
x:[0]=0
x:[1]=0
Nhập số lần lặp: 3
x1 = 1. x2 = -0.25
x1 = 1.5 x2 = -0.625
x1 = 2.25 x2 = -1.1875