现在时间是:
当前位置:首 页 >> 矩阵计算>> 教学区>> 文章列表

矩阵计算上级作业9 王者

作者:王者   发布时间:2015-06-09 17:51:34   浏览次数:131

 

程序代码:

function [v,B]=house1(x)
n=length(x);
N=norm(x,inf);
x=x/N;
p=x(2:n)'*x(2:n);
v=zeros(n,1);
v(1)=1;
v(2:n)=x(2:n);
if p==0
    B=0;
else
    a=sqrt(x(1)*x(1)+p);
    if x(1)<=0
        v(1)=x(1)-a;
    else
    v(1)=-p/(x(1)+a);
    end
    B=2*v(1)*v(1)/(p+v(1)*v(1));
    v=v/v(1);
end

运行结果:
clear all
format short
x=[0 3 4]';
[v,B]=house1(x)
n=length(x);
I=eye(n);
w=B*x'*v;
Hx=x-v*w'
H=I-B*v*v'
A=eye(6);
A([2,5,6],[2,5,6])=H
%A(2,2)=H(1,1);
%A(2,5)=H(1,2);
%A(2,6)=H(1,3);
%A(5,2)=H(2,1);
%A(5,5)=H(2,2);
%A(5,6)=H(2,3);
%A(6,2)=H(3,1);
%A(6,5)=H(3,2);
%A(6,6)=H(3,3)
x1=[1 0 4 6 3 4]';
A*x1

上机运行结果:

v =

    1.0000
   -0.6000
   -0.8000


B =

     1


Hx =

     5
     0
     0


H =

         0    0.6000    0.8000
    0.6000    0.6400   -0.4800
    0.8000   -0.4800    0.3600


A =

    1.0000         0         0         0         0         0
         0         0         0         0    0.6000    0.8000
         0         0    1.0000         0         0         0
         0         0         0    1.0000         0         0
         0    0.6000         0         0    0.6400   -0.4800
         0    0.8000         0         0   -0.4800    0.3600


ans =

    1.0000
    5.0000
    4.0000
    6.0000
         0
   -0.0000

程序代码:function [G]=givens(x)
n=length(x);
for i=1:n
    for j=1:n
        if i==j
            G(i,j)=1;
        else  G(i,j)=0;
    end
    end
end
        for i=n-1:-1:1
            if x(i+1,1)==0
                continue;
            else if abs(x(i+1,1))>abs(x(i,1))
        t=x(i,1)/x(i+1,1);
        s=1/sqrt(1+t*t);
        c=s*t;
          
    else
        t=x(i+1,1)/x(i,1);
        c=1/sqrt(1+t*t);
        s=c*t;
    end
            end    
    x(i,1)=c*x(i,1)+s*x(i+1,1);
    x(i+1,1)=0;
    for j=1:n
        a=G(i,j);b=G(i+1,j);
        G(i,j)=c*a+s*b;
        G(i+1,j)=c*b-s*a;
    end  
        end
end

运行结果:

n=10
G=zeros(n,n);
A=rand(n,1);
B=rand(n,1);
x=A/norm(A)
E=norm(x,2)
y=B/norm(B);
[G]=givens(x)
e=G*x

n =

    10


x =

    0.1715
    0.1600
    0.5436
    0.1459
    0.5055
    0.5705
    0.1456
    0.1503
    0.0312
    0.0492


E =

    1.0000


G =

  Columns 1 through 6

    0.1715    0.1600    0.5436    0.1459    0.5055    0.5705
   -0.9852    0.0279    0.0946    0.0254    0.0880    0.0993
         0   -0.9867    0.0908    0.0244    0.0844    0.0953
         0         0   -0.8290    0.1013    0.3508    0.3959
         0         0         0   -0.9835    0.1155    0.1303
         0         0         0         0   -0.7702    0.5960
         0         0         0         0         0   -0.3559
         0         0         0         0         0         0
         0         0         0         0         0         0
         0         0         0         0         0         0

  Columns 7 through 10

    0.1456    0.1503    0.0312    0.0492
    0.0254    0.0262    0.0054    0.0086
    0.0243    0.0251    0.0052    0.0082
    0.1011    0.1043    0.0217    0.0342
    0.0333    0.0343    0.0071    0.0112
    0.1522    0.1570    0.0326    0.0514
    0.6265    0.6465    0.1344    0.2118
   -0.7420    0.6250    0.1299    0.2047
         0   -0.3617    0.4996    0.7871
         0         0   -0.8443    0.5359


e =

    1.0000
   -0.0000
   -0.0000
   -0.0000
   -0.0000
   -0.0000
   -0.0000
   -0.0000
    0.0000
         0

 

 







上一篇:没有了    下一篇:没有了

Copyright ©2019    计算数学达人 All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 |燕窝 版权所有 © 2005-2019 lingw.net.粤ICP备16125321号 -5