Пример использования библиотеки матричной алгебры - lanit-tercom-school/grouplock GitHub Wiki
Библиотека матричной алгебры лежит в папке libraries\TNT
TNT - Template Numerical Toolkit
#include "stdafx.h"
#include "libraries\TNT\tnt.h"
using namespace TNT;
int main()
{
}
Можно создавать матрицу с элементами любого типа
Array2D<int> A(3, 3); // Здесь создастся пустая матрица 3x3
Array2D<int> B(3, 3, 1); // А здесь - матрица 3x3, заполненная единицами
Array2D<int> C = A; // Ссылка на матрицу A
Array2D<int> C = A.copy(); // Новая матрица, копия марицы A
Получение размеров матрицы
//Дана матрица A размерами MxN:
int m = A.dim1;
int n = A.dim2;
Важно: отсчёт строк начинается с 0
Поэлементная работа с матрицами
Array2D<int> C = A + B; // Сложение и вычитание матриц по обычным правилам
Array2D<int> D = A - B;
Array2D<int> C = A * B;
Array2D<int> D = A / B;
Важно: здесь A * B и A / B - **поэлементное ** умножение и деление
Умножение матриц
Array2D<int> C = matmult(A, B); // Стандартное умножение матрицы NxM на MxK
Сравнение матриц
bool f = A == B; // Можно сравнивать две матрицы поэлементно
Умножение на скаляр
int p = 15;
Array2D<int> C = p * A;
Array2D<int> C = A * p;
Важно: здесь скаляр и матрица должны быть одного типа
Взятие по модулю числа и по модулю матрицы
int p = 23;
Array2D<int> C = A % p; // Взятие матрицы по модулю p, т.е. каждый элемент будет взят по этому модулю
Array2D<int> C = A % B; // Взятие матрицы по модулю другой матрицы, т.е. элемент матрицы A с индексами (i,j) будет взят по модулю элемента с такими же индексами матрицы B
Важно: p, A и B всегда типа int
Нахождение определителя
double d = det(A); // Определитель матрицы
Важно: определитель возвращает тип double
Нахождение минора матрицы
Array2D<int> C = minor(A, 2, 4); // Главный минор матрицы A для элемента с индексами (2, 4)
// A имеет размеры MxN
// C будет иметь размеры (M-1)x(N-1)
Нахождение матрицы главных миноров
Array2D<int> C = allied(A); // Матрица главных миноров для матрицы A
// A имеет размеры MxN
// C будет иметь размеры MxN
Нахождение транспонированной матрицы
Array2D<int> C = !A; // Траспонирование матрицы A
// A имеет размеры MxN
// C будет иметь размеры NxM
Нахождение обратной матрицы
Array2D<double> C = inverse(A); // C будет иметь размеры MxN
Важно: элементы обратной матрицы всегда будут типа double
Официальная документация