Функция linalg.matrix_rank
Функция linalg.matrix_rank вычисляет ранг матрицы, то есть максимальное количество линейно независимых строк или столбцов. Ранг матрицы показывает размерность пространства, порождаемого её строками или столбцами. Функция использует сингулярное разложение (SVD) для определения ранга, сравнивая сингулярные числа с заданным порогом. Первым параметром передаётся входная матрица, вторым параметром можно задать порог отсечения, третьим параметром указать, считать ли точные нули сингулярных чисел.
Синтаксис
np.linalg.matrix_rank(M, tol=None, hermitian=False)
Пример
Давайте вычислим ранг матрицы с линейно независимыми строками:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.linalg.matrix_rank(arr)
print(res)
Результат выполнения кода:
2
Пример
Вычислим ранг единичной матрицы, которая имеет полный ранг:
import numpy as np
arr = np.eye(3)
res = np.linalg.matrix_rank(arr)
print(res)
Результат выполнения кода:
3
Пример
Вычислим ранг нулевой матрицы:
import numpy as np
arr = np.zeros((3, 4))
res = np.linalg.matrix_rank(arr)
print(res)
Результат выполнения кода:
0
Пример
Используем параметр tol для задания пользовательского порога отсечения сингулярных чисел:
import numpy as np
arr = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1e-12]])
res_default = np.linalg.matrix_rank(arr)
res_custom = np.linalg.matrix_rank(arr, tol=1e-13)
print(res_default)
print(res_custom)
Результат выполнения кода:
2
3
Пример
Используем параметр hermitian для ускорения вычисления ранга эрмитовых матриц:
import numpy as np
arr = np.array([[1, 2j], [-2j, 1]])
res = np.linalg.matrix_rank(arr, hermitian=True)
print(res)
Результат выполнения кода:
2
Пример
Вычислим ранг матрицы, представляющей систему линейных уравнений с двумя независимыми уравнениями:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.linalg.matrix_rank(arr)
print(res)
Результат выполнения кода:
2