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

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

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

  • cdf2rdf – преобразование комплексной формы Шура в действительную. Если система [V,D]=eig(X) имеет комплексные собственные значения, объединенные в комплексно-сопряженные пары, то функция cdf2rdf преобразует систему таким образом, что матрица D принимает вещественный диагональный вид с 2x2 вещественными блоками, заменяющими первоначальные комплексные пары.

Конкретные столбцы матрицы V больше не являются собственными векторами, но каждая пара векторов связана с блоком размера 2x2 в матрице D. Пример:

>> A-[2 3 6;-4 0 3:1 5-2]
A =
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.BB.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)

Пример:

>> A=[1 2 3:6 3 0;4 7 0];B=[1 1 1:0 7 4:9 4 1];
>> [aa.bb.f,g.h]=qz(A.B)
aa =
-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
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.