Иллюстрированный самоучитель по Matlab

         

Приведение матриц к форме Шура и Хессенберга


Ниже приводятся функции, обеспечивающие приведение матриц к специальным формам Шура и Хессенберга:

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.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

Функция 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


Содержание раздела