注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

矩阵的拟上三角化(Hessenberg矩阵)  

2010-12-01 16:31:37|  分类: M&M |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

%实矩阵的拟上三角分解(Hessenberg分解)

%用法:[Q,B]=hess2(A)

%Q返回一个正交矩阵,B为相似于A的拟上三角矩阵

%注意:MATLAB自带了Hessenberg分解的函数hess(A)

%By Castor 2010-12-25

function [Q,B]=hess2(A)

    tic;

    n=max(size(A));   

    s=zeros(n,1);

    u=zeros(n,1);

    c=0;

    I=eye(n);

    H=zeros(n,n);

    Q=I;

    B=I;

    for r=1:n-2

        s=A(:,r);

        e=zeros(n,1);

        for t=1:r

            s(t,1)=0;

        end

        if s'*s==0  %所有分量全为零,取H=IB保持不变

            H=I;

        else

            if sign(A(r+1,r))==0

                c=sqrt(s'*s);

            else

                c=-sign(A(r+1,r))*sqrt(s'*s);

            end

            e(r+1,1)=1;

            u=s-c*e;

            H=I-2*u*u'/(u'*u);

        end

        B=H*A*H;

        A=B;

        Q=Q*H;

    end

    toc;

end

 测试矩阵的拟三角化:

>> A=[1 3 4;3 2 1;4 1 3]

A =

     1     3     4
     3     2     1
     4     1     3

>> [q,b]=hess2(A)
Elapsed time is 0.354213 seconds.

q =

    1.0000         0         0
         0   -0.6000   -0.8000
         0   -0.8000    0.6000


b =

    1.0000   -5.0000   -0.0000
   -5.0000    3.6000   -0.2000
   -0.0000   -0.2000    1.4000

>> I=q*q'

I =

    1.0000         0         0
         0    1.0000    0.0000
         0    0.0000    1.0000

>> q*A*q

ans =

    1.0000   -5.0000   -0.0000
   -5.0000    3.6000   -0.2000
   -0.0000   -0.2000    1.4000

 

如果使用MATLAB自带的函数hess:

>> [p,t]=hess(A)

p =

    0.2425   -0.9701         0
   -0.9701   -0.2425         0
         0         0    1.0000


t =

    0.5294    2.8824         0
    2.8824    2.4706   -4.1231
         0   -4.1231    3.0000

>> I=p*p'

I =

    1.0000    0.0000         0
    0.0000    1.0000         0
         0         0    1.0000

>> p*A*p

ans =

    0.5294    2.8824   -0.0000
    2.8824    2.4706   -4.1231
   -0.0000   -4.1231    3.0000

可见Hessenberg的转换不唯一,不同的HouseHolder矩阵将会产生不同的拟三对角矩阵

  评论这张
 
阅读(3451)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016