Класс Matrix представляет собой реализацию матрицы с плавающей запятой дробной точностью. В классе реализованы следующие функции:
• Matrix(): Конструктор по умолчанию, создает пустую матрицу.
• Matrix(int rows, int cols, double value_of_element): Конструктор, создает матрицу с заданным количеством строк и столбцов, заполненную заданным значением.
• Matrix(const std::vector<std::vector>& matrix_data): Конструктор, создает матрицу из вектора векторов double.
• Matrix(const Matrix& other): Копирующий конструктор, создает копию матрицы.
• int get_row(): Возвращает количество строк в матрице.
• int get_coloms(): Возвращает количество столбцов в матрице.
• void print(): Выводит матрицу в консоль.
• void print_cat(): Выводит матрицу в виде рисунка (например, котика).
• double determinant(): Вычисляет определитель матрицы.
• double find_elem(int i, int j): Возвращает элемент матрицы по индексам i и j.
• void set_elem(int i, int j, double num): Устанавливает элемент матрицы по индексам i и j в значение num.
• Matrix sum_mtx(const Matrix& other): Складывает две матрицы.
• Matrix dif_mtx(const Matrix& other): Вычитает одну матрицу из другой.
• Matrix product_num(double num): Умножает матрицу на число.
• Matrix product(const Matrix& other): Умножает две матрицы.
• Matrix division_num(double num): Делит матрицу на число.
• Matrix inverse(): Вычисляет обратную матрицу.
• Matrix divicion(const Matrix& other): Делит одну матрицу на другую.
• Matrix rank(): Методом Гаусса вычисляет ранг матрицы.
• Matrix unary_minus(): Меняет знак всех элементов матрицы на противоположный.
• Matrix transpose(): Транспонирует матрицу.
• std::pair<Matrix,Matrix>luDecomposition():LU-разложение (представление матрицы A в виде произведения двух матриц, A=LU, где L — нижняя треугольная матрица, а U — верхняя треугольная матрица.)
• std::pair<Matrix,Matrix>qrDecomposition(): QR-разложение (с использованием метода Грама-Шмидта) где первая матрица выдает ортогональную матрицу, а вторая матрица является верхней треугольной.
• Матрица должна быть квадратной для вычисления определителя и обратной матрицы.
• Матрицы должны иметь одинаковое количество строк и столбцов для сложения и умножения.
• Матрицы должны иметь совпадающие размеры для деления.