matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

5.3.3 原点位移反幂法的MATLAB程序

5.3.3  原点位移反幂法的MATLAB程序

 

(一) 原点位移反幂法的MATLAB主程序1

用原点位移反幂法计算矩阵的特征值和对应的特征向量的MATLAB主程序1

function [k,lambdan,Vk,Wc]=ydwyfmf(A,V0,jlamb,jd,max1)

[n,n]=size(A); A1=A-jlamb*eye(n); jd= jd*0.1;RA1=det(A1);

if RA1==0

disp('请注意:因为A-aE的n阶行列式hl等于零,所以A-aE不能进行LU分解.')

return

end

lambda=0;

if RA1~=0

       for p=1:n

h(p)=det(A1(1:p, 1:p));

end

hl=h(1:n);

for i=1:n

if h(1,i)==0

disp('请注意:因为A-aE的r阶主子式等于零,所以A-aE不能进行LU分解.')

return

end

end

       if h(1,i)~=0 

disp('请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.')

k=1;Wc =1;state=1; Vk=V0;

while((k<=max1)&(state==1))

[L U]=lu(A1); Yk=L\Vk;Vk=U\Yk; [m j]=max(abs(Vk));

mk=m;Vk1=Vk/mk; Yk1=L\Vk1;Vk1=U\Yk1;

[m j]=max(abs(Vk1)); mk1=m;Vk2=(1/mk1)*Vk1;tzw1=abs((mk-mk1)/mk1);

tzw2=abs(mk1-mk);Txw1=norm(Vk)-norm(Vk1);

Txw2=(norm(Vk)-norm(Vk1))/norm(Vk1);

Txw=min(Txw1,Txw2); tzw=min(tzw1,tzw2); Vk=Vk2;

mk=mk1; Wc=max(Txw,tzw); Vk=Vk2;mk=mk1;state=0;

if(Wc>jd)

state=1;

end

k=k+1;%Vk=Vk2,mk=mk1,

end

if(Wc<=jd)

disp('A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:') 

else

disp('A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k已经达到最大迭代次数max1,按模最小特征值的迭代值lambda,特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:')    

end

hl,RA1

end

end

[V,D]=eig(A,'nobalance'),Vk;k=k-1;Wc;lambdan=jlamb+1/mk1;

 

 

 

例5.3.2  用原点位移反幂法的迭代公式(5.28),根据给定的下列矩阵的特征值的初始值,计算与对应的特征向量的近似向量,精确到0.000 1.

(1),;(2);(3).

解 (1)输入MATLAB程序

>> A=[1 -1 0;-2 4 -2;0 -1 2];V0=[1,1,1]';

[k,lambda,Vk,Wc]=ydwyfmf(A,V0,0.2,0.0001,10000)

运行后屏幕显示结果

请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.

A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

k =    lambda =     Wc =             hl =

   3       0.2384     1.0213e-007    0.8000    1.0400    0.2720

Vk =          V =                         D =

  1.0000     -0.2424  -1.0000   -0.5707      5.1249        0         0

  0.7616     1.0000   -0.7616   0.3633           0    0.2384        0

  0.4323     -0.3200  -0.4323   1.0000            0        0    1.6367

(2)输入MATLAB程序

>> A=[1 -1;2 4];V0=[20,1]';

[k,lambda,Vk,Wc]=ydwyfmf(A,V0,2.001,0.0001,100)

运行后屏幕显示结果

请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.

A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

k =      lambda =      Wc =                hl =

  2            2.0020       5.1528e-007       -1.0010   -0.0010

Vk =                V =                         D =

    1.0000             -1.0000    0.5000            2     0

   -1.0000              1.0000   -1.0000             0     3

(3)输入MATLAB程序

>> A=[-11 2 15;2 58 3;15 3 -3];V0=[1,1,-1]';

[k,lambdan,Vk,Wc]=ydwyfmf(A,V0,8.26, 0.0001,100)

运行后屏幕显示结果

请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.

A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

k =      lambdan=        Wc =            hl =  

  2         8.2640         6.9304e-008    -19.2600 -961.9924   -6.1256

Vk =         V =                                  D =

   -0.7692     0.7928   0.6081  0.0416    -22.5249         0         0

    0.0912     0.0030  -0.0721  0.9974           0    8.2640         0

   -1.0000     -0.6095  0.7906  0.0590           0         0   58.2609

 

例 5.3.3  用原点位移反幂法的迭代公式(5.28),计算的分别对应于特征值的特征向量的近似向量,相邻迭代误差为0.001.将计算结果与精确特征向量比较.

解 (1)计算特征值对应的特征向量的近似向量.输入MATLAB程序

>> A=[0 11 -5;-2 17 -7;-4 26 -10];V0=[1,1,1]';

[k,lambda,Vk,Wc]= ydwyfmf(A,V0,1.001, 0.001,100),

[V,D]=eig(A);

Dzd=min(diag(D)), wuD= abs(Dzd- lambda),

VD=V(:,1),wuV=V(:,1)./Vk,

运行后屏幕显示结果

请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.

A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

hl =

  -1.00100000000000   5.98500100000000  -0.00299600100000

k =          lambda =                       RA1 =   

5    1.00200000000000         -0.00299600100000

Vk =                   VD =                   wuV =

  -0.50000000000000 -0.40824829046386    0.81649658092773

  -0.50000000000000 -0.40824829046386    0.81649658092773

  -1.00000000000000 -0.81649658092773    0.81649658092773

Wc =                       Dzd =              wuD =

 1.378794763695562e-009 1.00000000000000    0.00200000000000

从输出的结果可见,迭代5次,特征向量的近似向量的相邻两次迭代的误差Wc1.379 e-009,由wuV可以看出,= Vk与VD 的对应分量的比值相等.特征值的近似值lambda 1.002与初始值1.001的绝对误差为0.001,而与的绝对误差为0.002,其中

,

.

(2)计算特征值对应特征向量的近似向量.

输入MATLAB程序

 >> A=[0 11 -5;-2 17 -7;-4 26 -10];V0=[1,1,1]';

[k,lambda,Vk,Wc]=ydwyfmf(A,V0,2.001, 0.001,100) ,

[V,D]=eig(A); WD=lambda-D(2,2),VD=V(:,2),wuV=V(:,2)./Vk,

运行后屏幕显示结果

请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.

A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

hl =

  -2.00100000000000  -8.01299900000000   0.00200099900000

k =  Wc =                    lambda =           WD =  

 2     3.131363162302120e-007  2.00200000000016  0.00200000000016

Vk =                  VD =                 wuV =

 -0.24999999999999   0.21821789023599   -0.87287156094401

 -0.49999999999999    0.43643578047198   -0.87287156094398

  -1.00000000000000   0.87287156094397   -0.87287156094397

从输出的结果可见,迭代2次,特征向量的近似向量的相邻两次迭代的误差Wc3.131e-007,的对应分量的比值近似相等.特征值的近似值lambda2.002与初始值2.001的绝对误差约为0.001,而lambda与的绝对误差约为0.002,其中

,

.

(3)计算特征值对应特征向量的近似向量.输入MATLAB程序

 >> A=[0 11 -5;-2 17 -7;-4 26 -10];V0=[1,1,1]';

[k,lambda,Vk,Wc]=ydwyfmf(A,V0,4.001, 0.001,100)

[V,D]=eig(A); WD=lambda-max(diag(D)),VD=V(:,3),wuV=V(:,3)./Vk,

运行后屏幕显示结果

请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.

A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

hl =

-4.00100000000000   -30.00899900000000  -0.00600500099999

k =  lambda =             Wc =                     WD =

 2  4.00199999999990   1.996084182914842e-007   0.00199999999990

Vk =                    VD =                wuV =

  0.40000000000001 -0.32444284226153     -0.81110710565380

  0.60000000000001 -0.48666426339229     -0.81110710565381

  1.00000000000000 -0.81110710565381     -0.81110710565381

从输出的结果可见,迭代2次,特征向量的近似向量的相邻两次迭代的误差Wc1.996e-007,的对应分量的比值近似相等.特征值的近似值的绝对误差近似为,而lambda与的绝对误差约为0.002,其中

-0.400 000 000 000 00,-0.600 000 000 000 00,-1.000 000 000 000 00,

 .

 

(二)原点位移反幂法的MATLAB主程序2

用原点位移反幂法计算矩阵的特征值和对应的特征向量的MATLAB主程序2

function [k,lambdan,Vk,Wc]=wfmifa1(A,V0,jlamb,jd,max1)

[n,n]=size(A); jd= jd*0.1;A1=A-jlamb*eye(n);nA1=inv(A1);

lambda1=0;k=1;Wc =1;state=1; U=V0;

while((k<=max1)&(state==1))

Vk=A1\U; [m j]=max(abs(Vk)); mk=m; Vk=(1/mk)*Vk; Vk1=A1\Vk;

    [m1 j]=max(abs(Vk1)); mk1=m1,Vk1=(1/mk1)*Vk1;U=Vk1,

Txw=(norm(Vk1)-norm(Vk))/norm(Vk1);

tzw=abs((lambda1-mk1)/mk1);

Wc=max(Txw,tzw); lambda1=mk1;state=0;

if(Wc>jd)

state=1;

end

k=k+1;

end

if(Wc<=jd)

 disp('请注意迭代次数k,特征值的近似值lambda,对应的特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:') 

else

disp('请注意迭代次数k已经达到最大迭代次数max1, 特征值的近似值lambda,对应的特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:')    

end

[V,D] =eig(A,'nobalance'), Vk=U;k=k-1;Wc;lambdan=jlamb+1/mk;

 

例5.3.4  用原点位移反幂法的迭代公式(5.27),计算例题5.3.3,并且将这两个例题的计算结果进行比较.再用两种原点位移反幂法的MATLAB主程序,求对应的特征向量.

解 (1)计算特征值对应特征向量的近似向量.

输入MATLAB程序

>> A=[0 11 -5;-2 17 -7;-4 26 -10];V0=[1,1,1]';

[k,lambda,Vk,Wc]=wfmifa1(A,V0,1.001,0.001,100)

运行后屏幕显示结果

请注意迭代次数k,特征值的近似值lambda,对应的特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

k =   lambda =              Wc =

5    1.00200000000138     1.376344154436924e-006

Vk’ =  -0.50000000000000  -0.50000000000000  -1.00000000000000

同理可得,另外与两个特征值对应的特征向量.

(2)再用两种原点位移反幂法的MATLAB主程序,求对应的特征向量.输入MATLAB程序

>>  A=[0 11 -5;-2 17 -7;-4 26 -10];V0=[1,1,1]';

[k,lambda,Vk,Wc]=ydwyfmf(A,V0,0.99999999999997,0.001,100)

运行后屏幕显示结果

请注意:因为A-aE的各阶主子式都不等于零,所以A-aE能进行LU分解.

A-aE的秩R(A-aE)和各阶顺序主子式值hl、迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

hl =

  -0.99999999999997   6.00000000000045   0.00000000000010

文本框: Vk =
   0.50000000000000
   0.50000000000000
   1.00000000000000
Wc =
    4.317692037236759e-013
RA1 =

    1.039168751049192e-013

k =

     2

lambda =

      1.00000000000000

 

输入MATLAB程序

>>  A=[0 11 -5;-2 17 -7;-4 26 -10];V0=[1,1,1]';

[k,lambda,Vk,Wc]=wfmifa1(A,V0, 0.99999999999997,0.001,100)

运行后屏幕显示结果

文本框: Vk =
   0.50000000000000
   0.50000000000000
   1.00000000000000
请注意迭代次数k,特征值的近似值lambda,对应的特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:

k =

     3

lambda =

   1.00000000000000

Wc =

    5.412337245047640e-016

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3050303.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1