{AA,BB,Q,Z,V} = qz(A,B)
Matrix AA,BB,Q,Z,V;
Matrix A,B;
【詳細】
qz() は,一般化固有値の計算で使われる。正方行列 A と B に対して,
{AA,BB,Q,Z,V} = qz(A,B) は,上三角行列 AA と BB,左変換のための
行列 Q,右変換のための行列 Z,一般化固有ベクトルからなる行列 V
を求める。これらの行列の間には,
A = Q * AA * Z
B = Q * BB * Z
A * V * diag_vec(BB) = B * V * diag_vec(AA)
Q# * Q = I
Z# * Z = I
の関係がある。
【算法】
Eispackの qzhes, qzit, qzval, qzvec を使用する。
【例題】
>> A = [[1 2][6 5]]; B = [[3 4][2 1]];
>> {AA, BB, Q, zz, X} = qz(A, B);
>> Q# * A * zz - AA
=== [ans] : ( 2, 2) ===
( 1) ( 2)
( 1) -6.66133815E-16 0.00000000E+00
( 2) -1.72388145E-16 0.00000000E+00
>> Q# * B * zz - BB
=== [ans] : ( 2, 2) ===
( 1) ( 2)
( 1) -1.22124533E-15 1.33226763E-15
( 2) -2.64545330E-17 8.88178420E-16
>> A * V * diag_vec(BB) - B * V * diag_vec(AA)
=== [ans] : ( 2, 1) ===
[ ( 1)-Real ( 1)-Imag ]
( 1) -2.66453526E-15 0.00000000E+00
( 2) 4.44089210E-15 0.00000000E+00
【参照】