Advertisement
spy4all

Untitled

Sep 17th, 2017
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4. using std::cout;
  5. using std::cin;
  6. using std::endl;
  7. //вводим функцию вывода матриц на экран
  8. template <size_t Rows, size_t Cols>
  9. void Output (int (&mas)[Rows] [Cols] )
  10.  
  11. {
  12.     for (int i = 0; i < Rows; i++)
  13.     {
  14.         for (int j = 0; j < Cols; j++)
  15.         {
  16.             cout << std::setw(5) << mas[i][j];
  17.         }
  18.         cout << endl;
  19.     }
  20.     cout << endl;
  21. }
  22. int main()
  23. {
  24.     const int Rows = 4;//кол-во строк
  25.     const int Cols = 4;//кол-во столбцов
  26.     int mas[Rows][Cols];
  27.     setlocale(LC_ALL, "RUSSIAN");
  28.     int x, y, z, t, delta, deltaX, deltaY, deltaZ;
  29.     cout << "-6x+ y+8z-6t= 57" << endl << " 3x-5y-7z+9t=-72" << endl << "-2x+8y-4z+7t=-3" << endl << " 5x+8y+3z+4t=-16" << endl << endl;//выводим на экран систему уравнений
  30.     int A[4][4] = { { -6,1,8,-6 },{ 3,-5,-7,9 },{ -2,8,-4,7 },{ 5,8,3,4 } };
  31.     cout << "Нахождение главного определителя" << endl << endl;
  32.     cout << "Delta = " << endl;
  33.     Output(A);//Вывод элементов главного определителя на экран
  34.     cout << "Вычитаем из элементов 1 столбца элементы 4 столбца. Получим:" << endl;
  35.     int B[4][4] = { { 0,1,8,-6 },{ -6,-5,-7,9 },{ -9,8,-4,7 },{ 1,8,3,4 } };
  36.     Output(B);//Вывод элементов главного определителя на экран после арифметических действий
  37.     cout << "Вычитаем из элементов 3 столбца элементы 2 стобца, умноженные на 8. Получим:" << endl;
  38.     int C[4][4] = { { 0,1,0,-6 },{ -6,-5,33,9 },{ -9,8,-68,7 },{ 1,8,-61,4 } };
  39.     Output(C);//Вывод элементов главного определителя на экран после арифметических действий
  40.     cout << "Складываем элементы 4 столбца с элементами 2 столбца, умноженными на 6. Получим:" << endl;
  41.     int D[4][4] = { { 0,1,0,0 },{ -6,-5,33,-21 },{ -9,8,-68,55 },{ 1,8,-61,52 } };
  42.     Output(D);//Вывод элементов главного определителя на экран после арифметических действий
  43.     cout << "Найдем минор полученной матрицы:" << endl;
  44.     cout << "a11*A11+a12*A12+a13*A13+a14*A14=0+a12*A12+0+0=a12*A12=1*(-1)^(1+2)*M12=-M12=" << endl;
  45.     int E[3][3] = { { -6,33,-21 },{ -9,-68,55 },{ 1,-61,52 } };
  46.     Output(E);//Вывод элементов минора
  47.     //Нахождение значения минора и определителя
  48.     delta = E[0][0] * E[1][1] * E[2][2] + E[1][0] * E[2][1] * E[0][2] + E[2][0] * E[0][1] * E[1][2] - E[2][0] * E[1][1] * E[0][2] - E[1][0] * E[0][1] * E[2][2] - E[0][0] * E[1][2] * E[2][1];
  49.     cout << "-M12 = " << delta << endl;
  50.     cout << "Тогда delta = M12 = " << -delta << endl;
  51.     cout << "Нахождение определителя X" << endl;
  52.     int A1[4][4] = { { 57,1,8,-6 },{ -72,-5,-7,9 },{ -3,8,-4,7 },{ -16,8,3,4 } };
  53.     cout << "DeltaX = " << endl;
  54.     Output(A1);//Вывод элементов дополнительного определителя, где вместо первого столбца записывается правая часть системы уравнений
  55.     cout << "Вычитаем из элементов 1 столбца элементы 2 стобца, умноженные на 57. Получим:" << endl;
  56.     int B1[4][4] = { { 0,1,8,-6 },{ 213,-5,-7,9 },{ -459,8,-4,7 },{ -472,8,3,4 } };
  57.     Output(B1);//Вывод элементов дополнительного определителя на экран после арифметических действий
  58.     cout << "Вычитаем из элементов 4 столбца элементы 2 столбца, умноженные на -6. Получим:" << endl;
  59.     int C1[4][4] = { { 0,1,8,0 },{ 213,-5,-7,-21 },{ -459,8,-4,55 },{ -472,8,3,52 } };
  60.     Output(C1);//Вывод элементов дополнительного определителя на экран после арифметических действий
  61.     cout << "Вычитаем из элементов 3 столбца элементы 2 столбца, умноженные на 8. Получим:" << endl;
  62.     int D1[4][4] = { { 0,1,0,0 },{ 213,-5,33,-21 },{ -459,8,-68,55 },{ -472,8,-61,52 } };
  63.     Output(D1);//Вывод элементов дополнительного определителя на экран после арифметических действий
  64.     cout << "Найдем минор полученной матрицы:" << endl;
  65.     cout << "a11*A11+a12*A12+a13*A13+a14*A14=0+a12*A12+0+0=a12*A12=1*(-1)^(1+2)*M12=-M12=" << endl;
  66.     int E1[3][3] = { { 213,33,-21 },{ -459,-68,55 },{ -472,-61,52 } };
  67.     Output(E1);//Вывод элементов минора
  68.     //Нахождение значения минора и определителя
  69.     deltaX = E1[0][0] * E1[1][1] * E1[2][2] + E1[1][0] * E1[2][1] * E1[0][2] + E1[2][0] * E1[0][1] * E1[1][2] - E1[2][0] * E1[1][1] * E1[0][2] - E1[1][0] * E1[0][1] * E1[2][2] - E1[0][0] * E1[1][2] * E1[2][1];
  70.     cout << "-M12 = " << deltaX << endl;
  71.     cout << "Тогда deltaX = M12 = " << -deltaX << endl;
  72.  
  73.     cout << "Нахождение определителя Y" << endl;
  74.     int A2[4][4] = { { -6,57,8,-6 },{ 3,-72,-7,9 },{ -2,-3,-4,7 },{ 5,-16,3,4 } };
  75.     cout << "DeltaY = " << endl;
  76.     Output(A2);//Вывод элементов дополнительного определителя, где вместо второго столбца записывается правая часть системы уравнений
  77.     cout << "Вычитаем из элементов 4 столбца элементы 1 столбца. Получим:" << endl;
  78.     int B2[4][4] = { { -6,57,8,0 },{ 3,-72,-7,6 },{ -2,-3,-4,9 },{ 5,-16,3,-1 } };
  79.     Output(B2); //Вывод элементов дополнительного определителя на экран после арифметических действий
  80.     cout << "Складываем элементы 2 строки с элементами 4 строки, умноженными на 6. Получим:" << endl;
  81.     int С2[4][4] = { { -6,57,8,0 },{ 33,-168,11,0 },{ -2,-3,-4,9 },{ 5,-16,3,-1 } };
  82.     Output(С2);//Вывод элементов дополнительного определителя на экран после арифметических действий
  83.     cout << "Складываем элементы 3 строки с элементами 4 строки, умноженными на 9. Получим:" << endl;
  84.     int D2[4][4] = { { -6,57,8,0 },{ 33,-168,11,0 },{ 43,-147,23,0 },{ 5,-16,3,-1 } };
  85.     Output(D2);//Вывод элементов дополнительного определителя на экран после арифметических действий
  86.     cout << "Найдем минор полученной матрицы:" << endl;
  87.     cout << "a14*A14+a24*A24+a34*A34+a44*A44=0+0+0+a44*A44=a44*A44=-1*(-1)^(4+4)*M44=-M44=" << endl;
  88.     int E2[3][3] = { { -6,57,8 },{ 33,-168,11 },{ 43,-147,23 } };
  89.     Output(E2);//Вывод элементов минора
  90.     //Нахождение значения минора и определителя
  91.     deltaY = E2[0][0] * E2[1][1] * E2[2][2] + E2[1][0] * E2[2][1] * E2[0][2] + E2[2][0] * E2[0][1] * E2[1][2] - E2[2][0] * E2[1][1] * E2[0][2] - E2[1][0] * E2[0][1] * E2[2][2] - E2[0][0] * E2[1][2] * E2[2][1];
  92.     cout << "-M44 = " << deltaY << endl;
  93.     cout << "Тогда deltaY = M44 = " << -deltaY << endl;
  94.  
  95.     cout << "Нахождение определителя Z" << endl;
  96.     int A3[4][4] = { { -6,1,57,-6 },{ 3,-5,-72,9 },{ -2,8,-3,7 },{ 5,8,-16,4 } };
  97.     cout << "DeltaZ = " << endl;
  98.     Output(A3); //Вывод элементов дополнительного определителя, где вместо третьего столбца записывается правая часть системы уравнений
  99.     cout << "Вычитаем из элементов 3 строки элементы 4 строки. Получим:" << endl;
  100.     int B3[4][4] = { { -6,1,57,-6 },{ 3,-5,-72,9 },{ -7,0,13,3 },{ 5,8,-16,4 } };
  101.     Output(B3);//Вывод элементов дополнительного определителя на экран после арифметических действий
  102.     cout << "Складываем элементы 2 строки с элементами 1 строки, умноженными на 5. Получим:" << endl;
  103.     int С3[4][4] = { { -6,1,57,-6 },{ -27,0,213,-21 },{ -7,0,13,3 },{ 5,8,-16,4 } };
  104.     Output(С3);//Вывод элементов дополнительного определителя на экран после арифметических действий
  105.     cout << "Складываем элементы 4 строки с элементами 1 строки, умноженными на 8. Получим:" << endl;
  106.     int D3[4][4] = { { -6,1,57,-6 },{ -27,0,213,-21 },{ -7,0,13,3 },{ 53,0,-472,52 } };
  107.     Output(D3);//Вывод элементов дополнительного определителя на экран после арифметических действий
  108.     cout << "Найдем минор полученной матрицы:" << endl;
  109.     cout << "a11*A11+a12*A12+a13*A13+a14*A14=0+a12*A12+0+0=a12*A12=1*(-1)^(1+2)*M12=-M12=" << endl;
  110.     int E3[3][3] = { { -27,213,-21 },{ -7,13,3 },{ 53,-472,52 } };
  111.     Output(E3); //Вывод элементов минора
  112.     //Нахождение значения минора и определителя
  113.     deltaZ = E3[0][0] * E3[1][1] * E3[2][2] + E3[1][0] * E3[2][1] * E3[0][2] + E3[2][0] * E3[0][1] * E3[1][2] - E3[2][0] * E3[1][1] * E3[0][2] - E3[1][0] * E3[0][1] * E3[2][2] - E3[0][0] * E3[1][2] * E3[2][1];
  114.     cout << "-M12 = " << deltaZ << endl;
  115.     cout << "Тогда deltaZ = M12 = " << -deltaZ << endl;
  116.     cout << "Найдем значения x,y,z и t" << endl;
  117.     //Нахождение неизвестных
  118.     x = deltaX / delta; y = deltaY / delta; z = deltaZ / delta;
  119.     cout << "x = deltaX/delta = " << x << endl;
  120.     cout << "y = deltaY/delta = " << y << endl;
  121.     cout << "z = deltaZ/delta = " << z << endl;
  122.     //Вывод формулы для нахождения последней неизвестной t
  123.     t = (-16 - 5 * x - 8 * y - 3 * z) / 4;
  124.     cout << "Выразим t из 4 уравнения. Получим: t = (-16-5x-8y-3z)/4 = (-16-5*(" << x << ")-8*" << y << "-3*" << z << ")/4 = " << t << endl << endl;
  125.     //Вывод ответа
  126.     cout << "Ответ: (" << x << "; " << y << "; " << z << "; " << t << ")" << endl << endl;
  127.  
  128.     return 0;
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement