首页 > 编程笔记

MATLAB hess()函数的用法

在线性代数中,海森伯格矩阵(Hessenberg)是一种特殊的方阵。对于方阵 A,若 i>j+1 时,有 aij=0,则称方阵 A 是上海森伯格矩阵;若 i<j−1 时,有 aij=0,则称方阵 A 是下海森伯格矩阵。

海森伯格矩阵在零元素所占比例及分布上都接近三角矩阵,虽然它在特征值等性质方面不如三角矩阵那样简单,但在实际应用中,使用相似变换将一个矩阵化为海森伯格矩阵是可行的,而化为三角矩阵则不易实现,而且通过化为海森伯格矩阵来处理矩阵计算问题能够大大节省计算量,因此在工程计算中海森伯格分解也是常用的工具之一。

在 MATLAB 中,可以通过 hess() 函数得到矩阵的海森伯格形式。hess() 函数的调用格式及说明如下表所示。

表 1 hess() 函数调用格式及说明
调用格式 说 明
H = hess(A) 返回矩阵 A 的上海森伯格形式
[P, H] = hess(A) 返回一个上海森伯格矩阵 H 以及一个酉矩阵 P,满足:A=PHPT 且 PTP=I
[H,T,Q,U] = hess(A,B) 对于方阵 A、B,返回上海森伯格矩阵 H,三角矩阵 T 以及酉矩阵 Q、U,使得 QAU=H 且 QBU=T

【实例】将测试矩阵 A 化为海森伯格形式,并求出变换矩阵 P。
MATLAB 程序如下:
>> clear                       % 清除工作区的变量
>> A = gallery('randhess',4)   % 生成4×4随机正交上海森伯格矩阵A
A =
    0.3956    -0.7622     0.3578     0.3669
    0.9184     0.3283    -0.1541    -0.1580
         0     0.5580     0.5794     0.5941
         0          0    -0.7159     0.6982
>> [P,H]=hess(A)               % 将A进行海森伯格分解,返回上海森伯格矩阵H和酉矩阵P
P =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
H =
    0.3956    -0.7622     0.3578     0.3669
    0.9184     0.3283    -0.1541    -0.1580
         0     0.5580     0.5794     0.5941
         0          0    -0.7159     0.6982

推荐阅读

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