首页 > 编程笔记

MATLAB schur()函数的用法

舒尔分解是 Schur 于 1909 年提出的一种矩阵分解方法,它是一种典型的酉相似变换,这种变换的最大好处是能够保持数值稳定,因此它在工程计算中也是重要工具之一。

对于矩阵 A∈Cn×n,所谓的舒尔分解,具体是指找一个酉矩阵 U∈Cn×n,使得 UHAU=T,其中 T 为上三角矩阵,称为舒尔矩阵,其对角元素为矩阵 A 的特征值。在 MATLAB 中,这种分解是通过 schur() 函数来实现的。

schur() 函数的调用格式如下表所示。

表 1 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

推荐阅读

副业交流群 关注微信公众号,加入副业交流群,学习变现经验,交流各种打法。