РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
251 of 541 menu

Функция slogdet

Функция slogdet из подмодуля linalg вычисляет знак и натуральный логарифм определителя квадратной матрицы. В отличие от функции det, которая возвращает сам определитель, slogdet возвращает кортеж из двух элементов: знак и логарифм модуля определителя. Это особенно полезно, когда определитель очень мал или очень велик, и его непосредственное вычисление может привести к переполнению или потере точности.

Функция принимает один обязательный параметр - квадратную матрицу. Возвращаемое значение - кортеж (sign, logdet), где sign - это знак определителя (1 для положительного, -1 для отрицательного, 0 для нулевого), а logdet - натуральный логарифм абсолютного значения определителя. Если определитель равен нулю, то sign будет равен 0, а logdet будет равен -inf.

Синтаксис

np.linalg.slogdet(a)

Пример

Вычислим знак и логарифм определителя для матрицы 2x2:

import numpy as np arr = np.array([[1, 2], [3, 4]]) sign, logdet = np.linalg.slogdet(arr) print(sign) print(logdet) print(np.exp(logdet) * sign)

Результат выполнения кода:

-1.0 0.6931471805599453 -2.0

В данном примере определитель матрицы равен -2, поэтому знак равен -1, а логарифм от 2 равен примерно 0.693.

Пример

Рассмотрим случай с нулевым определителем:

import numpy as np arr = np.array([[1, 2], [2, 4]]) sign, logdet = np.linalg.slogdet(arr) print(sign) print(logdet)

Результат выполнения кода:

0.0 -inf

Определитель равен нулю, поэтому знак равен 0, а логарифм равен -бесконечности.

Пример

Применим функцию к единичной матрице:

import numpy as np arr = np.eye(3) sign, logdet = np.linalg.slogdet(arr) print(sign) print(logdet)

Результат выполнения кода:

1.0 0.0

Определитель единичной матрицы равен 1, поэтому знак равен 1, а логарифм от 1 равен 0.

Пример

Использование slogdet для матрицы большого размера с очень большим определителем:

import numpy as np rng = np.random.default_rng(0) arr = rng.integers(1, 10, size=(10, 10)) sign, logdet = np.linalg.slogdet(arr) print(sign) print(logdet)

Результат выполнения кода:

-1.0 16.11809565095832

В этом примере определитель матрицы имеет отрицательный знак, а его модуль равен exp(16.118) ≈ 1e7.

Смотрите также

  • функцию det,
    которая вычисляет сам определитель матрицы
  • функцию inv,
    которая вычисляет обратную матрицу
  • функцию svd,
    которая выполняет сингулярное разложение матрицы
  • функцию cond,
    которая вычисляет число обусловленности матрицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить