-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMatrix_utilites_additional.h
52 lines (38 loc) · 2.07 KB
/
Matrix_utilites_additional.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#pragma once
#include "Matrix.h"
#include "Matrix_utilities.h"
// ещё есть методы их смотри в Matrix.h после черты
namespace linalg {
// создаёт транспанированную матрицу
template <typename T1, typename Alloc>
linalg::Matrix<T1, Alloc> transpose(const Matrix<T1, Alloc> &obj);
// создаёт обратную матрицу
// если Det != 0
template <typename T1, typename Alloc_1>
auto inv(const Matrix<T1, Alloc_1> &obj);
// возводит в степень
// в любую степень можно только квадр матрицу, ибо правила умножения
template <typename T, typename Alloc>
Matrix<T, Alloc> pow (const Matrix<T, Alloc> &obj, size_t number);
template <typename T1, typename Alloc_1, typename T2, typename Alloc_2>
auto solve (const Matrix<T1, Alloc_1> &mat, const Matrix<T2, Alloc_2> &vec);
template <typename T1, typename Alloc_1, typename T2, typename Alloc_2>
bool operator==(const Matrix<T1, Alloc_1> &right, const Matrix<T2, Alloc_2> &left);
//Евклидова норма
template<typename T, typename Alloc>
double norm(const Matrix<T, Alloc>& obj);
//Скалярное произведение
template<typename T1, typename A1, typename T2, typename A2>
double multy_scalar(const Matrix<T1, A1>& obj1, const Matrix<T2, A2>& obj2);
//Нахождение угола между векторами
template<typename T1, typename A1, typename T2, typename A2>
double angle(const Matrix<T1, A1>& obj1, const Matrix<T2, A2>& obj2);
//Векторное произведение
template<typename T1, typename A1, typename T2, typename A2>
auto multy_vector(const Matrix<T1, A1>& obj1, const Matrix<T2, A2>& obj2)->Matrix<decltype(T1()* T2())>;
#include "Matrix_utilites.hpp" // там находятся все реализации
//Вектор единичный
template<typename T, typename Alloc>
auto unit(const Matrix<T, Alloc>& obj)->Matrix<decltype(T() * double())>;
#include "Matrix_utilites_additional.hpp"
}