Advertisement
Dambosin

fffffffffff

Mar 15th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <time.h>
  4. using namespace std;
  5. int n;
  6. double eps = 0.0001;
  7. bool converge(double *xk, double *xkp)
  8. {
  9.     double norm = 0;
  10.     for (int i = 0; i < n; i++)
  11.         norm += (xk[i] - xkp[i])*(xk[i] - xkp[i]);
  12.     return (sqrt(norm) < eps);
  13. }
  14.  
  15. int main()
  16. {
  17.     srand(time(NULL));
  18.     double a[100][100];
  19.     double b[100];
  20.     double x[100];
  21.     double p[100];
  22.     cin >> n;
  23.     for (int i = 0; i < n; i++) {
  24.         x[i] = 0;
  25.     }
  26.     for (int i = 0; i < n; i++) {
  27.         for (int j = 0; j < n; j++) {
  28.             cin >> a[i][j];
  29.         }
  30.         cin >> b[i];
  31.     }
  32.     int k = 0;
  33.     int q = 0;
  34.     int w = 0;
  35.     do {
  36.         q = rand() % n;
  37.         w = rand() % n;
  38.         for (int i = 0; i < n; i++) {
  39.             int temp = a[q][i];
  40.             a[q][i] = a[w][i];
  41.             a[w][i] = temp;
  42.         }
  43.         int temp = b[q];
  44.         b[q] = b[w];
  45.         b[w] = temp;
  46.         for (int i = 0; i < n; i++) {
  47.             x[i] = 0;
  48.         }
  49.         k = 0;
  50.         do
  51.         {
  52.             for (int i = 0; i < n; i++)
  53.                 p[i] = x[i];
  54.             for (int i = 0; i < n; i++)
  55.             {
  56.                 double var = 0;
  57.                 for (int j = 0; j < i; j++)
  58.                     var += (a[i][j] * x[j]);
  59.                 for (int j = i + 1; j < n; j++)
  60.                     var += (a[i][j] * p[j]);
  61.                 x[i] = (b[i] - var) / a[i][i];
  62.             }
  63.             k++;
  64.         } while (!converge(x, p)&&k<=10000);
  65.        
  66.     } while (k > 10000);
  67.     for (int i = 0; i < n; i++) {
  68.         cout << x[i] << endl;
  69.     }
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement