Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- using namespace std;
- int main()
- {
- 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];
- int i, j, k;
- float opr;
- setlocale(LC_ALL, "Russian");
- cout << "Сколько уравнений вы хотите решить?(не больше 10)";
- int n;
- cin >> n;
- for (i = 0; i < n; i++) {
- for (j = 0; j < n; j++) {
- if (i == j) {
- cout << "Введите коэфициент A" << i << j << "(должен быть не равен нулю) ";
- }
- else cout << "Введите коэфициент A" << i << j << " ";
- cin >> a[i][j];
- a1[i][j] = a[i][j];
- }
- cout << "Введите чему равно данное уравнение ";
- cin >> a[i][n];
- b[i] = a[i][n];
- }
- for (k = 0; k < n - 1; k++) {
- float c = a[k][k];
- for (j = 0; j <= n; j++) {
- a[k][j] = a[k][j] / c;
- }
- for (i = k; i < n - 1; i++) {
- float y = a[i + 1][k];
- for (j = 0; j <= n; j++) {
- a[i+1][j] -= a[k][j]*y;
- }
- }
- cout << "Шаг " << k << ":" << endl;
- for (i = 0; i < n; i++) {
- for (j = 0; j < n; j++) {
- cout << a[i][j] << " ";
- }
- cout << "= " << a[i][n] << endl;
- }
- cout << endl;
- }
- cout << "Обратный ход:" << endl;
- x[n - 1] = a[n - 1][n] / a[n - 1][n - 1];
- cout << "X" << n - 1 << "="<<x[n-1]<<endl;
- for (i = n - 2; i >= 0; i--) {
- x[i] = a[i][n];
- for (j = n - 1; j > i; j--) {
- x[i] -= a[i][j] * x[j];
- }
- cout << "X" << i << "="<<x[i]<<endl;
- }
- cout << "Введите нужную погрешность ";
- float e;
- cin >> e;
- 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];
- for (i = 0; i < n; i++) {
- for (j = 0; j < n; j++) {
- int v;
- int z=0;
- for (k = 0; k < n; k++) {
- for (v = 0; v < n; v++) {
- if (!((i == k) || (j == v))) {
- switch (z) {
- case 0: m[0][0] = a1[k][v];
- break;
- case 1:m[0][1] = a1[k][v];
- break;
- case 2:m[1][0] = a1[k][v];
- break;
- case 3:m[1][1] = a1[k][v];
- break;
- }
- z++;
- }
- }
- }
- obr_a[i][j] = m[0][0] * m[1][1] - m[0][1] * m[1][0];
- if (!((i + j) % 2 == 0)) obr_a[i][j] = -obr_a[i][j];
- }
- }
- for (i = 0; i < n; i++) {
- for (j = 0; j < n; j++) {
- obr_a1[i][j] = obr_a[j][i]/opr;
- }
- }
- int u;
- do {
- u = 0;
- for (i = 0; i < n; i++) {
- b0[i] = 0;
- for (j = 0; j < n; j++) {
- b0[i] = b0[i] + a1[i][j] * x[j];
- }
- }
- for (i = 0; i < n; i++) {
- r[i] = b[i] - b0[i];
- }
- for (i = 0; i < n; i++) {
- x0[i] = 0;
- for (j = 0; j < n; j++) {
- x0[i] = x0[i] + obr_a1[i][j] * r[j];
- }
- }
- for (i = 0; i < n; i++) {
- if (x0[i] >= e)u++;
- x[i] = x[i] + x0[i];
- cout << x[i] << i << ' ';
- }
- cout <<"u="<< u << endl;
- } while (!(u == 0));
- e = 1 / e;
- int p = 0;
- while (e > 1) {
- p++;
- e = e / 10;
- }
- cout << "Уточнённые значения:"<<endl;
- for (i = 0; i < n; i++) {
- float k = x[i];
- int g = 0;
- while (k >= 1) {
- g++;
- k = k / 10;
- }
- cout << "X" << i << " = " << setprecision(p+g) << x[i] << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment