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

Numpy linalg.qr(): Пример использования

Функция np.linalg.qr() вычисляет qr-факторизацию матрицы. Разложите матрицу на множители как  qr, где  q - ортонормировано, а  r - верхнетреугольное.

Синтаксис

numpy.linalg.qr(matrix, mode)

Параметры

Функция linalg.qr() принимает два основных параметра:

matrix: это матрица размера MxN, qr факторизация которой должна быть найдена. 

Mode: Всего существует 4 типа режима, а именно:

  1. reduced
  2. complete
  3. r
  4. raw

Если K = min (M, N), то

  1. 'reduced': возвращает q, r с размерами (M, K), (K, N) (по умолчанию)
  2. 'complete': возвращает q, r с размерами (M, M), (M, N)
  3. 'r': возвращает r только с размерами (K, N)
  4. 'raw': возвращает h, tau с размерами (N, M), (K,)

Опции reduced, complete и raw появились только в numpy 1.8. По умолчанию используется reduced, и для сохранения обратной совместимости с более ранними версиями numpy, как его, так и старое значение по умолчанию «full» можно опустить.

Обратите внимание, что массив h, возвращенный в режиме raw, транспонируется для вызова Фортрана.

economic режим не рекомендуется.

Режимы full и economic могут передаваться с использованием только первой буквы для обратной совместимости, но все остальные должны быть прописаны.

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

Функция qr() возвращает матрицу ndarray, float или сложный тип.

Эта функция также возвращает матрицу ортонормированного типа, когда mode = complete, результатом является ортогональная / унитарная матрица в зависимости от того, является ли действительным / комплексным. В этом случае определитель может быть +/- 1.

Программа для демонстрации работы qr(), когда q ортонормировано.

import numpy as np

# Declaring the first array
arr1 = np.array([[0, 1], [1, 1], [1, 1], [2, 1]])
print("Original array is :\n", arr1)
b = np.array([1, 0, 2, 1])
# Calculating qr
(q, r) = np.linalg.qr(arr1)
print("Value of q :", q)
print("Value of r :", r)

# Validating
p = np.dot(q.T, b)
print(np.dot(np.linalg.inv(r), p))

Результат

Original array is :
 [[0 1]
 [1 1]
 [1 1]
 [2 1]]
Value of q : [[ 0.          0.8660254 ]
 [-0.40824829  0.28867513]
 [-0.40824829  0.28867513]
 [-0.81649658 -0.28867513]]
Value of r : [[-2.44948974 -1.63299316]
 [ 0.          1.15470054]]
[6.66133815e-16 1.00000000e+00]

Объяснение

В этом примере мы объявили 2D-массив, значение qr которого найдено, и проверили его.

Согласно правилу, если A = qr такое, что q ортонормировано (что всегда возможно по Граму-Шмидту), то x = inv (r) * (qT) * b. 

Мы, согласно правилу, также объявили один массив «b», и для проверки мы следовали данному уравнению.

Источник:

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

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

В этом месте могла бы быть ваша реклама

Разместить рекламу