Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <iomanip>
- using std::cout;
- using std::cin;
- using std::endl;
- //вводим функцию вывода матриц на экран
- template <size_t Rows, size_t Cols>
- void Output (int (&mas)[Rows] [Cols] )
- {
- for (int i = 0; i < Rows; i++)
- {
- for (int j = 0; j < Cols; j++)
- {
- cout << std::setw(5) << mas[i][j];
- }
- cout << endl;
- }
- cout << endl;
- }
- int main()
- {
- const int Rows = 4;//кол-во строк
- const int Cols = 4;//кол-во столбцов
- int mas[Rows][Cols];
- setlocale(LC_ALL, "RUSSIAN");
- int x, y, z, t, delta, deltaX, deltaY, deltaZ;
- 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;//выводим на экран систему уравнений
- int A[4][4] = { { -6,1,8,-6 },{ 3,-5,-7,9 },{ -2,8,-4,7 },{ 5,8,3,4 } };
- cout << "Нахождение главного определителя" << endl << endl;
- cout << "Delta = " << endl;
- Output(A);//Вывод элементов главного определителя на экран
- cout << "Вычитаем из элементов 1 столбца элементы 4 столбца. Получим:" << endl;
- int B[4][4] = { { 0,1,8,-6 },{ -6,-5,-7,9 },{ -9,8,-4,7 },{ 1,8,3,4 } };
- Output(B);//Вывод элементов главного определителя на экран после арифметических действий
- cout << "Вычитаем из элементов 3 столбца элементы 2 стобца, умноженные на 8. Получим:" << endl;
- int C[4][4] = { { 0,1,0,-6 },{ -6,-5,33,9 },{ -9,8,-68,7 },{ 1,8,-61,4 } };
- Output(C);//Вывод элементов главного определителя на экран после арифметических действий
- cout << "Складываем элементы 4 столбца с элементами 2 столбца, умноженными на 6. Получим:" << endl;
- int D[4][4] = { { 0,1,0,0 },{ -6,-5,33,-21 },{ -9,8,-68,55 },{ 1,8,-61,52 } };
- Output(D);//Вывод элементов главного определителя на экран после арифметических действий
- cout << "Найдем минор полученной матрицы:" << endl;
- cout << "a11*A11+a12*A12+a13*A13+a14*A14=0+a12*A12+0+0=a12*A12=1*(-1)^(1+2)*M12=-M12=" << endl;
- int E[3][3] = { { -6,33,-21 },{ -9,-68,55 },{ 1,-61,52 } };
- Output(E);//Вывод элементов минора
- //Нахождение значения минора и определителя
- 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];
- cout << "-M12 = " << delta << endl;
- cout << "Тогда delta = M12 = " << -delta << endl;
- cout << "Нахождение определителя X" << endl;
- int A1[4][4] = { { 57,1,8,-6 },{ -72,-5,-7,9 },{ -3,8,-4,7 },{ -16,8,3,4 } };
- cout << "DeltaX = " << endl;
- Output(A1);//Вывод элементов дополнительного определителя, где вместо первого столбца записывается правая часть системы уравнений
- cout << "Вычитаем из элементов 1 столбца элементы 2 стобца, умноженные на 57. Получим:" << endl;
- int B1[4][4] = { { 0,1,8,-6 },{ 213,-5,-7,9 },{ -459,8,-4,7 },{ -472,8,3,4 } };
- Output(B1);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Вычитаем из элементов 4 столбца элементы 2 столбца, умноженные на -6. Получим:" << endl;
- int C1[4][4] = { { 0,1,8,0 },{ 213,-5,-7,-21 },{ -459,8,-4,55 },{ -472,8,3,52 } };
- Output(C1);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Вычитаем из элементов 3 столбца элементы 2 столбца, умноженные на 8. Получим:" << endl;
- int D1[4][4] = { { 0,1,0,0 },{ 213,-5,33,-21 },{ -459,8,-68,55 },{ -472,8,-61,52 } };
- Output(D1);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Найдем минор полученной матрицы:" << endl;
- cout << "a11*A11+a12*A12+a13*A13+a14*A14=0+a12*A12+0+0=a12*A12=1*(-1)^(1+2)*M12=-M12=" << endl;
- int E1[3][3] = { { 213,33,-21 },{ -459,-68,55 },{ -472,-61,52 } };
- Output(E1);//Вывод элементов минора
- //Нахождение значения минора и определителя
- 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];
- cout << "-M12 = " << deltaX << endl;
- cout << "Тогда deltaX = M12 = " << -deltaX << endl;
- cout << "Нахождение определителя Y" << endl;
- int A2[4][4] = { { -6,57,8,-6 },{ 3,-72,-7,9 },{ -2,-3,-4,7 },{ 5,-16,3,4 } };
- cout << "DeltaY = " << endl;
- Output(A2);//Вывод элементов дополнительного определителя, где вместо второго столбца записывается правая часть системы уравнений
- cout << "Вычитаем из элементов 4 столбца элементы 1 столбца. Получим:" << endl;
- int B2[4][4] = { { -6,57,8,0 },{ 3,-72,-7,6 },{ -2,-3,-4,9 },{ 5,-16,3,-1 } };
- Output(B2); //Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Складываем элементы 2 строки с элементами 4 строки, умноженными на 6. Получим:" << endl;
- int С2[4][4] = { { -6,57,8,0 },{ 33,-168,11,0 },{ -2,-3,-4,9 },{ 5,-16,3,-1 } };
- Output(С2);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Складываем элементы 3 строки с элементами 4 строки, умноженными на 9. Получим:" << endl;
- int D2[4][4] = { { -6,57,8,0 },{ 33,-168,11,0 },{ 43,-147,23,0 },{ 5,-16,3,-1 } };
- Output(D2);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Найдем минор полученной матрицы:" << endl;
- cout << "a14*A14+a24*A24+a34*A34+a44*A44=0+0+0+a44*A44=a44*A44=-1*(-1)^(4+4)*M44=-M44=" << endl;
- int E2[3][3] = { { -6,57,8 },{ 33,-168,11 },{ 43,-147,23 } };
- Output(E2);//Вывод элементов минора
- //Нахождение значения минора и определителя
- 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];
- cout << "-M44 = " << deltaY << endl;
- cout << "Тогда deltaY = M44 = " << -deltaY << endl;
- cout << "Нахождение определителя Z" << endl;
- int A3[4][4] = { { -6,1,57,-6 },{ 3,-5,-72,9 },{ -2,8,-3,7 },{ 5,8,-16,4 } };
- cout << "DeltaZ = " << endl;
- Output(A3); //Вывод элементов дополнительного определителя, где вместо третьего столбца записывается правая часть системы уравнений
- cout << "Вычитаем из элементов 3 строки элементы 4 строки. Получим:" << endl;
- int B3[4][4] = { { -6,1,57,-6 },{ 3,-5,-72,9 },{ -7,0,13,3 },{ 5,8,-16,4 } };
- Output(B3);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Складываем элементы 2 строки с элементами 1 строки, умноженными на 5. Получим:" << endl;
- int С3[4][4] = { { -6,1,57,-6 },{ -27,0,213,-21 },{ -7,0,13,3 },{ 5,8,-16,4 } };
- Output(С3);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Складываем элементы 4 строки с элементами 1 строки, умноженными на 8. Получим:" << endl;
- int D3[4][4] = { { -6,1,57,-6 },{ -27,0,213,-21 },{ -7,0,13,3 },{ 53,0,-472,52 } };
- Output(D3);//Вывод элементов дополнительного определителя на экран после арифметических действий
- cout << "Найдем минор полученной матрицы:" << endl;
- cout << "a11*A11+a12*A12+a13*A13+a14*A14=0+a12*A12+0+0=a12*A12=1*(-1)^(1+2)*M12=-M12=" << endl;
- int E3[3][3] = { { -27,213,-21 },{ -7,13,3 },{ 53,-472,52 } };
- Output(E3); //Вывод элементов минора
- //Нахождение значения минора и определителя
- 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];
- cout << "-M12 = " << deltaZ << endl;
- cout << "Тогда deltaZ = M12 = " << -deltaZ << endl;
- cout << "Найдем значения x,y,z и t" << endl;
- //Нахождение неизвестных
- x = deltaX / delta; y = deltaY / delta; z = deltaZ / delta;
- cout << "x = deltaX/delta = " << x << endl;
- cout << "y = deltaY/delta = " << y << endl;
- cout << "z = deltaZ/delta = " << z << endl;
- //Вывод формулы для нахождения последней неизвестной t
- t = (-16 - 5 * x - 8 * y - 3 * z) / 4;
- cout << "Выразим t из 4 уравнения. Получим: t = (-16-5x-8y-3z)/4 = (-16-5*(" << x << ")-8*" << y << "-3*" << z << ")/4 = " << t << endl << endl;
- //Вывод ответа
- cout << "Ответ: (" << x << "; " << y << "; " << z << "; " << t << ")" << endl << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement