Geradot345

lb3

Mar 14th, 2021 (edited)
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. float a[10][11],x[10],b[10],b0[10],r[10],x0[10],obr_a[10][10],m[2][2],obr_a1[10][11],a1[10][11];
  9. int i, j, k;
  10. float opr;
  11. setlocale(LC_ALL, "Russian");
  12. cout << "Сколько уравнений вы хотите решить?(не больше 10)";
  13. int n;
  14. cin >> n;
  15. for (i = 0; i < n; i++) {
  16. for (j = 0; j < n; j++) {
  17. if (i == j) {
  18. cout << "Введите коэфициент A" << i << j << "(должен быть не равен нулю) ";
  19. }
  20. else cout << "Введите коэфициент A" << i << j << " ";
  21. cin >> a[i][j];
  22. a1[i][j] = a[i][j];
  23. }
  24. cout << "Введите чему равно данное уравнение ";
  25. cin >> a[i][n];
  26. b[i] = a[i][n];
  27. }
  28. for (k = 0; k < n - 1; k++) {
  29. float c = a[k][k];
  30. for (j = 0; j <= n; j++) {
  31. a[k][j] = a[k][j] / c;
  32. }
  33. for (i = k; i < n - 1; i++) {
  34. float y = a[i + 1][k];
  35. for (j = 0; j <= n; j++) {
  36. a[i+1][j] -= a[k][j]*y;
  37. }
  38. }
  39. cout << "Шаг " << k << ":" << endl;
  40. for (i = 0; i < n; i++) {
  41. for (j = 0; j < n; j++) {
  42. cout << a[i][j] << " ";
  43. }
  44. cout << "= " << a[i][n] << endl;
  45. }
  46. cout << endl;
  47. }
  48. cout << "Обратный ход:" << endl;
  49. x[n - 1] = a[n - 1][n] / a[n - 1][n - 1];
  50. cout << "X" << n - 1 << "="<<x[n-1]<<endl;
  51. for (i = n - 2; i >= 0; i--) {
  52. x[i] = a[i][n];
  53. for (j = n - 1; j > i; j--) {
  54. x[i] -= a[i][j] * x[j];
  55. }
  56. cout << "X" << i << "="<<x[i]<<endl;
  57. }
  58. cout << "Введите нужную погрешность ";
  59. float e;
  60. cin >> e;
  61. opr = a1[0][0] * a1[1][1] * a1[2][2] + a1[0][2] * a1[1][0] * a1[2][1] + a1[0][1] * a1[1][2] * a1[2][0] - a1[0][2] * a1[1][1] * a1[2][0] - a1[0][0] * a1[1][2] * a1[2][1] - a1[0][1] * a1[1][0] * a1[2][2];
  62. for (i = 0; i < n; i++) {
  63. for (j = 0; j < n; j++) {
  64. int v;
  65. int z=0;
  66. for (k = 0; k < n; k++) {
  67. for (v = 0; v < n; v++) {
  68. if (!((i == k) || (j == v))) {
  69. switch (z) {
  70. case 0: m[0][0] = a1[k][v];
  71. break;
  72. case 1:m[0][1] = a1[k][v];
  73. break;
  74. case 2:m[1][0] = a1[k][v];
  75. break;
  76. case 3:m[1][1] = a1[k][v];
  77. break;
  78. }
  79. z++;
  80. }
  81. }
  82. }
  83. obr_a[i][j] = m[0][0] * m[1][1] - m[0][1] * m[1][0];
  84. if (!((i + j) % 2 == 0)) obr_a[i][j] = -obr_a[i][j];
  85. }
  86. }
  87. for (i = 0; i < n; i++) {
  88. for (j = 0; j < n; j++) {
  89. obr_a1[i][j] = obr_a[j][i]/opr;
  90. }
  91. }
  92. int u;
  93. do {
  94. u = 0;
  95. for (i = 0; i < n; i++) {
  96. b0[i] = 0;
  97. for (j = 0; j < n; j++) {
  98. b0[i] = b0[i] + a1[i][j] * x[j];
  99. }
  100. }
  101. for (i = 0; i < n; i++) {
  102. r[i] = b[i] - b0[i];
  103. }
  104. for (i = 0; i < n; i++) {
  105. x0[i] = 0;
  106. for (j = 0; j < n; j++) {
  107. x0[i] = x0[i] + obr_a1[i][j] * r[j];
  108. }
  109. }
  110. for (i = 0; i < n; i++) {
  111. if (x0[i] >= e)u++;
  112. x[i] = x[i] + x0[i];
  113. cout << x[i] << i << ' ';
  114. }
  115. cout <<"u="<< u << endl;
  116. } while (!(u == 0));
  117. e = 1 / e;
  118. int p = 0;
  119. while (e > 1) {
  120. p++;
  121. e = e / 10;
  122. }
  123. cout << "Уточнённые значения:"<<endl;
  124. for (i = 0; i < n; i++) {
  125. float k = x[i];
  126. int g = 0;
  127. while (k >= 1) {
  128. g++;
  129. k = k / 10;
  130. }
  131. cout << "X" << i << " = " << setprecision(p+g) << x[i] << endl;
  132. }
  133. }
  134.  
Advertisement
Add Comment
Please, Sign In to add comment