Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <iomanip>
- int n = 5; // liczba elementow
- double A[5][5]; /* zestaw 3= {10,1,1,1,2,10,1,4,2,1,5,1,2,9,5,3,0,1,10,1,6,2,1,1,20};*/ /* zestaw 1= { 10, 1, 1, 1, 2, 3, 20, 4, 2, 1, 5, 1, 40, 9, 5, 3, 0, 1, 10, 1, 6, 2, 1, 1, 20 };*/
- double U[5][5];
- double L[5][5];
- double B[5]; /*z3= {15,18,22,15,30};*/ /*z1= { 15, 30, 60, 15, 30 };*/
- double Y[5];
- double X[5];
- void zad3()
- {
- Y[0] = B[0];
- double temp;
- for (int i = 1; i < n; i++)
- {
- temp = 0;
- for (int k = 0; k <= i - 1; k++)
- {
- temp += L[i][k] * Y[k];
- }
- Y[i] = B[i] - temp;
- }
- if (U[n - 1][n - 1] == 0)
- return;
- X[n - 1] = Y[n - 1] / U[n - 1][n - 1];
- double temp2;
- for (int i = n - 2; i >= 0; i--)
- {
- temp2 = 0;
- for (int k = i + 1; k <= n; k++)
- {
- temp2 += U[i][k] * X[k];
- }
- X[i] = (Y[i] - temp2) / U[i][i];
- }
- }
- void zad2()
- {
- for (int i = 0; i < n; i++) // zerowanie macierzy L i U
- {
- for (int j = 0; j < n; j++)
- {
- L[i][j] = 0;
- U[i][j] = 0;
- }
- }
- for (int i = 0; i < n; i++) // ustawienie przekatnej L na wartosc 1
- {
- L[i][i] = 1;
- }
- int i = 0;
- int j = 0;
- int k = 0;
- for (j = 0; j < n; j++)
- {
- U[i][j] = A[i][j];
- }
- if (U[0][0] == 0)
- {
- std::cout << "nie moze byc xd";
- return;
- }
- for (j = 1; j < n; j++)
- {
- L[j][0] = A[j][0] / U[0][0];
- }
- j = 0;
- double temp = 0;
- for (i = 1; i < n; i++)
- {
- // liczenie U
- for (j = i; j < n; j++)
- {
- temp = 0;
- for (k = 0; k <= i - 1; k++)
- {
- temp += (L[i][k] * U[k][j]);
- }
- U[i][j] = A[i][j] - temp;
- }
- // liczenie L
- for (int j = i + 1; j < n; j++)
- {
- temp = 0;
- for (int k = 0; k <= i - 1; k++)
- {
- temp += L[j][k] * U[k][i];
- }
- if (U[i][i] == 0) return;
- L[j][i] = (A[j][i] - temp) / U[i][i];
- }
- }
- return;
- }
- void zad1() // dane do pliku podajemy: kazda liczba w osobnej linice, wierszami od lewej do prawej, bardzo wazne aby podac prawidlowy rozmiar. Najpierw macierz A potem wektor B
- {
- std::ifstream file;
- file.open("test2.txt");
- if (file.is_open())
- {
- std::cout << "podaj rozmiar: ";
- std::cin >> n;
- for (int i = 0;i < n;i++)
- {
- for (int j = 0;j < n;j++)
- {
- file >> A[i][j];
- }
- }
- for (int i = 0;i < n;i++)
- {
- file >> B[i];
- }
- file.close();
- return;
- }
- else std::cout << "Couldn't open the file";
- return;
- }
- void zad4()
- {
- std::ofstream file;
- file.open("raport.txt");
- if (file.is_open())
- {
- // dane wejsciowe
- file << "Dane wejsciowe\nMacierz A:\n";
- for (int i = 0; i < n; i++) // macierz A
- {
- for (int j = 0; j < n; j++)
- {
- file << A[i][j] <<" ";
- }
- file << "\n";
- }
- file << "\n";
- file << "Wektor B:\n";
- for (int i = 0; i < n; i++) // wektor B
- {
- file << B[i]<< " ";
- }
- file << "\n\n";
- // dane posrednie
- file << "Dane posrednie\nMacierz U:\n";
- for (int i = 0; i < n; i++) // macierz U
- {
- for (int j = 0; j < n; j++)
- {
- file << U[i][j] << " ";
- }
- file << "\n";
- }
- file << "\n";
- file << "Macierz L:\n";
- for (int i = 0; i < n; i++) // macierz L
- {
- for (int j = 0; j < n; j++)
- {
- file << L[i][j] << " ";
- }
- file << "\n";
- }
- // wyniki obliczen Wektory Y i X
- file << "\n";
- file << "wektor X:\n";
- //for (int i = 0;i < n;i++) // wektor X
- //{
- // file << X[i] << " ";
- //}
- //file << "\n";
- //for (int i = 0;i < n;i++) // wektor X
- //{
- // file << std::scientific<< X[i] << " ";
- //}
- //file << "\n";
- for (int i = 0;i < n;i++) // wektor X
- {
- file << std::scientific << std::setprecision(10) << X[i] << " ";
- }
- file << "\n";
- file << "\n";
- file << "wektor Y:\n";
- for (int i = 0;i < n;i++) // wektor Y
- {
- file << std::scientific << std::setprecision(10) << Y[i] << " ";
- }
- file << "\n";
- file.close();
- return;
- }
- return;
- }
- // funckje pomocnicze do testowania
- void outputL()
- {
- int i = 0, j = 0;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("%f ", L[i][j]);
- }
- std::cout << "\n";
- }
- }
- void outputU()
- {
- int i = 0, j = 0;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("%f ", U[i][j]);
- }
- std::cout << "\n";
- }
- }
- void output2()
- {
- int i = 0;;
- for (i = 0; i < n; i++)
- {
- std::cout << X[i] << std::endl;
- }
- }
- int main()
- {
- zad1();
- zad2();
- zad3();
- zad4();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement