Приведение матриц к форме Шура и Хессенберга
Ниже приводятся функции, обеспечивающие приведение матриц к специальным формам Шура и Хессенберга:
cdf2rdf — преобразование комплексной формы Шура в действительную. Если система [V,D]=eig(X) имеет комплексные собственные значения, объединенные в комплексно-сопряженные пары, то функция cdf2rdf преобразует систему таким образом, что матрица D принимает вещественный диагональный вид с 2x2 вещественными блоками, заменяющими первоначальные комплексные пары.
Конкретные столбцы матрицы V больше не являются собственными векторами, но каждая пара векторов связана с блоком размера 2x2 в матрице D. Пример:
» А-[2 3 6;-4 0 3:1 5 -2]
А =
2 3 6
-4 0 3
1 5 -2
| |||||||||||
» |
[S.D]=eig(A) | ||||||||||
S |
= | ||||||||||
0.7081 + 0.32961 |
0.7081 - 0.32961 |
-0.3355 | |||||||||
-0.3456 + 0.36881 |
-0.3456 - 0.36881 |
-0.5721 | |||||||||
0.0837 + 0.35711 |
0.0837 - 0.35711 |
0.7484 | |||||||||
D |
= | ||||||||||
3.1351 + 4.06031 |
0 |
0 | |||||||||
0 |
3.1351 - 4.06031 |
0 | |||||||||
0 |
0 |
-6.2702 | |||||||||
» |
[S.D]=cdf2rdf(S.D) | ||||||||||
S |
= | ||||||||||
0.7081 0.3296 |
-0.3355 | ||||||||||
-0.3456 0.3688 |
-0.5721 | ||||||||||
0.0837 0.3571 |
0.7484 | ||||||||||
D |
= | ||||||||||
3.1351 4.0603 |
0 | ||||||||||
-4.0603 3.1351 |
0 | ||||||||||
0 0 |
-6.2702 | ||||||||||
Функция qz обеспечивает приведение пары матриц к обобщенной форме Шура:
[AA.8B.Q.Z.V] = qz(A.B) — возвращает, возможно, комплексные верхние треугольные матрицы АА и ВВ и соответствующие матрицы приведения Q и
I,
такие что Q*A*Z=AA и Q*B*Z=BB. Функция также возвращает матрицу обобщенных собственных векторов V.
Обобщенные собственные значения могут быть найдены из следующего условия:
A*V*diag(BB) = B*V*diag(AA)
Пример:
» А=[1 2 3:6 3 0;4 7 0];В=[1 1 1:0 7 4:9 4 1];
» [aa.bb.f,g.h]=qz(A.B)
аа =
-2.9395 0.4775 0.8751
0 9.5462 3.5985
0 0 3.2073
bb=
5.5356 |
3.5345 |
-2.2935 |
||
0 |
8.4826 |
6.7128 |
||
0 |
0 |
0.7667 |
||
-0.0367 |
0.7327 |
-0.6796 |
||
-0.1052 |
-0.6791 |
-0.7265 |
||
-0.9938 |
0.0448 |
0.1020 |
||
0.6867 -0.6343 -0.3552
-0.1877 0.3174 -0.9295
h =
-1.0000 -0.4874 -0.0561
0.9778 -1.0000 0.6238
-0.2673 0.4340 -1.0000
Функция qz(A,B,' real') при заданных матрицах А и В возвращает действительные треугольную матрицу ВВ и квазитреугольную матрицу АА с 2x2 диагональными блоками, соответствующими парам сопряженных комплексных значений. Так как матрица АА квазитреугольная, то необходимо решить проблемы обобщения 2x2 для получения подлинных собственных значений.
Пример:
» А=[1 2 3:6 3 0:4 7 0];В=[1 1 1:0 7 4;9 4 1];
» [aa.bb.f,g.h]=qz(A.B,'real')
аа =
-2.9395 0.4775 0.8751
0 9.5462 3.5985
0 0 3.2073
bb =
5.5356 3.5345 -2.2935
0 8.4826 6.7128
0 0 0.7667
f =
-0.0367 0.7327 -0.6796
-0.1052 -0.6791 -0.7265
-0.9938 0.0448 0.1020
g=
-0.7023 -0.7050 -0.0989
0.6867 -0.6343 -0.3552
-0.1877 0.3174 -0.9295
h =
-1.0000 -0.4874 -0.0561
0.9778 -1.0000 0.6238
-0.2673 0.4340 -1.0000
Т = schur(A) — возвращает матрицу Шура Т.
[U.T] = schur(A) — возвращает матрицу Шура Т и унитарную матрицу U, такие что A=U Т U и U' и=еуе(51ге(А))(единичная матрица размера А);
[U,T] = rsf2csf(u.t)[
В MATLAB 6 в функции schur, если ее входной аргумент — действительная матрица, может использоваться новый параметр 'complex' (schur,'complex'), позволяющий получить комплексную форму Шура без использования функции преобразования rsf2csf. — Примеч. ред.
] — преобразование результатов предыдущей функции (действительной формы Шура) в комплексную форму Шура может использоваться только после вызова [u,t] = schur(A) Комплексная форма Шура — это верхняя треугольная матрица со всеми собственными значениями на диагонали. Действительная форма Шура имеет действительные собственные значения на диагонали, а комплексные собственные значения содержатся в 2x2 блоках, расположенных вдоль диагонали. И входные, и выходные матрицы U, u и Т, tпредставляют собой соответственно унитарные матрицы и матрицы Шура исходной матрицы А, которая удовлетворяет условиям A=UTU' и U' U=eye( si ze(A));
Н = hess(A) — находит Н, верхнюю форму Хессенберга для матрицы А;
[Р.Н] = hess(A) — возвращает матрицу Хессенберга Н и унитарную матрицу
преобразований Р, такую что А=Р*Н*Р' и P'*P=eye(s1ze(A)).
Элементы матрицы Хессенберга, расположенные ниже первой поддиагонали, равны нулю. Если матрица симметричная или эрмитова, то матрица Хессенберга вырождается в трехдиагональную. Эта матрица имеет те же собственные значения, что и оригинал, но для их вычисления необходимо меньшее количество операций. Пример:
» f=magic(4)
f =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
» hess(f)
ans=
16.0000 -8.0577 8.8958 6.1595
-11.0454 24.2131 -8.1984 2.1241
0 -13.5058 -4.3894 -7.8918
0 0 3.2744 -1.8237