Если в большинстве списков слишком маленький индекс, вызывающая функция det() может переполниться или потерять значение. Этот процесс( slogdet() ) гораздо более надежен для подобных проблем, потому что он включает в себя логарифм быстрого доступа, а не сам ярлык.
Что такое функция np.linalg.slogdet() в Python?
Функция Numpy linalg slogdet() используется в Python для вычисления знака и (натурального) логарифма в определителе массива.
Синтаксис
|
1 |
numpy.linalg.slogdet(array) |
Параметры
Функция slogdet() принимает один параметр:
- array. Это двумерный массив, и он должен быть квадратным.
Возвращаемое значение
Функция slogdet() возвращает два значения:
- sign:
Число представляет знак определителя. Для реальной матрицы это 1, 0 или -1. Для сложной матрицы это комплексное число с абсолютным значением 1 (т. е. оно находится на единичной окружности) или 0.
- logdet:
Это натуральный логарифм абсолютного значения определителя. Если определитель равен нулю, то `sign` будет равен 0, а `logdet` будет —Inf. Во всех случаях определитель равен «sign * np.exp(logdet)».
Примеры программирования
- Программа для вычисления определителя одного двумерного массива.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Program to calculate determinant of one 2D array import numpy as np # creating a 2D array arr = np.array([[3, 4, 5], [7, 8, 6], [10, 11, 2]]) # printing the array print(arr) # calculating the slogdet(sign, logdet) = np.linalg.slogdet(arr) # Printing those values print("Sign is : ", sign) print("Logdet is :", logdet) |
Вывод:
|
1 2 3 4 5 |
[[ 3 4 5] [ 7 8 6] [10 11 2]] Sign is : 1.0 Logdet is : 2.944438979166441 |
Объяснение.
В этой программе мы создали квадратную матрицу размером 3×3, а затем распечатали ее. Затем мы вызвали slogdet(), чтобы получить знак и logdet массива. Мы видим, что мы получили знак 1.
- Программа для вычисления логарифмических определителей для стека матриц.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Computing log-determinants for a stack of matrices import numpy as np # creating the stack matrices arr = np.array([[[2, 1], [3, 4]], [[3, 4], [5, 6]], [[7, 8], [9, 10]]]) # printing the values print("The array is:\n", arr) print("Shape of the array is: ", arr.shape) # Calculating the slogdet(sign, logdet) = np.linalg.slogdet(arr) # Printing those values print("Sign is : ", sign) print("Logdet is :", logdet) |
Вывод:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
The array is: [[[ 2 1] [ 3 4]] [[ 3 4] [ 5 6]] [[ 7 8] [ 9 10]]] Shape of the array is: (3, 2, 2) Sign is : [ 1. -1. -1.] Logdet is : [1.60943791 0.69314718 0.69314718] |
Объяснение.
В этой программе мы создали квадратную матрицу размером 3×2, а затем распечатали ее. Затем мы вызвали функцию slogdet(), чтобы получить знак и logdet массива. Мы видим, что получили знак [ 1. -1. -1].
