MATLAB schur()函数的用法
舒尔分解是 Schur 于 1909 年提出的一种矩阵分解方法,它是一种典型的酉相似变换,这种变换的最大好处是能够保持数值稳定,因此它在工程计算中也是重要工具之一。
对于矩阵 A∈Cn×n,所谓的舒尔分解,具体是指找一个酉矩阵 U∈Cn×n,使得 UHAU=T,其中 T 为上三角矩阵,称为舒尔矩阵,其对角元素为矩阵 A 的特征值。在 MATLAB 中,这种分解是通过 schur() 函数来实现的。
schur() 函数的调用格式如下表所示。
【实例】求下列矩阵的舒尔分解。
MATLAB 程序如下:
下面,利用这两种方法求上例中矩阵 A 的舒尔分解:
对于矩阵 A∈Cn×n,所谓的舒尔分解,具体是指找一个酉矩阵 U∈Cn×n,使得 UHAU=T,其中 T 为上三角矩阵,称为舒尔矩阵,其对角元素为矩阵 A 的特征值。在 MATLAB 中,这种分解是通过 schur() 函数来实现的。
schur() 函数的调用格式如下表所示。
| 调用格式 | 说明 |
|---|---|
| T = schur(A) | 返回舒尔矩阵 T,若 A 有复特征值,则相应的对角元素以 2x2 的块矩阵形式给出 |
| T = schur(A,flag) | 若 A 有复特征值,则 flag='complex',否则 flag='real' |
| [U,T] = schur(A,…) | 返回酉矩阵 U 和舒尔矩阵 T |
【实例】求下列矩阵的舒尔分解。
MATLAB 程序如下:
>> clear % 清除工作区的变量
>> A=[1 2 3 4;2 5 7 8;3 7 6 9;4 8 9 1]; % 创建矩阵A
>> [U,T]=schur(A) % 对矩阵A进行舒尔分解,返回酉矩阵U和舒尔矩阵T
U =
-0.2080 0.3018 -0.8974 0.2456
-0.3165 0.6413 0.4380 0.5448
-0.3712 -0.7055 0.0140 0.6036
0.8478 0.0045 -0.0506 0.5278
T =
-6.9077 0 0 0
0 -1.7036 0 0
0 0 0.2024 0
0 0 0 21.4089
>> lambda=eig(A) % 求A的特征值,返回一个包含 A 的特征值的列向量
lambda =
-6.9077
-1.7036
0.2024
21.4089
对于有复特征值的矩阵,可以利用 [U,T]=schur(A,'copmlex') 求其舒尔分解,也可利用 rsf2csf 命令将上例中的U、T转化为复矩阵。下面,利用这两种方法求上例中矩阵 A 的舒尔分解:
>> clear % 清除工作区的变量
>> A=[1 2 3 4;2 5 7 8;3 7 6 9;4 8 9 1]; % 输入矩阵A
>> [U,T]=schur(A,'complex')
% 求实矩阵A的舒尔分解,返回酉矩阵U和舒尔矩阵T,T 是三角复矩阵,且具有复数特征值
U =
-0.2080 0.3018 -0.8974 0.2456
-0.3165 0.6413 0.4380 0.5448
-0.3712 -0.7055 0.0140 0.6036
0.8478 0.0045 -0.0506 0.5278
T =
-6.9077 0 0 0
0 -1.7036 0 0
0 0 0.2024 0
0 0 0 21.4089
>> [U,T]=schur(A); % 求实矩阵A的舒尔分解,返回酉矩阵U和舒尔矩阵T
>> [U,T]=rsf2csf(U,T) % 将实数 Schur 形式转换为复数 Schur 形式
U =
-0.2080 0.3018 -0.8974 0.2456
-0.3165 0.6413 0.4380 0.5448
-0.3712 -0.7055 0.0140 0.6036
0.8478 0.0045 -0.0506 0.5278
T =
-6.9077 0 0 0
0 -1.7036 0 0
0 0 0.2024 0
0 0 0 21.4089
ICP备案:
公安联网备案: