Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. const double eps = 1e-12;
  8.  
  9. // Funkcja realizuje algorytm rozkładu LU
  10. //---------------------------------------
  11. bool lu(int n, double ** A)
  12. {
  13.   int i,j,k;
  14.  
  15.   for(k = 0; k < n - 1; k++)
  16.   {
  17.     if(fabs(A[k][k]) < eps) return false;
  18.     for(i = k + 1; i < n; i++)
  19.       A[i][k] /= A[k][k];
  20.     for(i = k + 1; i < n; i++)
  21.       for(j = k + 1; j < n; j++)
  22.         A[i][j] -= A[i][k] * A[k][j];
  23.   }
  24.   return true;
  25. }
  26.  
  27. // Program główny
  28.  
  29. int main()
  30. {
  31.   double ** A,det;
  32.   int n,i,j;
  33.  
  34.   cout << setprecision(4) << fixed;
  35.  
  36. // odczytujemy stopień macierzy A
  37.  
  38.   cin >> n;
  39.  
  40.   // tworzymy macierz A o odpowiednich rozmiarach
  41.  
  42.   A = new double * [n];
  43.   for(i = 0; i < n; i++) A[i] = new double [n];
  44.  
  45.   // odczytujemy dane dla macierzy A
  46.  
  47.   for(i = 0; i < n; i++)
  48.     for(j = 0; j < n; j++) cin >> A[i][j];
  49.  
  50.   // obliczamy wyznacznik
  51.  
  52.   if(lu(n,A))
  53.   {
  54.     det = A[0][0];
  55.     for(i = 1; i < n; i++) det *= A[i][i];
  56.     cout << det << endl;
  57.   }
  58.   else
  59.     cout << "DZIELNIK ZERO\n";
  60.  
  61.   // usuwamy macierz z pamięci
  62.  
  63.   for(i = 0; i < n; i++) delete [] A[i];
  64.   delete [] A;
  65.   return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement