LU- и QR-разложения
Так называемые LU- и QR-разложения реализуются следующими матричными функциями:
Функция lu выражает любую квадратную матрицу X как произведение двух треугольных матриц, одна из которых (возможно, с перестановками) – нижняя треугольная матрица, а другая – верхняя треугольная матрица [В MATLAB 6 аргументом (входным аргументом) функции lu может быть и полная прямоугольная матрица. – Примеч. ред.]. Иногда эту операцию называют LR-разложением. Для выполнения этой операции служит следующая функция:
- [L,U] = lu(X) – возвращает верхнюю треугольную матрицу U и психологическую нижнюю матрицу L (т. е. произведение нижней треугольной матрицы и матрицы перестановок), так что X=L*U;
- [L,U,P.] = lu(X) – возвращает верхнюю треугольную матрицу U, нижнюю треугольную матрицу L и сопряженную (эрмитову) матрицу матрицы перестановок Р, так что L*U =Р*Х;
- lu(Х) – вызванная с одним выходным параметром функция возвращает результат из подпрограмм DGETRF (для действительных матриц) или ZGETRF (для комплексных) известного пакета программ линейной алгебры LAPACK.
- lu(X, thresh) – где thresh в диапазоне [0…1] управляет центрированием в разреженных матрицах (см. урок 12). Отдельная форма предыдущего случая. Центрирование происходит, если элемент столбца на диагонали меньше, чем произведение thresh и любого поддиагонального элемента. Thresh=1 – значение по умолчанию. Thresh=0 задает центрирование по диагонали. Если матрица полная (не разреженная), выводится сообщение об ошибке.
Функция qr выполняет QR-разложение матрицы. Эта операция полезна для квадратных и треугольных матриц. Она выполняет QR-разложение, вычисляя произведение унитарной [Квадратная матрица с комплексными элементами, обладающая тем свойством, что обратная матрица ее комплексно сопряженной матрицы равна транспонированной, т. е. (А*)''-А'. – Примеч. ред. ] матрицы и верхней треугольной матрицы. Функция используется в следующих формах: [ Квадратная матрица с комплексными элементами, обладающая тем свойством, что обратная матрица ее комплексно сопряженной матрицы равна транспонированной, т. е. (А*)''-А'. – Примеч. ред.]
- [Q.R] = qr(X) – вычисляет верхнюю треугольную матрицу R того же размера, как и у X, и унитарную матрицу Q, так что X=Q*R;
- [Q.R.E] = qr(X) – вычисляет матрицу перестановок Е, верхнюю треугольную матрицу R с убывающими по модулю диагональными элементами и унитарную матрицу Q, так что X*E=Q*R. Матрица перестановок Е выбрана так, что abs(diag(R)) уменьшается;
- [Q.R] = qr(X.O) и [Q.R.E] = qr(X,0) – вычисляют экономное разложение, в котором Е – вектор перестановок, так что Q*R=X(:,Е). Матрица Е выбрана так, что abs(diag(R)) уменьшается;
- А = qr(X) – возвращает результат из LAPACK. Пример:
>
>
C
=
rand(
5.4
)
C
=
0.8381
0.5028
0.1934
0.6979
0.0196
0.7095
0.6822
0.3784
0.6813
0.4289
0.3028
0.8600
0.3795
0.3046
0.5417
0.8537
0.8318
0.1897
0.1509
0.5936
>
>
[Q.R]
=
qr(C)
Q
=
-
0.5922
-
0.11140.5197
0.0743
-
0.6011
-
0.0139
-
0.9278
-
0.0011
-
0.34480.1420
-
0.4814
-
0.11730.0699
0.5940
0.6299
-
0.2681
-
0.1525
-
0.82680.2632
-
0.3898
-
0.58770.2997
-
0.2036
-
0.67340.2643
R
=
-
1.4152
-
0.7072
-
0.5037
-
1.4103
0
-
0.7541
-
0.7274
-
0.4819
0
0
-
0.3577
-
0.4043
0
0
0
0.2573
0
0
0
0
- [Q,R] = qrdelete(Q,R, j) – изменяет Q и RTaKHM образом, чтобы пересчитать QR-разложение матрицы А для случая, когда в ней удален j-й столбец (А(:, j)=[ ]). Входные значения Q и R представляют QR-разложение матрицы А как результат действия [Q. R]=qr(A)..Аргумент j определяет столбец, который должен быть удален из матрицы А.
Примеры:
>
>
C
=
rand(
3.3
)
C
=
0.0164
0.0576
0.7176
0.1901
0.3676
0.6927
0.5869
0.6315
0.0841
>
>
[Q.R]
=
qr(C)
Q
=
-
0.0265
-
0.2416
-
0.9700
-
0.3080
-
0.92120.2378
-
0.95100.3051
-
0.0500
R
=
-
0.6171
-
0.7153
-
0.3123
0
-
0.1599
-
0.7858
0
0
-
0.5356
>
>
[Q1.R1]
=
qrdelete(Q.R.
2
)
Q1
=
-
0.02650.7459
0.6655
-
0.30800.6272
-
0.7153
-
0.9510
-
0.22390.2131
R1
=
-
0.6171
-
0.3123
0
0.9510
0
0
- [Q.R] = qrinsert(Q,R,j,x) – изменяет Q и R таким образом, чтобы пересчитать разложение матрицы А для случая, когда в матрице А перед j-м столбцом вставлен столбец х. Входные значения Q и R представляют QR-разложение матрицы А как результат действия [Q,R]=qr(A). Аргумент х – вектор-столбец, который нужно вставить в матрицу А. Аргумент j определяет столбец, перед которым будет вставлен вектор х.
Примеры:
>
>
C
=
rand(
3.3
)
C
=
0.1210
0.8928
0.8656
0.4508
0.2731
0.2324
0.7159
0.2548
0.8049
>
>
[Q,R]
-
qr(c)
Q
=
-
0.14160.9835
0.1126
-
0.52750.0213
-
0.8493
-
0.8377
-
0.17970.5157
R
=
-
0.8546
-
0.4839
-
0.9194
0
0.8381
0.7116
0
0
0.3152
>
>
x
=
[
0.5
.
-
0.3.0.2
];[Q2.R2]
=
qrinsert(Q.R.
2
,x')
Q2
=
-
0.14160.7995
-
0.5838
-
0.5275
-
0.5600
-
0.6389
-
0.83770.2174
0.5010
R2
=
-
0.8546
-
0.0801
-
0.4839
-
0.9194
0
0.6112
0.6163
0.7369
0
0
-
0.5681
-
0.2505