linalg
:: factorQR
QR-разложение матрицы
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
linalg::factorQR(A
)
linalg::factorQR(A)
вычисляет QR-разложение m ×n матричный A, т.е. разложение A в m ×m унитарная матрица Q и m ×n верхняя треугольная матрица R, таким образом что Q R = A.
linalg::factorQR
использует ортонормализацию Грамма-Schmidt, чтобы вычислить разложение.
Для сингулярной или неквадратной матрицы A
QR-разложение A
не уникально.
Столбцы Q формируют ортонормированный базис относительно скалярного произведения двух векторов, заданных linalg::scalarProduct
и 2-нормой двух векторов (см. метод "norm"
доменного конструктора Dom::Matrix
).
Если звонок компонента A
не задает метод "conjugate"
, то факторный Q является ортогональным вместо унитарного.
Если столбцы A
не могут быть ортонормированы затем, FAIL
возвращен.
Если A
является матрицей по доменному Dom::Float
, и вычисления основаны на стандартном скалярном произведении, то использование соответствующей функции от числовой библиотеки (numeric::factorQR
) рекомендуется.
Даже если A
задан по действительному или комплексным числам вызов numeric::factorQR
с опцией, Symbolic
рекомендуется для лучшей эффективности.
Звонок компонента матричного A
должен быть полем, т.е. областью категории Cat::Field
.
Мы вычисляем QR-разложение действительной матрицы:
A := Dom::Matrix(Dom::Real)( [[2, -3, -1], [1, 1, -1], [0, 1, -1]] )
QR := linalg::factorQR(A)
Ортогональный матричный Q является первым элементом und верхняя треугольная матрица, R является вторым элементом списка QR
. Продукт этих двух матриц равен входной матрице A
:
QR[1] * QR[2]
QR-разложение 3×2 матрица:
B := Dom::Matrix(Dom::Real)( [[2, -3], [1, 2], [2, 3]] )
уступает 3×3 ортогональная матрица и 3×2 верхняя треугольная матрица:
QR := linalg::factorQR(B)
QR[1] * QR[2]
Для этого примера мы можем вызвать numeric::factorQR
(B, Symbolic)
вместо этого, который в целом быстрее, чем linalg::factorQR
:
QR := numeric::factorQR(B, Symbolic)
|
Матрица области категории |
Перечислите [Q, R]
этих двух матриц Q и R (того же доменного типа как A
), или значение FAIL
.
QR-разложение может использоваться, чтобы сгенерировать решение для наименьшего квадрата сверхрешительной системы линейных уравнений. Если, то может быть решен через обратную подстановку.