
第三篇 第五章 矩阵的特征值与特征向量的 MATLAB 程序
5.2 幂法及其 MATLAB 程序
5.2.2 幂法的 MATLAB 程序
用幂法计算矩阵 的主特征值和对应的特征向量的 MATLAB 主程序
function [k,lambda,Vk,Wc]=mifa(A,V0,jd,max1)
lambda=0;k=1;Wc =1; ,jd=jd*0.1;state=1; V=V0;
while((k<=max1)&(state==1))
Vk=A*V; [m j]=max(abs(Vk)); mk=m;
tzw=abs(lambda-mk); Vk=(1/mk)*Vk;
Txw=norm(V-Vk); Wc=max(Txw,tzw); V=Vk;lambda=mk;state=0;
if(Wc>jd)
state=1;
end
k=k+1;Wc=Wc;
end
if(Wc<=jd)
disp('请注意:迭代次数k,主特征值的近似值lambda,主特征向量的
近似向量Vk,相邻两次迭代的误差Wc如下:')
else
disp('请注意:迭代次数k已经达到最大迭代次数max1,主特征值的迭代
值lambda,主特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:')
end
Vk=V;k=k-1;Wc;
例 5.2.2 用幂法计算下列矩阵的主特征值和对应的特征向量的近似向量,精度
.并把(1)和(2)输出的结果与例 5.1.1 中的结果进行比较.
(1) ; (2) ;(3) ;(4)
.
解 (1)输入 MATLAB 程序
>>A=[1 -1;2 4]; V0=[1,1]';
[k,lambda,Vk,Wc]=mifa(A,V0,0.00001,100),
46.
第五章 矩阵的特征值与特征向量的计算

第三篇 第五章 矩阵的特征值与特征向量的 MATLAB 程序
[V,D] = eig (A), Dzd=max(diag(D)), wuD= abs(Dzd- lambda),
wuV=V(:,2)./Vk,
运行后屏幕显示结果
请注意:迭代次数 k,主特征值的近似值 lambda,主特征向量的近似向量 Vk,相邻两次迭
代的误差 Wc 如下:
k = lambda = Wc =
33 3.00000173836804 8.691862856124999e-007
Vk = V = wuV
=
-0.49999942054432 -0.70710678118655 0.44721359549996 -
0.89442822756294
1.00000000000000 0.70710678118655 -0.89442719099992 -
0.89442719099992
Dzd = wuD =
3 1.738368038406435e-006
由输出结果可看出,迭代 33 次,相邻两次迭代的误差 W
c
8.69 19e-007,矩阵
的主特征值的近似值 lambda 3.000 00 和对应的特征向量的近似向量 V
k
(-0.500
00,1.000 00 , lambda 与例 5.1.1 中 的最大特征值 近似相等,绝对误差约为
1.738 37e-006,V
k
与特征向量 的第 1 个分量的绝对误差
约等于 0,第 2 个分量的绝对值相同.由 wuV 可以看出, 的特征向量 V(:,2) 与 V
k
的对
应分量的比值近似相等.因此,用程序 mifa.m 计算的结果达到预先给定的精度 .
(2) 输入 MATLAB 程序
>>B=[1 2 3;2 1 3;3 3 6]; V0=[1,1,1]';
[k,lambda,Vk,Wc]=mifa(B,V0,0.00001,100), [V,D] = eig
(B),
Dzd=max(diag(D)), wuD= abs(Dzd- lambda),
wuV=V(:,3)./Vk,
运行后屏幕显示结果
请注意:迭代次数 k,主特征值的近似值 lambda,主特征向量的近似向量 Vk,相邻两次迭
代的误差 Wc 如下:
k = lambda = Wc = Dzd = wuD =
3 9 0 9 0
Vk = wuV =
0.50000000000000 0.81649658092773
0.50000000000000 0.81649658092773
1.00000000000000 0.81649658092773
V =
0.70710678118655 0.57735026918963 0.40824829046386
-0.70710678118655 0.57735026918963 0.40824829046386
0 -0.57735026918963 0.81649658092773
47.

第三篇 第五章 矩阵的特征值与特征向量的 MATLAB 程序
(3) 输入 MATLAB 程序
>> C=[1 2 2;1 -1 1;4 -12 1];V0=[1,1,1]';
[k,lambda,Vk,Wc]=mifa(C,V0,0.00001,100), [V,D] = eig
(C),
Dzd=max(diag(D)), wuD=abs(Dzd-lambda),
Vzd=V(:,1),wuV=V(:,1)./Vk,
运行后屏幕显示
请注意:迭代次数 k 已经达到最大迭代次数 max1,主特征值的迭代值 lambda,主特征向量
的迭代向量 Vk,相邻两次迭代的误差 Wc 如下:
k = lambda = Wc =
100 0.09090909090910 2.37758124193119
Dzd = wuD =
1.00000000000001 0.90909090909091
Vk= Vzd = wuV =
0.99999999999993 0.90453403373329 0.90453403373335
0.99999999999995 0.30151134457776 0.30151134457778
1.00000000000000 -0.30151134457776 -0.30151134457776
由输出结果可见,迭代次数 k 已经达到最大迭代次数 max1=100,并且 lambda 的相
邻两次迭代的误差 Wc 2.377 58>2,由 wuV 可以看出,lambda 的特征向量 V
k
与真值 Dzd
的特征向量 Vzd 对应分量的比值相差较大,所以迭代序列发散.实际上,实数矩阵 C 的特
征值的近似值为 ,并且对应的特征向量的
近 似 向 量 分 别 为 = ( 0.90453403373329 , 0.30151134457776 , -
0.30151134457776) ,
(-0.72547625011001,-0.21764287503300-0.07254762501100i,
0.58038100008801-0.29019050004400i) ,
( -0.72547625011001, -0.21764287503300 +
0.07254762501100i,
0.58038100008801 + 0.29019050004400i) ,
是常数).
(4)输入 MATLAB 程序
>> D=[-4 14 0;-5 13 0;-1 0 2]; V0=[1,1,1]';
[k,lambda,Vk,Wc]=mifa(D,V0,0.00001,100), [V,Dt] =eig
(D),
Dtzd=max(diag(Dt)), wuDt=abs(Dtzd-lambda),
Vzd=V(:,2),wuV=V(:,2)./Vk,
运行后屏幕显示结果
请注意:迭代次数 k,主特征值的近似值 lambda,主特征向量的近似向量 Vk,相邻两次迭
代的误差 Wc 如下:
48.

第三篇 第五章 矩阵的特征值与特征向量的 MATLAB 程序
k = lambda = Wc =
19 6.00000653949528 6.539523793591684e-006
Dtzd = wuDt =
6.00000000000000 6.539495284840768e-006
Vk = Vzd = wuV =
0.79740048053564 0.79740048053564 0.79740048053564
0.71428594783886 0.56957177181117 0.79740021980618
-0.24999918247180 -0.19935012013391 0.79740308813370
5.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));
49.

第三篇 第五章 矩阵的特征值与特征向量的 MATLAB 程序
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 分解.
50.
- 1
- 2
- 3
- 4
- 5
前往页