Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main()
- {
- int n;
- cout << "Введите размер системы n: ";
- cin >> n;
- // Составим расширенную матрицу (n x (n+1))
- double** A = new double*[n];
- for(int i = 0; i < n; i++)
- {
- A[i] = new double[n+1];
- }
- // Считываем
- cout << "Введите коэффициенты системы (n строк, по n+1 чисел в каждой):\n";
- for(int i = 0; i < n; i++)
- {
- for(int j = 0; j <= n; j++)
- {
- cin >> A[i][j];
- }
- }
- // Прямой ход метода Гаусса
- for(int i = 0; i < n; i++)
- {
- // Ищем главный элемент в i-ой строке
- double pivot = A[i][i];
- // Нормируем строку, чтобы A[i][i] = 1
- for(int k = i; k <= n; k++)
- {
- A[i][k] /= pivot;
- }
- // Зануляем элементы ниже
- for(int r = i+1; r < n; r++)
- {
- double factor = A[r][i];
- for(int c = i; c <= n; c++)
- {
- A[r][c] -= factor * A[i][c];
- }
- }
- }
- // Обратный ход
- double* x = new double[n];
- for(int i = n - 1; i >= 0; i--)
- {
- x[i] = A[i][n]; // свободный член
- for(int c = i+1; c < n; c++)
- {
- x[i] -= A[i][c] * x[c];
- }
- }
- // Вывод результата
- cout << "Решение:\n";
- for(int i = 0; i < n; i++)
- {
- cout << "x[" << i << "] = " << x[i] << endl;
- }
- // Очистка
- for(int i = 0; i < n; i++)
- {
- delete[] A[i];
- }
- delete[] A;
- delete[] x;
- return 0;
- }
Add Comment
Please, Sign In to add comment