在MATLAB中,QZ分解可由函数qz来实现。qz函数常用的语法格式如下。
[AA,BB,Q,Z,V] = qz(A,B):要求矩阵A和B是方阵。产生的矩阵AA和BB是上三角矩阵,Q和Z是正交矩阵,矩阵V是特征向量矩阵。其中,满足Q*A*Z = AA与Q*B*Z = BB。
[AA,BB,Q,Z,V] = qz(A,B,flag):对于方阵A,B的QZ分解,取决于参数flag。参数flag可取'complex'与'real'。其中,'complex'表示复分解,产生三角矩阵AA,'real'表示实分解,产生三角矩阵AA。
在命令窗口中输入
code.matlab
>> a=[1 2 0;2 5 -1;4 10 -1];
>> x=[1 3 4;2,6,5;3 2,4];
>> [b,c,e,z,v]=qz(a,x)
b =
-0.1783 + 0.0000i -1.4551 + 0.4813i -3.0105 + 0.2715i
0 5.6957 - 1.6531i 10.1589 - 1.1010i
0 0 0.9081 + 0.2636i
c =
2.7199 -7.4009 + 0.2393i -2.2295 + 1.2686i
0 6.9587 0.4560 - 1.1530i
0 0 1.1095
e =
-0.5730 - 0.0018i -0.7935 - 0.0026i 0.2051 + 0.0007i
0.0758 - 0.0217i 0.1978 + 0.0143i 0.9769 - 0.0053i
-0.8158 + 0.0013i 0.5753 + 0.0057i -0.0531 + 0.0255i
z =
0.8670 - 0.0028i 0.4652 - 0.0196i 0.1583 - 0.0804i
-0.3824 + 0.0012i 0.4177 - 0.1304i 0.8099 - 0.0801i
-0.3196 + 0.0010i 0.7624 + 0.1027i -0.5396 - 0.1223i
v =
0.9968 - 0.0032i 0.9510 - 0.0490i 0.0519 - 0.9481i
-0.4397 + 0.0014i -0.1409 - 0.0406i 0.0400 + 0.1407i
-0.3674 + 0.0012i 0.0671 + 0.0607i -0.0603 - 0.0671i