Advertisement
VladimirKostovsky

DU чм. лаба 1 (доработать)

Oct 15th, 2023
673
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void LU(vector <vector <double>> A, vector <vector <double>>& L,
  7.     vector <vector <double>>& U, int n)
  8. {
  9.     U = A;
  10.  
  11.     for (int i = 0; i < n; i++)
  12.         for (int j = i; j < n; j++)
  13.             L[j][i] = U[j][i] / U[i][i];
  14.  
  15.     for (int k = 1; k < n; k++)
  16.     {
  17.         for (int i = k - 1; i < n; i++)
  18.             for (int j = i; j < n; j++)
  19.                 L[j][i] = U[j][i] / U[i][i];
  20.  
  21.         for (int i = k; i < n; i++)
  22.             for (int j = k - 1; j < n; j++)
  23.                 U[i][j] = U[i][j] - L[i][k - 1] * U[k - 1][j];
  24.     }
  25.  
  26. }
  27.  
  28. void proisv(vector <vector <double>> A, vector <vector <double>> B,
  29.     vector <vector <double>>& R, int n)
  30. {
  31.     for (int i = 0; i < n; i++)
  32.         for (int j = 0; j < n; j++)
  33.             for (int k = 0; k < n; k++)
  34.                 R[i][j] += A[i][k] * B[k][j];
  35. }
  36.  
  37. void show(vector <vector <double>> A, int n)
  38. {
  39.     for (int i = 0; i < n; i++)
  40.     {
  41.         for (int j = 0; j < n; j++)
  42.         {
  43.             cout << A[i][j] << " ";
  44.         }
  45.         cout << endl;
  46.     }
  47. }
  48. int main()
  49. {
  50.     const int n = 20;
  51.     vector <vector <double>> A(n, vector<double>(n)), L(n, vector<double>(n)),
  52.         U(n, vector<double>(n)), R(n, vector<double>(n));
  53.     for (int i = 0; i < n; i++)
  54.     {
  55.         for (int j = 0; j < n; j++)
  56.         {
  57.             if (i == j) {
  58.                 A[i][j] = 100;
  59.             }
  60.             else {
  61.                 A[i][j] = 1 + i - j;
  62.             }
  63.         }
  64.     }
  65.     LU(A, L, U, n);
  66.     cout << "First matrix" << endl;
  67.     show(A, n);
  68.     cout << "U matrix" << endl;
  69.     show(U, n);
  70.     cout << "L matrix" << endl;
  71.     show(L, n);
  72.     proisv(L, U, R, n);
  73.     cout << "L*U matrix" << endl;
  74.     show(R, n);
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement