Пример использования библиотеки матричной алгебры - 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

Ссылки

Официальная документация

⚠️ **GitHub.com Fallback** ⚠️