Solingen

z13.1.cpp

Dec 22nd, 2024
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.     int n;
  7.     cout << "Введите размер системы n: ";
  8.     cin >> n;
  9.  
  10.     // Составим расширенную матрицу (n x (n+1))
  11.     double** A = new double*[n];
  12.     for(int i = 0; i < n; i++)
  13.     {
  14.         A[i] = new double[n+1];
  15.     }
  16.  
  17.     // Считываем
  18.     cout << "Введите коэффициенты системы (n строк, по n+1 чисел в каждой):\n";
  19.     for(int i = 0; i < n; i++)
  20.     {
  21.         for(int j = 0; j <= n; j++)
  22.         {
  23.             cin >> A[i][j];
  24.         }
  25.     }
  26.  
  27.     // Прямой ход метода Гаусса
  28.     for(int i = 0; i < n; i++)
  29.     {
  30.         // Ищем главный элемент в i-ой строке
  31.         double pivot = A[i][i];
  32.         // Нормируем строку, чтобы A[i][i] = 1
  33.         for(int k = i; k <= n; k++)
  34.         {
  35.             A[i][k] /= pivot;
  36.         }
  37.         // Зануляем элементы ниже
  38.         for(int r = i+1; r < n; r++)
  39.         {
  40.             double factor = A[r][i];
  41.             for(int c = i; c <= n; c++)
  42.             {
  43.                 A[r][c] -= factor * A[i][c];
  44.             }
  45.         }
  46.     }
  47.  
  48.     // Обратный ход
  49.     double* x = new double[n];
  50.     for(int i = n - 1; i >= 0; i--)
  51.     {
  52.         x[i] = A[i][n]; // свободный член
  53.         for(int c = i+1; c < n; c++)
  54.         {
  55.             x[i] -= A[i][c] * x[c];
  56.         }
  57.     }
  58.  
  59.     // Вывод результата
  60.     cout << "Решение:\n";
  61.     for(int i = 0; i < n; i++)
  62.     {
  63.         cout << "x[" << i << "] = " << x[i] << endl;
  64.     }
  65.  
  66.     // Очистка
  67.     for(int i = 0; i < n; i++)
  68.     {
  69.         delete[] A[i];
  70.     }
  71.     delete[] A;
  72.     delete[] x;
  73.  
  74.     return 0;
  75. }
  76.  
Add Comment
Please, Sign In to add comment