幂法及其MATLAB程序.docx

上传人:b****4 文档编号:4155714 上传时间:2022-11-28 格式:DOCX 页数:62 大小:215.68KB
下载 相关 举报
幂法及其MATLAB程序.docx_第1页
第1页 / 共62页
幂法及其MATLAB程序.docx_第2页
第2页 / 共62页
幂法及其MATLAB程序.docx_第3页
第3页 / 共62页
幂法及其MATLAB程序.docx_第4页
第4页 / 共62页
幂法及其MATLAB程序.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

幂法及其MATLAB程序.docx

《幂法及其MATLAB程序.docx》由会员分享,可在线阅读,更多相关《幂法及其MATLAB程序.docx(62页珍藏版)》请在冰豆网上搜索。

幂法及其MATLAB程序.docx

幂法及其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;[mj]=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;24];V0=[1,1]';

[k,lambda,Vk,Wc]=mifa(A,V0,0.00001,100),

[V,D]=eig(A),Dzd=max(diag(D)),wuD=abs(Dzd-lambda),wuV=V(:

2)./Vk,

运行后屏幕显示结果

请注意:

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

k=lambda=Wc=

333.000001738368048.691862856124999e-007

Vk=V=wuV=

-0.49999942054432-0.707106781186550.44721359549996-0.89442822756294

1.000000000000000.70710678118655-0.89442719099992-0.89442719099992

Dzd=wuD=

31.738368038406435e-006

由输出结果可看出,迭代33次,相邻两次迭代的误差Wc

8.6919e-007,矩阵

的主特征值的近似值lambda

3.00000和对应的特征向量的近似向量Vk

(-0.50000,1.00000

lambda与例5.1.1中

的最大特征值

近似相等,绝对误差约为1.73837e-006,Vk与特征向量

的第1个分量的绝对误差约等于0,第2个分量的绝对值相同.由wuV可以看出,

的特征向量V(:

2)与Vk的对应分量的比值近似相等.因此,用程序mifa.m计算的结果达到预先给定的精度

.

(2)输入MATLAB程序

>>B=[123;213;336];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=

39090

Vk=wuV=

0.500000000000000.81649658092773

0.500000000000000.81649658092773

1.000000000000000.81649658092773

V=

0.707106781186550.577350269189630.40824829046386

-0.707106781186550.577350269189630.40824829046386

0-0.577350269189630.81649658092773

 

(3)输入MATLAB程序

>>C=[122;1-11;4-121];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=

1000.090909090909102.37758124193119

Dzd=wuD=

1.000000000000010.90909090909091

Vk=Vzd=wuV=

0.999999999999930.904534033733290.90453403373335

0.999999999999950.301511344577760.30151134457778

1.00000000000000-0.30151134457776-0.30151134457776

由输出结果可见,迭代次数k已经达到最大迭代次数max1=100,并且lambda的相邻两次迭代的误差Wc

2.37758>2,由wuV可以看出,lambda的特征向量Vk与真值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=[-4140;-5130;-102];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如下:

k=lambda=Wc=

196.000006539495286.539523793591684e-006

Dtzd=wuDt=

6.000000000000006.539495284840768e-006

Vk=Vzd=wuV=

0.797400480535640.797400480535640.79740048053564

0.714285947838860.569571771811170.79740021980618

-0.24999918247180-0.199********3910.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);

ifRA1==0

disp('请注意:

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

return

end

lambda=0;

ifRA1~=0

forp=1:

n

h(p)=det(A1(1:

p,1:

p));

end

hl=h(1:

n);

fori=1:

n

ifh(1,i)==0

disp('请注意:

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

return

end

end

ifh(1,i)~=0

disp('请注意:

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

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

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

[LU]=lu(A1);Yk=L\Vk;Vk=U\Yk;[mj]=max(abs(Vk));

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

[mj]=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.0001.

(1)

(2)

;(3)

.

(1)输入MATLAB程序

>>A=[1-10;-24-2;0-12];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=

30.23841.0213e-0070.80001.04000.2720

Vk=V=D=

1.0000-0.2424-1.0000-0.57075.124900

0.76161.0000-0.76160.363300.23840

0.4323-0.3200-0.43231.0000001.6367

(2)输入MATLAB程序

>>A=[1-1;24];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=

22.00205.1528e-007-1.0010-0.0010

Vk=V=D=

1.0000-1.00000.500020

-1.00001.0000-1.000003

(3)输入MATLAB程序

>>A=[-11215;2583;153-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=

28.26406.9304e-008-19.2600-961.9924-6.1256

Vk=V=D=

-0.76920.79280.60810.0416-22.524900

0.09120.0030-0.07210.997408.26400

-1.0000-0.60950.79060.05900058.2609

例5.3.3用原点位移反幂法的迭代公式(5.28),计算

的分别对应于特征值

的特征向量

的近似向量,相邻迭代误差为0.001.将计算结果与精确特征向量比较.

(1)计算特征值

对应的特征向量

的近似向量.输入MATLAB程序

>>A=[011-5;-217-7;-426-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.001000000000005.98500100000000-0.00299600100000

k=lambda=RA1=

51.00200000000000-0.00299600100000

Vk=VD=wuV=

-0.50000000000000-0.408248290463860.81649658092773

-0.50000000000000-0.408248290463860.81649658092773

-1.00000000000000-0.816496580927730.81649658092773

Wc=Dzd=wuD=

1.378794763695562e-0091.000000000000000.00200000000000

从输出的结果可见,迭代5次,特征向量

的近似向量

的相邻两次迭代的误差Wc

1.379e-009,由wuV可以看出,

=Vk与VD的对应分量的比值相等.特征值

的近似值lambda

1.002与初始值

1.001的绝对误差为0.001,而与

的绝对误差为0.002,其中

.

(2)计算特征值

对应特征向量

的近似向量.

输入MATLAB程序

>>A=[011-5;-217-7;-426-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.012999000000000.00200099900000

k=Wc=lambda=WD=

23.131363162302120e-0072.002000000000160.00200000000016

Vk=VD=wuV=

-0.249999999999990.21821789023599-0.87287156094401

-0.499999999999990.43643578047198-0.87287156094398

-1.000000000000000.87287156094397-0.87287156094397

从输出的结果可见,迭代2次,特征向量

的近似向量

的相邻两次迭代的误差Wc

3.131e-007,

的对应分量的比值近似相等.特征值

的近似值lambda

2.002与初始值

2.001的绝对误差约为0.001,而lambda与

的绝对误差约为0.002,其中

.

(3)计算特征值

对应特征向量

的近似向量.输入MATLAB程序

>>A=[011-5;-217-7;-426-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=

24.001999999999901.996084182914842e-0070.00199999999990

Vk=VD=wuV=

0.40000000000001-0.32444284226153-0.81110710565380

0.60000000000001-0.48666426339229-0.81110710565381

1.00000000000000-0.81110710565381-0.81110710565381

从输出的结果可见,迭代2次,特征向量

的近似向量

的相邻两次迭代的误差Wc

1.996e-007,

的对应分量的比值近似相等.特征值

的近似值

的绝对误差近似为

,而lambda与

的绝对误差约为0.002,其中

-0.40000000000000,-0.60000000000000,-1.00000000000000

.

(二)原点位移反幂法的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;[mj]=max(abs(Vk));mk=m;Vk=(1/mk)*Vk;Vk1=A1\Vk;

[m1j]=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=[011-5;-217-7;-426-10];V0=[1,1,1]';

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

运行后屏幕显示结果

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

k=lambda=Wc=

51.002000000001381.376344154436924e-006

Vk’=-0.50000000000000-0.50000000000000-1.00000000000000

同理可得,另外与两个特征

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1