NumPy: вычислить QR-разложение данной матрицы
NumPy: линейная алгебра Упражнение-13 с решением
Напишите программу NumPy для расчета QR-разложения данной матрицы.
Из Википедии: В линейной алгебре QR-разложение (также называемое QR-факторизацией) матрицы - это разложение матрицы A на произведение A = QR ортогональной матрицы Q и верхней треугольной матрицы R. Часто используется QR-разложение. для решения линейной задачи наименьших квадратов и является основой для конкретного алгоритма собственных значений, алгоритма QR.
Квадратная матрица
Любая вещественная квадратная матрица A может быть разложена как
где Q - ортогональная матрица (ее столбцы - ортогональные единичные векторы, означающие {/ displaystyle Q ^ {/екстf {T}} Q = QQ ^ {/ textf {T}} = I} {/ displaystyle Q ^ {/ textf {T }} Q = QQ ^ {/ textf {T}} = I}), а R - верхняя треугольная матрица (также называемая прямоугольной прямоугольной матрицей). Если A обратимо, то факторизация уникальна, если мы требуем, чтобы диагональные элементы R были положительными.
Если вместо этого A является сложной квадратной матрицей, то существует декомпозиция A = QR, где Q - унитарная матрица (поэтому {/ displaystyle Q ^ {*} Q = QQ ^ {*} = I} {/ displaystyle Q ^ {* } Q = QQ ^ {*} = I}).
Если A имеет n линейно независимых столбцов, то первые n столбцов Q образуют ортонормированный базис для пространства столбцов A. В более общем случае, первые k столбцов Q образуют ортонормированный базис для диапазона первых k столбцов A для любой 1 ≤ k ≤ n. [1] Тот факт, что любой столбец k из A зависит только от первых k столбцов из Q, отвечает за треугольную форму R. [1]
Пример решения :
Код Python:
import numpy as np
m = np.array([[1,2],[3,4]])
print("Original matrix:")
print(m)
result = np.linalg.qr(m)
print("Decomposition of the said matrix:")
print(result)
Пример вывода:
Исходная матрица: [[1 2] [3 4]] Разложение указанной матрицы: (массив ([[- 0.31622777, -0,9486833], [-0,9486833, 0,31622777]]), массив ([[- 3,16227766, -4,42718872], [0., -0.63245553]]))
Редактор кода Python:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите программу NumPy, рассчитывающую обратную матрицу.
Далее: Написать программу NumPy для вычисления номера условия данной матрицы.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования