abubaca

Untitled

Apr 25th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. vector<double> iter(vector<vector<double>>& a, vector<double>& y, int n, double eps)
  8. {
  9.     vector<double> res(n);
  10.     for (int i = 0; i < n; i++)
  11.         res[i] = y[i] / a[i][i];
  12.  
  13.     bool flag;
  14.     do
  15.     {
  16.         vector<double> xn(n);
  17.         for (int i = 0; i < n; i++)
  18.         {
  19.             xn[i] = y[i] / a[i][i];
  20.             for (int j = 0; j < n; j++)
  21.                 if (i != j)
  22.                     xn[i] -= a[i][j] / a[i][i] * res[j];
  23.         }
  24.         flag = true;
  25.         for (int i = 0; i < n - 1; i++)
  26.             if (abs(xn[i] - res[i]) > eps)
  27.             {
  28.                 flag = false;
  29.                 break;
  30.             }
  31.         for (int i = 0; i < n; i++)
  32.             res[i] = xn[i];
  33.     } while (!flag);
  34.  
  35.     return res;
  36. }
  37.  
  38. int main()
  39. {
  40.     setlocale(LC_ALL, "Russian");
  41.     int n;
  42.     cout << "Введите порядок системы\n";
  43.     cin >> n;
  44.     double e;
  45.     cout << "Введите точность\n";
  46.     cin >> e;
  47.     vector<vector<double>> mat(n, vector<double>(n));
  48.     cout << "Введите коэфиценты системы\n";
  49.     for (int i = 0; i < n; i++)
  50.         for (int j = 0; j < n; j++)
  51.             cin >> mat[i][j];
  52.     vector<double> free(n);
  53.     cout << "Введите свободные члены\n";
  54.     for (int i = 0; i < n; i++)
  55.         cin >> free[i];
  56.     vector<double> result = iter(mat, free, n, e);
  57.     cout << "Корни\n";
  58.     for (int i = 0; i < n; i++)
  59.         cout << result[i] << ' ';
  60. }
Add Comment
Please, Sign In to add comment