Python numpy.linalg.cholesky() используется для получения значения разложения Холецкого. Давайте разберемся, что такое разложение Холецкого. Если у нас есть L * LH, квадратной матрицы a, где L — нижний треугольник, а .H — сопряженный оператор транспонирования (который является обычным значением транспонирования), он должен быть эрмитовым (симметричным, если оно действительное значение) и четко определенным. Возвращается только L.
Разложение Холецкого иногда используется для получения быстрого результата:
Ax = b, где A является одновременно эрмитовым/симметричным и положительно определенным).
Во-первых, мы решаем для y
Ly = b,
а затем
L.Hx = у.
Синтаксис
|
1 |
numpy.linalg.cholesky(arr) |
Параметры
Функция np cholesky() принимает только один параметр: данный Hermitian (симметричный, если все элементы действительны), положительная определенная входная матрица.
Возвращаемое значение
Функция cholesky() возвращает верхний или нижний треугольный коэффициент Холецкого для a. Возвращает матричный объект, если a является матричным объектом. Если разложение не удается, данная матрица не является положительно определенной; эта функция возвращает ошибку LinAlgError.

Примеры программирования
- Нахождение значения Холецкого.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Finding Cholesky value 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) |
Вывод:
|
1 2 3 4 5 6 7 8 9 |
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.
- Нахождение значения Холецкого, когда вход представляет собой массив или матрицу.
Вы можете найти значение Холецкого, когда вход представляет собой массив или матрицу.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# Finding Cholesky value when input is an array_like or 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) |
Вывод:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 имеет тип объекта матрицы, который и был возвращен.
