Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void LinioweZadanieNajmnieszychKwadratow();
  6.  
  7. int main()
  8. {
  9. LinioweZadanieNajmnieszychKwadratow();
  10.  
  11. system("pause");
  12. return 0;
  13. }
  14.  
  15. void LinioweZadanieNajmnieszychKwadratow()
  16. {
  17. int RozmiarA, RozmiarC;
  18. cin >> RozmiarC >> RozmiarA;
  19.  
  20. double MacierzATransponowana[100][100], MacierzA[100][100], Macierz[100][100], MacierzKwadratowa[100][100];
  21. double WektorX[100], WektorY[100], WektorKwadratowy[100], wynik[100];
  22. double WynikOstateczny = 0;
  23.  
  24.  
  25. for (int i = 0; i < RozmiarA; i++) {
  26. for (int j = 0; j <= RozmiarC; j++) {
  27. if (j == 0) MacierzA[i][j] = 1;
  28. else cin >> MacierzA[i][j];
  29. }
  30. cin >> WektorX[i];
  31. }
  32. for (int i = 0; i <= RozmiarC; i++) {
  33. for (int j = 0; j < RozmiarA; j++)
  34. {
  35. MacierzATransponowana[i][j] = MacierzA[j][i];
  36. }
  37. }
  38. for (int i = 0; i <= RozmiarC; i++) {
  39. for (int j = 0; j <= RozmiarC; j++) {
  40. WynikOstateczny = 0;
  41. for (int k = 0; k < RozmiarA; k++){
  42. WynikOstateczny = WynikOstateczny + MacierzATransponowana[i][k] * MacierzA[k][j];
  43. }
  44. Macierz[i][j] = WynikOstateczny;
  45.  
  46. }
  47. }
  48. for (int i = 0; i <= RozmiarC; i++) {
  49. WynikOstateczny = 0;
  50. for (int j = 0; j < RozmiarA; j++){
  51. WynikOstateczny = WynikOstateczny + MacierzATransponowana[i][j] * WektorX[j];
  52. }
  53.  
  54. WektorY[i] = WynikOstateczny;
  55.  
  56.  
  57. }
  58. for (int i = 0; i <= RozmiarC; i++) {
  59. for (int j = 0; j <= RozmiarC; j++)
  60. {
  61. MacierzKwadratowa[i][j] = Macierz[i][j];
  62. }
  63. WektorKwadratowy[i] = WektorY[i];
  64. wynik[i] = 0;
  65.  
  66. }
  67.  
  68. for (int i = 0; i <= RozmiarC; i++) {
  69. for (int j = i + 1; j <= RozmiarC; j++) {
  70. for (int k = i; k <= RozmiarC; k++) {
  71. MacierzKwadratowa[j][k] = Macierz[j][k] - (Macierz[j][i] / Macierz[i][i] * Macierz[i][k]);
  72. WektorKwadratowy[j] = WektorY[j] - ((Macierz[j][i] / Macierz[i][i])*WektorY[i]);
  73. }
  74. }
  75. for (int i = 0; i <= RozmiarC; i++) {
  76. for (int j = 0; j <= RozmiarC; j++)Macierz[i][j] = MacierzKwadratowa[i][j];
  77. {
  78. WektorY[i] = WektorKwadratowy[i];
  79. }
  80. }
  81. }
  82. for (int i = RozmiarC; i >= 0; i--) {
  83. WynikOstateczny = 0;
  84. for (int j = 0; j <= RozmiarC; j++)
  85. {
  86. if (j != i)
  87. {
  88. WynikOstateczny = WynikOstateczny + Macierz[i][j] * wynik[j];
  89. }
  90.  
  91. wynik[i] = (WektorY[i] + (WynikOstateczny * -1)) / Macierz[i][i];
  92.  
  93. }
  94.  
  95.  
  96. }
  97.  
  98. for (int i = 0; i <= RozmiarC; i++)
  99. {
  100. cout << wynik[i] << " ";
  101. }
  102.  
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement