Характеристики матриц и векторов

Следующая группа методов позволяет получить основные характеристики матриц:

  • Rows, Cols — количество строк и столбцов в матрице;
  • Norm — одна из предопределенных норм матрицы (ENUM_MATRIX_NORM);
  • Cond — число обусловленности матрицы;
  • Det — определитель квадратной невырожденной матрицы;
  • SLogDet — вычисляет знак и логарифм определителя матрицы;
  • Rank — ранг матрицы;
  • Trace — сумма элементов по диагоналям матрицы (след);
  • Spectrum — спектр матрицы как набор ее собственных значений.

Кроме того для векторов определены такие характеристики:

  • Size — длина вектора;
  • Norm — одна из предопределенных норм вектора (ENUM_VECTOR_NORM).

Размеры объектов (впрочем, как и индексация элементов в них) используют значения типа ulong.

ulong matrix<T>::Rows()

ulong matrix<T>::Cols()

ulong vector<T>::Size()

Большинство прочих характеристик — это вещественные числа.

double vector<T>::Norm(const ENUM_VECTOR_NORM norm, const int norm_p = 2)

double matrix<T>::Norm(const ENUM_MATRIX_NORM norm)

double matrix<T>::Cond(const ENUM_MATRIX_NORM norm)

double matrix<T>::Det()

double matrix<T>::SLogDet(int &sign)

double matrix<T>::Trace()

Ранг и спектр представляют собой, соответственно, целое число и вектор.

int matrix<T>::Rank()

vector matrix<T>::Spectrum()

Пример вычисления ранга матрицы:

matrix a = matrix::Eye(44);
Print("matrix a (eye)\n"a);
Print("a.Rank()="a.Rank());
   
a[33] = 0;
Print("matrix a (defective eye)\n"a);
Print("a.Rank()="a.Rank());
   
matrix b = matrix::Ones(14);
Print("b \n"b);
Print("b.Rank()="b.Rank());
   
matrix zeros = matrix::Zeros(41);
Print("zeros \n"zeros);
Print("zeros.Rank()="zeros.Rank());

А вот результат работы скрипта:

matrix a (eye)
[[1,0,0,0]
 [0,1,0,0]
 [0,0,1,0]
 [0,0,0,1]]
a.Rank()=4
  
matrix a (defective eye)
[[1,0,0,0]
 [0,1,0,0]
 [0,0,1,0]
 [0,0,0,0]]
a.Rank()=3
  
b
[[1,1,1,1]]
b.Rank()=1
   
zeros
[[0]
 [0]
 [0]
 [0]]
zeros.Rank()=0