DevGang
Авторизоваться

Numpy linalg.cholesky: Как использовать np.cholesky()

Python numpy.linalg.cholesky() используется для получения значения разложения Холецкого. Давайте разберемся, что такое разложение Холецкого. Если у нас есть L * LH квадратной матрицы, где L - нижний треугольник .H - сопряженный оператор транспонирования (который является обычным значением транспонирования), должен быть эрмитовым (симметричным, если действительное значение) и четко определенным. Возвращается только L.

Разложение Холецкого иногда используется для получения быстрого результата 

Ax = b, где A одновременно эрмитово / симметрично и положительно определено).

Сначала мы решаем в 

Ly = b

а затем в

L.Hx = y

Синтаксис

numpy.linalg.cholesky(arr)

Параметры

Функция np.cholesky() принимает только один параметр: заданный эрмитов (симметричный, если все элементы действительные), положительно определенную входную матрицу.

Возвращаемое значение

Функция cholesky() возвращает верхний или нижний треугольный коэффициент Холецкого для a. Возвращает объект матрицы, если является объектом матрицы. Если разложение не удается, данная матрица не является положительно определенной; эта функция возвращает ошибку LinAlgError.

Пример программирования

В поисках значения Холецкого

import numpy as np

# Declaring the first array
arr1 = np.array([[2.+0.j, -0.-3.j], [0.+3.j, 5.+0.j]])

print("Original array is :\n", arr1)

# Calculating and printing cholesky value
L = np.linalg.cholesky(arr1)
print("Cholesky value is:\n", L)

# Verifying the output

v_val = np.dot(L, L.T.conj())
print("Verified value is:\n", v_val)

Результат

Original array is :
 [[ 2.+0.j -0.-3.j]
 [ 0.+3.j  5.+0.j]]
Cholesky value is:
 [[1.41421356+0.j         0.        +0.j        ]
 [0.        +2.12132034j 0.70710678+0.j        ]]
Verified value is:
 [[2.+0.j 0.-3.j]
 [0.+3.j 5.+0.j]]

Объяснение

В этом примере мы сначала создали массив numpy, который позже печатается. Затем мы вызвали значение numpy.linalg.cholesky() и распечатали его. Как обсуждалось выше, мы затем проверили свойство Холецкого, что L * LH = Array. 

Итак, мы видим, что проверенное значение совпадает с нашим исходным массивом numpy.

Нахождение значения Холецкого при вводе array_like или matrix

Вы можете найти значение Холецкого, когда входом является массив или матрица.

import numpy as np

# Declaring the first array
arr1 = np.array([[2, (-0-3j)], [3j, 5]])

print("Original array is :\n", arr1)

# Calculating and printing Cholesky value
L = np.linalg.cholesky(arr1)
print("Cholesky value1 is:\n", L)

M = np.linalg.cholesky(np.matrix(arr1))
print("Cholesky value2 is:\n", M)

# Verifying the output

v_val1 = np.dot(L, L.T.conj())
print("Verified value1 is:\n", v_val1)

v_val2 = np.dot(M, M.T.conj())
print("Verified value2 is:\n", v_val1)

Результат

Original array is :
 [[2.+0.j 0.-3.j]
 [0.+3.j 5.+0.j]]
Cholesky value1 is:
 [[1.41421356+0.j         0.        +0.j        ]
 [0.        +2.12132034j 0.70710678+0.j        ]]
Cholesky value2 is:
 [[1.41421356+0.j         0.        +0.j        ]
 [0.        +2.12132034j 0.70710678+0.j        ]]
Verified value1 is:
 [[2.+0.j 0.-3.j]
 [0.+3.j 5.+0.j]]
Verified value2 is:
 [[2.+0.j 0.-3.j]
 [0.+3.j 5.+0.j]]

Объяснение

В этом примере мы сначала создали массив, который позже печатается. 

Затем мы вычислили значение Холецкого, когда данный массив представляет собой объект, подобный массиву, и матрицу. Как обсуждалось выше, мы затем проверили свойство Холецкого, что L * LH = Array. 

Итак, мы видим, что проверенное значение совпадает с нашим исходным массивом numpy. Но здесь первый ans1 относится к типу объекта массива, а arr2 - к объекту матрицы типа, который был возвращен.

Источник:

#Python #Numpy
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить