И другие программы этой серии
К тому же используется ряд алгоритмов –
в зависимости от свойств исходной матрицы.
4.4.11. LU и QR разложение
Так называемые LU и QR разложения реализуются следующими матричными
функциями. Функция lu выражает любую квадратную матрицу X как произведе
ние двух треугольных матриц, одна из которых (возможно, с перестановками) –
нижняя треугольная матрица, а другая – верхняя треугольная матрица. Иногда
эту операцию называют LR разложением. Для выполнения этой операции служит
следующая функция:
• [L,U] = lu(X) возвращает верхнюю треугольную матрицу U и психологи
ческую нижнюю матрицу L (то есть произведение нижней треугольной
матрицы и матрицы перестановок), так что X=L*U;
• [L,U,P] = lu(X) возвращает верхнюю треугольную матрицу U, нижнюю
треугольную матрицу L и сопряженную (эрмитову) матрицу матрицы пере
становок P, так что L*U =P* X;
• lu(X) – вызванная с одним выходным параметром, функция возвращает
результат из подпрограмм DGETRF (для действительных матриц) или
ZGETRF (для комплексных) известного пакета программ линейной алгеб
ры LAPACK;
• lu(X, thresh), где thresh в диапазоне [0…1], управляет центрированием
в разреженных матрицах (см. урок 12). Отдельная форма предыдущего
случая. Центрирование происходит, если элемент столбца на диагонали
меньше, чем произведение thresh и любого поддиагонального элемента.
Thresh=1 – значение по умолчанию. Thresh=0 задает центрирование по
диагонали. Если матрица неразреженная, выводится сообщение об ошибке.
Пример:
>> f=[3,5,4;12,7,5;34,65,23]
f=
3
5
12
7
34
65
>> [d,h]=lu(f)
d=
0.0882
0.0461
0.3529
1.0000
1.0000
0
h=
34.0000
65.0000
0
-15.9412
0
0
>> d*h
ans =
3.0000
5.0000
qr функция выполняет QR разложение матрицы. Эта операция полезна для
квадратных и треугольных матриц. Она выполняет QR разложение, вычисляя
произведение унитарной матрицы и верхней треугольной матрицы. Функция ис
пользуется в следующих формах:
• [Q,R] = qr(X) вычисляет верхнюю треугольную матрицу R того же разме
ра, как и у X, и унитарную матрицу Q, так что X=Q*R;
• [Q,R,E] = qr(X) вычисляет матрицу перестановок E, верхнюю треуголь
ную матрицу R с убывающими по модулю диагональными элементами и
унитарную матрицу Q, так что X*E=Q*R.