Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- class matrix {
- double elements[4][4]{};
- matrix(double elements[4][4]){
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- this->elements[i][j] = elements[i][j];
- }
- }
- }
- void T() {
- int temp[4][4];
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- temp[i][j] = this->elements[j][i];
- }
- }
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- this->elements[i][j] = temp[i][j];
- }
- }
- }
- double det() {
- double determinant = 0;
- determinant = elements[0][0] * (elements[1][1] * elements[2][2] * elements[3][3] +
- elements[1][2] * elements[2][3] * elements[3][1] +
- elements[1][3] * elements[2][1] * elements[3][2]
- - elements[1][3] * elements[2][2] * elements[3][1] -
- elements[1][2] * elements[2][1] * elements[3][3] -
- elements[1][1] * elements[2][3] * elements[3][2]);
- return determinant;
- }
- matrix A() {
- matrix result;
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- result.elements[i][j] = minor(i, j) * pow(-1, i + j);
- }
- }
- return result;
- }
- double minor(int row, int col) {
- int temp[3][3];
- int row_shift = 0, col_shift = 0;
- for (int i = 0; i < 4; i++) {
- if (i == row) row_shift = 1;
- for (int j = 0; j < 4; j++) {
- if (j == col) col_shift = 1;
- temp[i - row_shift][j - col_shift] = elements[i][j];
- }
- col_shift = 0;
- }
- row_shift = 0;
- return det(temp, 3); // используем функцию det() для вычисления определителя подматрицы
- }
- double det(int matrix[3][3], int size) {
- double determinant;
- if (size == 3) {
- determinant = elements[0][0] * (elements[1][1] * elements[2][2] - elements[1][2] * elements[2][1])
- - elements[0][1] * (elements[1][0] * elements[2][2] - elements[1][2] * elements[2][0])
- + elements[0][2] * (elements[1][0] * elements[2][1] - elements[1][1] * elements[2][0]);
- } else throw invalid_argument("size must be 3");
- return determinant;
- }
- friend std::ostream &operator<<(std::ostream &os, const matrix &m) {
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
- os << m.elements[i][j] << " ";
- }
- os << std::endl;
- }
- return os;
- }
- };
- int main() {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement