Tải bản đầy đủ (.pdf) (36 trang)

Phương pháp tính với C++ - Chương 3 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (760.99 KB, 36 trang )



CHƯƠNG3:CÁCVẤNĐỀVỀMATRẬN

§1.ĐỊNHTHỨCCỦAMATRẬN
 Chomộtmatrậnvuôngcấpn.Tacầntìmđịnhthứccủanó.Trướchết
chúngtanhắclạimộtsốtínhchấtquantrọngcủa
địnhthức:
- nếunhântấtcảcácphầntửcủamộthàng(haycột)vớikthìđịnh
thứcđượcnhânvớik
- địnhthứckhôngđổinếutacộngthêmvàomộthàngt
ổhợptuyến
tínhcủacáchàngcònlại.
Tasẽápdụngcáctínhchấtnàyđểtínhđịnhthứccủamộtmatrậncấp4
như sau(phương pháp này có thểmởrộngchomột ma
trận cấpn)bằng
phươngpháptrụ:















=
44434241
34333231
24232221
14131211
aaaa
aaaa
aaaa
aaaa
A 
Lấygiátrịtrụlàp
1=a11.Tachiacácphầntửcủahàngthứnhấtchop1=a11thì
địnhthứcsẽlàD/p
1(theotínhchất1)vàmatrậncònlạilà:














′′′
44434241

34333231
24232221
141312
aaaa
aaaa
aaaa
aaa1

Lấyhàng2trừđihàng1đãnhânvớia
21,lấyhàng3trừđihàng1đãnhân
vớia
31vàlấyhàng4trừđihàng1đãnhânvớia41(thayhàngbằngtổhợp
tuyếntínhcủacáchàngcònlại)thìđịnhthứcvẫnlàD/p
1vàmatrậnlà:














′′′
′′′

′′′



444342
343332
242322
141312
aaa0
aaa0
aaa0
aaa1

Lấygiátrịtrụlà
.Tachiacácphầntửcủahàngthứhaichop
222
ap

= 2thì
địnhthứcsẽlàD/(p
1p2)vàmatrậncònlạilà:
















′′′
′′′
′′′′



444342
343332
2423
141312
aaa0
aaa0
aa10
aaa1

Lấyhàng1trừđihàng2đãnhânvới
12
a

,lấyhàng3trừđihàng2đãnhân
với
vàlấyhàng4trừđihàng2đãnhânvới
32
a


42
a

thìthìđịnhthứcvẫnlà

47


D/(p1p2)vàmatrậnlà:














′′′′
′′′′
′′′′
′′′′
4443
3433

2423
1413
aa00
aa00
aa10
aa01

Tiếptụclấyhàng3rồihàng4làmtrụthìmatrậnsẽlà:














1000
0100
0010
0001

Địnhthứccủamatrận
nàylàD/(p1p2p3p4)=D/(
44332211

aaaa
′′′′′

)=1nênđịnh
thứccủamatrậnAlàD=p
1p2p3p4.
 Sauđâylàchươngtrìnhtìmđịnhthứccủamộtmatrận:

Chươngtrình3‐1

//tinhdinhthuc
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>

voidmain()
{
 inti,j,k,n,ok1,ok2,t;
 floatd,c,e,f,g,h;
 floata[50][50];
 chartl;

 clrscr();
 printf(ʺ**TINHDINHTHUCCAPn**ʺ);
 printf(ʺ\nʺ);
 printf(ʺ\nʺ);
 printf(ʺChocapcuadinhthucn
=ʺ);
 scanf(ʺ%dʺ,&n);

 printf(ʺNhapmatrana\nʺ);
 for(i=1;i<=n;i++)
 {

48


printf(ʺDong%d:\nʺ,i);
for(j=1;j<=n;j++)
{
printf(ʺa[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&a[i][j]);
}
printf(ʺ\nʺ);
}
 printf(ʺ\nʺ);
 printf(ʺMatranamabandanhap\nʺ);
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(ʺ%.5f\tʺ,a[i][j]);
printf(
ʺ\nʺ);
}
 printf(ʺ\nʺ);
 t=1;
flushall();
 while(t)
{

printf(ʺCosuamatranakhong(c/k)?ʺ);
scanf(ʺ%cʺ,&tl);
if(toupper(tl)==ʹCʹ)
{
printf(ʺChochisohangcansua:ʺ);
scanf(ʺ%dʺ,&i);
printf(ʺChochisocot
cansua:ʺ);
scanf(ʺ%dʺ,&j);
printf(ʺa[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&a[i,j]);
}
if(toupper(tl)==ʹKʹ)
t=0;
}
 printf(ʺMatranabandau\nʺ);
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{

49


for(j=1;j<=n;j++)
printf(ʺ%.5f\tʺ,a[i][j]);
printf(ʺ\nʺ);
}
 printf(ʺ\nʺ);
 d=1;
 i=1;

 ok2=1;
 while((ok2)&&(i<=n))
{
if(a[i][i]==0)
{
ok1=1;
k=k+1;
while((ok1)&&(k<=n))
if(a[k,i]!=0)
{
for(j=i;j<=n;j++)
{
c=a[i][j];
a[i][j]=a[k][j];
a[k][j]=c;
}
d=‐d;
ok1=0;
}
else
k=k+1;
if(k>n)
{
printf(ʺ\nʺ);
printf(ʺ**MATRANSUYBIEN**ʺ);
ok2=0;
d=0;
}
}
if(a[i][i]!=0)

{
c=a[i][i];
for(j=i+1;j<=n;j++)

50


a[i][j]=a[i][j]/c;
for(k=i+1;k<=n;k++)
{
c=a[k][i];
for(j=i+1;j<=n;j++)
a[k][j]=a[k][j]‐a[i][j]*c;
}
}
i=i+1;
}
 if(ok2)
{
for(i=1;i<=n;i++)
  d=d*a[i][i];
printf(ʺ\nʺ);
printf(ʺ**GIATRIDINHTHUCD**ʺ);
printf(ʺ\nʺ);
printf(ʺ%.3fʺ,d);
}
 getch();
}
§2.NGHỊCHĐẢOMATRẬN
GọiA

‐1
làmatrậnnghịchđảocủamộtmatrậnAbậcntacóAA
‐1
=E
(trongbiểuthứcnày E làmộtmatrận vuông có cácphầntửtrênđường
chéochínhbằng1).DạngcủamatrậnE,vídụcấp4,là:














=
1000
0100
0010
0001
E 
 Phương
pháploạitrừđểnhậnđượcmatrậnnghịchđảoA
‐1
đượcthực

hiệnquanhiềugiaiđoạn(n),mỗimộtgiaiđoạngồmhaibước.Đốivớigiai
đoạnthứk:
‐chuẩnhoáphầntửa
kkbằngcáchnhânhàngvớinghịchđảocủanó
‐làmchobằngkhôngcácphầntửphíatrênvàphíadướiđườngchéo
chođếncộtthứk.Khik=nthì
A
(k)
sẽtrởthànhmatrậnđơnvịvàE
trởthành
A
‐1
Vídụ:Tínhmatrậnnghịchđảocủamatrận

51












=
211
121

112
A 
TaviếtlạimatrậnAvàmatrậnđơnvịtươngứngvớinó:










=










=
100
010
001
E
211

121
112
A 
Giaiđoạn1:Bướca:Nhânhàng1với1/a11,nghĩalàa
,
1j=a1j/a11đốivớidòng
thứnhất,a
,
ij=aijđốivớicácdòngkhác










=











=
100
010
0021
E
211
121
21211
A 
Bướcb:Trừhàng3vàhàng2chohàng1,nghĩalàa
(1)
1j=aij‐ai1aij
đốivớii
≠1.











−=











=
1021
0121
0021
E
23210
21230
21211
A 
Giaiđoạn2:Bướca:Lấyhàng2làmchuẩn,nhânhàng2với2/3,đểnguyên
cáchàngkhác












−=











=
1021
03231
0021
E
23210
3110
21211
A 

Bướcb:Lấyhàng1trừđihàng2nhân1/2vàlấyhàng3trừđi
hàng2nhân1/2












−−


=










=
13131
03231
03132
E
3400
3110
3101
A 
Giaiđoạn3:Bướca:Lấyhàng3làmchuẩn,nhânhàng3với3/4,đểnguyên
cáchàngkhác











−−


=










=
434141
03231
03132
E
100
3110
3101

A 

Bướcb:Lấyhàng1trừđihàng3nhân1/3vàlấyhàng2trừđi
hàng3nhân1/3

52












−−
−−
−−
=











=
434141
414341
414143
E
100
010
001
A 
NhưvậyA
‐1
là:










−−
−−
−−
=

4/34/14/1

4/14/34/1
4/14/14/3
A
1

Ápdụngphươngphápnàychúngtacóchươngtrìnhsau:

Chươngtrình3‐2

#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>

voidmain()
{
 inti,j,k,n,t,t1;
 floatc,a[50][50],b[50][50];
chartl;

 clrscr();
 printf(ʺ**MATRANNGHICHDAO**\nʺ);
 printf(ʺChobaccuamatrann=ʺ);
 scanf(ʺ%dʺ,&n);
 printf(ʺVaomatranbandaua\n
ʺ);
 for(i=1;i<=n;i++)
 {
printf(ʺVaohangthu%d:\nʺ,i);

for(j=1;j<=n;j++)
  {
printf(ʺa[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&a[i][j]);
  }
printf(ʺ\nʺ);
}
 printf(ʺ\nʺ);

53


 printf(ʺMatranbandanhap\nʺ);
printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(ʺ%.5f\tʺ,a[i][j]);
printf(ʺ\nʺ);
}
 t=1;
 flushall();
 while(t)
{
printf(ʺ\nCosuamatrankhong(c/k)?ʺ);
scanf(ʺ%cʺ,&tl);
if(toupper(tl)==ʹCʹ)
{
printf(ʺ
Chochisohangcansua:ʺ);

scanf(ʺ%dʺ,&i);
printf(ʺChochisocotcansua:ʺ);
scanf(ʺ%dʺ,&j);
printf(ʺa[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&a[i][j]);
}
if(toupper(tl)==ʹKʹ)
t=0;
}
 printf(ʺ\nMatranbandau\nʺ);
 printf(ʺ\nʺ
);
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(ʺ%.5f\tʺ,a[i][j]);
printf(ʺ\nʺ);
}
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
for(j=n+1;j<=2*n;j++)
{
if(j==i+n)
a[i][j]=1;

54


else
a[i][j]=0;

}
i=1;
t1=1;
while(t1&&(i<=n))
{
if(a[i][i]==0)
{
t=1;
k=i+1;
while(t&&(k<=n))
if(a[k][i]!=0)
{
for(j=1;j<=2*n;j++)
{
c=a[i][j];
a[i][j]=a[k][j];
a[k][j]=c;
}
t=0;
}
else
k=k+1;
if(k==n+1)
{
if(a[i][k‐1]==0)
{

printf(ʺMATRANSUYBIEN\nʺ);
t1=0;
}

}
}
if(a[i][i]!=0)
{
c=a[i][i];
for(j=i;j<=2*n;j++)
a[i][j]=a[i][j]/c;
}
for(k=1;k<=n;k++)

55


{
if(k!=i)
{
c=a[k][i];
for(j=i;j<=2*n;j++)
a[k][j]=a[k][j]‐a[i][j]*c;
}
}
i=i+1;
}
if(t1)
{
printf(ʺ\nʺ);
printf(ʺ\nMATRANKETQUA\nʺ);
printf(ʺ\nʺ);
for(i=1;i<=n;i++)
{

for(j=n+1;j<=2*n;j++)
printf(ʺ%.4f\t\tʺ,a[i][j]);
printf(ʺ\nʺ);
}
printf(ʺ\nʺ);
}
 getch();
}

Dùngchươngtrìnhtínhnghịchđảocủamatrận:










678
789
899
chotakếtquả 











−−

−−
991
9102
121

§3.TÍCHHAIMATRẬN
 GiảsửtacómatrậnAmnvàmatrậnBnp.TíchcủaAmnvàBnplàma
trận
CmptrongđómỗiphầntửcủaCmplà: 

=
=
n
1k
kjik
ij
bac
 Chươngtrìnhdướiđâythựchiệnnhânhaimatrậnvớinhau.
Chươngtrình3‐3


56



#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>

#definemax50

voidmain()
{
 intn,l,m,i,j,k,t;
 floata[max][max],b[max][max],c[max][max];
 chartl;

 clrscr();
 printf(ʺChosohangcuamatrana:ʺ);
 scanf(ʺ%dʺ,&n);
 printf(ʺChosocotcuamatrana:ʺ);

scanf(ʺ%dʺ,&l);
 printf(ʺChosocotcuamatranb:ʺ);
 scanf(ʺ%dʺ,&m);
 printf(ʺ\nNHAPMATRANA\nʺ);
 for(i=1;i<=n;i++)
for(j=1;j<=l;j++)
{
printf(ʺa[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&a[i][j]);
}
 printf(ʺ\nʺ);

 printf(ʺMatranamabanda
nhap\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=l;j++)
printf(ʺ%10.5fʺ,a[i][j]);
printf(ʺ\nʺ);
}
 flushall();
 t=1;
 while(t)
{

57


printf(ʺCosuamatrankhong(c/k)?ʺ);
scanf(ʺ%cʺ,&tl);
if(toupper(tl)==ʹCʹ)
{
printf(ʺChochisohangcansua:ʺ);
scanf(ʺ%dʺ,&i);
printf(ʺChochisocotcansua:ʺ);
scanf(ʺ%dʺ,&j);
printf(ʺa[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&a[i][j]);

}
if(toupper(tl)==ʹKʹ)
t=0;

}
 printf(ʺMatranabandauʺ);
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=l;j++)
printf(ʺ%10.5fʺ,a[i][j]);
printf(ʺ\nʺ);
}
 printf(ʺ\nʺ);

 printf(ʺNHAPMATRANB\nʺ);
 for(i=1;i<=l;i++)
for(j=1;j<=m;j++)
{
printf(ʺb[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&b[i][j]);
}
 printf(ʺ\nʺ);
 printf(ʺMatranbbandanhap\nʺ);
 for(i=1;i<=l;i++)
{
for(j=1;j<=m;j++)
printf(ʺ%10.5fʺ,b[i][j]);
printf(ʺ\nʺ);
}
 flushall();

58



 t=1;
 while(t)
{
printf(ʺCosuamatrankhong(c/k)?ʺ);
scanf(ʺ%cʺ,&tl);
if(toupper(tl)==ʹCʹ)
{
printf(ʺChochisohangcansua:ʺ);
scanf(ʺ%dʺ,&i);
printf(ʺChochisocotcansua:ʺ);
scanf(ʺ%dʺ,&j);
printf(ʺb[%d][%d]
=ʺ,i,j);
scanf(ʺ%fʺ,&b[i][j]);
}
if(toupper(tl)==ʹKʹ)
t=0;
}
 printf(ʺMatranbbandauʺ);
 printf(ʺ\nʺ);
 for(i=1;i<=l;i++)
{
for(j=1;j<=m;j++)
printf(ʺ%10.5fʺ,b[i][j]);
printf(ʺ\nʺ);
}
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
for(j=1;j<=m;j++)

{

c[i][j]=0;
for(k=1;k<=l;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
 printf(ʺMatrantichc:\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
printf(ʺ%10.5fʺ,c[i][j]);
printf(ʺ\nʺ);
}

59


 getch();
}

Dùngchươngtrìnhtínhtínhhaimatrậntanhậnđượckếtquả
















−−



=










×
















1214
221
11148
105
343
221
35
01
31
12


§4.GIÁTRỊRIÊNGVÀVECTƠRIÊNGCỦAMATRẬN
1.Khái niệm chung
: Trong nghiên cứu lí thuyết vàứngdụng,tagặpbài
toánvềmatrậncấpn.ChomộtmatrậnAcấpn,giátrịλđượcgọilàgiátrị
riêngvàvectơXđượcgọilà
vectơriêngcủamatrậnAnếu:
 AX=λX(1)

 Vectơriêngphảilà vectơkháckhông.Tươngứngvớimộtgiátrịriêng
cóvôsốvectơriêng.NếuXlàmộtvéctơriêngtươngứngvớigiátrịriêngλ
thìcXcũnglàvectưriênhứngvớ

iλ.Cónhiềuthuậttoántìmgiátrịriêng
vàvectơriêngcủamộtmatrận.GiảsửtacómatrậnA,gọiElàmatrậnđơn
vịthìtheo(1)tacó:
 (A‐λE)X=0(2)
và(A‐λE)làmatrậncódạng:

(3)














λ−⋅⋅⋅
⋅⋅⋅
⋅⋅⋅λ−
⋅⋅⋅λ−
nn2n1n
n22221
n11211
aaa
aaa

aaa
 Nhưvậydo(2) làhệphương trình tuyếntínhthuần nhất nênđiều
kiệncầnvàđủđểλlàgiátrịriêngcủamatrậntrênlàđịnhthứccủanóbằ
ng
không:
 det(A‐λE)=0(4)
Phươngtrình(4)đượcgọilàphươngtrìnhđặctrưngcủamatrậnA.Định
thứcdet(A‐λE)đượcgọilàđịnhthứcđặctrưngcủamatrậnA.Định
thức
PA(λ)củamatrậntrênđượcgọilàđathứcđặctrưngcủamatrậnvuôngA.
 Vídụtìmvectơriêngvàtrịriêngcủamatrận:













022
113
31
3

TrướchếttatínhđathứcđặctrưngcủamatrậnA:


60




)4)(4(
22
113
313
)(P
2
A
+λλ−=










λ−−
−λ−
−λ−

NghiệmcủaP
A(λ)=0làλ1=4,λ2=2jvàλ3=‐2j.Vìtrườngcơsởlàsốthực

nêntachỉlấyλ=4.Đểtìmvectơriêngtươngứngvớiλ=4tagiảihệ
0
22
113
313
3
2
1
=










ξ
ξ
ξ
×











λ−−
−λ−
−λ−
 
tanhậnđượccácgiátrịcủaξ,chúngtạothànhvectơriêngứngvớiλ.
Nhưvậykhikhaitriểnđịnhthứctacómộtđa
thứcbậcncódạng:
P
n(λ)=λ
n
‐p1λ
n‐1
‐p2λ
n‐2
‐∙∙∙‐pn=0
Muốnxácđịnhcáchệsốcủađathứcđặctínhnàytadùngphương pháp
Fadeev‐Leverrier.TaxétmatrậnA:















⋅⋅⋅
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
⋅⋅⋅
⋅⋅⋅
=
nn2n1n
n22221
n11211
aaa
aaa
aaa
A 
TagọivếtcủamatrậnAlàsố:
 vet(A)=a
11+a22+∙∙∙+ann
KhiđóthamsốpicủaPn(λ)đượccácđịnhnhưsau:
 p
1=vet(B1)với B1=A
 p
2=(1/2)vet(B2) với B2=A(B1‐p1E)
 p
3=(1/3)vet(B3) với B3=A(B2‐p2E)
 
Chươngtrìnhtínhcáchệsốp
inhưsau:


Chươngtrình3‐4

//Faddeev_Leverrier;
#include<stdio.h>
#include<conio.h>
#include<ctype.h>

#definemax50

voidmain()
{


61


 inti,j,k,m,n,k1,t;
 floatvet,c1,d;
 chartl;
 floatp[max];
 floata[max][max],b[max][max],c[max][max],b1[max][max];

 clrscr();
 printf(ʺChobaccuamatrann=ʺ);
 scanf(ʺ%dʺ,&n);
 printf(ʺChocacphantucuamatrana:\nʺ);
 for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
  printf(ʺa[%d][%d]=ʺ,i,j

);
  scanf(ʺ%fʺ,&a[i][j]);
}
 printf(ʺ\nʺ);
 clrscr();
 printf(ʺMatranbandanhapʺ);
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(ʺ%10.5fʺ,a[i][j]);
printf(ʺ\nʺ);
}
 t=1;
 flushall();
 while(t)
{
printf(ʺ\nʺ);
printf(ʺCo
suamatrankhong(c/k)?ʺ);
scanf(ʺ%cʺ,&tl);
if(toupper(tl)==ʹCʹ)
{
printf(ʺChochisohangcansua:ʺ);
scanf(ʺ%dʺ,&i);
printf(ʺChochisocotcansua:ʺ);
scanf(ʺ%dʺ,&j);
printf(ʺa[%d][%d]=ʺ,i,j);

62



scanf(ʺ%fʺ,&a[i][j]);
flushall();
}
if(toupper(tl)==ʹKʹ)
t=0;
}
 printf(ʺMatranbandauʺ);
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(ʺ%10.5fʺ,a[i][j]);
printf(ʺ\nʺ);
}
 for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]=a[i][j];
 for(k=1;k<=n‐1;k++)
{
vet=0.0;
for(i=1;i<=n;i++)
vet+=b[i][i];
p[k]=vet/k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(j!=i)
c[i][j]=b[i][j];

if(j==i)
c[i][j]=b[i][j]‐p[k];
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
b[i][j]=0.0;
for(k1=1;k1<=n;k1++)
b[i][j]+=a[i][k1]*c[k1][j];
}
}
 vet=0.0;

63


 for(i=1;i<=n;i++)
vet+=b[i][i];
 p[n]=vet/n;
 printf(ʺ\nʺ);
 printf(ʺCachesocuadathucdactrung\nʺ);
 printf(ʺ\nʺ);
 d=1.0;
 printf(ʺ%6.2fʺ,d);
 for(i=1;i<=n;i++)
{
c1=‐p[i];
printf(ʺ%5c%6.2fʺ,ʹʹ,c1);
}
 getch();

}

2.PhươngphápMises:ThuậttoánMisestìmgiátrịriêngl ớnnhấtcủamột
matrậnA.NếumatrậnAlàthựcvàvàmỗitrịriêngbộikcó đủk vectơ
riêngđộclậptuyếntínhthì
việctínhtoánsẽchotagiátrịriênglớnnhất.
MộtvectơVbấtkìcóthểđượcviếtdướidạng:

=
=+⋅⋅⋅++=
n
1i
iinn2211
XvXvXvXvV (5)
 TrongđóX1,X2, ,Xnlàcácvectơriêng tươngứngvớicácgiátrịriêng 
λ
1,λ2,λ3, ,λnvàv1,v2,v3, ,vnlàcáchằngsố.
 KhinhânAvớiVtacó:
 AV=Av
1X1+Av2X2+ +AvnXn
do: Av1X1=v1AX1=v1λ1X1;Av2X2=v2AX2=v2λ2X2v.v.
Nên: AV=v
1λ1X1+v2λ2X2+ +vnλnXn
 
∑∑
==
λ==
n
1i
iii

n
1i
iii
XvXAvAV
LạinhânbiểuthứctrênvớiAtacó:
 A
2
V=v1λ1AX1+v2λ2AX2+∙∙∙+vnλnAXn
=v

2
1X1+v2λ2
2
X2+ +vnλn
2
Xn
vàtiếpđếnlầnthứptacó:



=
λ=
n
1i
i
p
ii
XvAV
Lấyλ
p

1làmthừasốchungtacó:

















λ
λ
+⋅⋅⋅+








λ

λ
+








λ
λ
+λ=
n
p
1
n
n3
p
1
3
32
p
1
2
211
p
1
p
XvXvXvXvVA 


64


Tươngtựtacó:
















λ
λ
+⋅⋅⋅+









λ
λ
+








λ
λ
+λ=
+++
++
n
1p
1
n
n3
1p
1
3
32
1p
1
2

211
1p
1
1p
XvXvXvXvVA 
Khiprấtlớn,vìλ
1>λ2>λ3>, ,λnnên:
∞→→








λ
λ
pkhi0
1
i

Dođó:
11
p
1
p
p
XvVAlim
λ

=
∞→
(6)
11
1p
1
1p
p
XvVAlim
++
∞→
λ
= 
nghĩalàkhipđủlớnthì:


11
p
1
p
XvVA λ=


11
1p
1
1p
XvVA
++
λ=

dođó:
VAVA
p
1
1p
λ=
+

hay:
(
)
VAVAA
p
1
p
λ= 
Nhưvậy
làvéctơriêngcủaAứngvớiλVA
p
1còngiátrịriêngλ1sẽlà:
1
p
1p
p
VA
VA
lim λ=
+
∞→


 Trongthựctếđểtránhvượtquádunglượngbộnhớkhiλ
1khálớn,
cácvectơV
kđượcchuẩnhoásaumỗibướcbằngcáchchiacácphầntửcủa
nóchophầntửlớnnhấtm
kvànhậnđượcvectơV

k
Nhưvậycácbướctínhsẽlà:
‐chomộtvectơVbấtkì(cóthểlàV={1,1,1, ,1}
T
)
‐tínhV
1=AVvànhậnđượcphầntửlớnnhấtlà m1jtừđótínhtiếpV

1
=V
1/m1j
Mộtcáchtổngquát,tạilầnl ặpthứptanhậnđượcvectơVpvàphầntử
lớnnhấtm
pjthìV

p=Vp/mpj.
‐tính
vớiv
p1p
VAV

=
+

p+1,jlàphầntửthứjcủaVp+1.Tacó:





λ=
=

+
∞→
∞→
1j,1p
p
1p
p
vlim
XVlim

Vídụ:Tìmgiátrịriênglớnnhấtvàvectơriêngtươngứngcủamatrận:

















−−−−
=
26544323
68102
720138
17302417
A

ChọnV={1,1,1,1}
T
tatínhđược

65



 V V
1=
AV
V’1 V2=
AV’
1
V’2
 1 88‐0.6027‐6.4801‐0.5578

 1 48‐0.3288‐5.6580‐0.4870
 1 26‐0.1781 0.0818 0.0070
 1‐146 1 11.6179 1
λ
 11.6179
 V3=
AV’
2
V’3 V4=AV’3 V’4 V5=
AV’
4
‐3.9594‐0.5358‐3.6823‐0.5218‐3.5718
‐3.6526‐0.4942‐3.5196‐0.4987‐3.4791
 0.0707 0.0096 0.0630 0.0089 0.0408
 7.3902 1 7.0573 1 6.9638
λ
7.3902 7.05736.9638


 V’
5 V6=
AV’
5
V’6 V7=
AV’
6
V’7
‐0.5129‐3.5341 ‐0.5075‐3.5173‐0.5043
‐0.4996‐3.4809 ‐0.4999‐3.4868‐0.5000
 0.0059 0.0250 0.0036 0.0147 0.0021

 1 6.9634 1 6.9742 1
λ
 6.9634 6.9742

Dùngthuậttoántrêntacóchươngtrìnhsau:

Chươngtrình3‐5

#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
#definemax50

voidmain()
{
 inti,j,k,n,t;

66


 chartl;
 floatt0,t1,epsi,s;
 floata[max][max];
 floatx0[max],x1[max];

 clrscr();
 printf(ʺPhuongphaplapluythuatimtririenglonnhat\nʺ);
 printf(ʺChosohangvacotcuamatrann=ʺ);

 scanf(ʺ%dʺ,&n);
 printf(ʺChocacphantucuamatrana:
\nʺ);
 for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
printf(ʺa[%d][%d]=ʺ,i,j);
scanf(ʺ%fʺ,&a[i][j]);
}
 printf(ʺ\nʺ);
 printf(ʺMatranbandanhap\nʺ);
printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(ʺ%15.5fʺ,a[i][j]);
 printf(ʺ\nʺ);
}
 flushall();
 t=1;
 while(t)
{
printf(ʺ\nCosuamatrankhong(c/k)?ʺ);
scanf(ʺ%cʺ,&tl);
if(toupper(tl)==ʹCʹ)
{
printf(ʺChochisohangcansua:ʺ);
scanf(ʺ%dʺ,&i);
printf(ʺChochisocotcansua:ʺ);
scanf(ʺ%dʺ,&j);

printf(ʺa[%d][%d]=ʺ
,i,j);
scanf(ʺ%fʺ,&a[i][j]);
}

67


if(toupper(tl)==ʹKʹ)
t=0;
}
 epsi=1e‐5;
 printf(ʺ\nMatranbandau\nʺ);
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(ʺ%15.5fʺ,a[i][j]);
printf(ʺ\nʺ);
}
 printf(ʺ\nʺ);
 for(i=1;i<=n;i++)
 x0[i]=1;
 k=1;
 t=0;
 t1=0;
 do
{

t0=t1;

for(i=1;i<=n;i++)
{
x1[i]=0;
for(j=1;j<=n;j++)
x1[i]=x1[i]+a[i][j]*x0[j];
}
s=0;
j=0;
for(i=1;i<=n;i++)
if(s<fabs(x1[i]))
{
j=i;
s=fabs(x1[i]);
}
t1=x1[j];
for(i=1;i<=n;i++)
x1[i]=x1[i]/t1;
if(fabs(t1‐t0)<epsi)
{

68


printf(ʺDathuchien%dbuoclap\nʺ,k);
printf(ʺGiatririenglonnhatVmax=%15.5f\nʺ,t1);
printf(ʺVectoriengtuongung\nʺ);
for(i=1;i<=n;i++)
printf(ʺ%.5f\nʺ,x1[i]);
t=1;
}

if(fabs(t1‐t0)>epsi)
{
for(i=1;i<=n;i++)
x0[i]=x1[i];
k=k+1;
}
if(k>max)

t=1;
}
 while(t==0);
 getch();
}

Dùngchươngtrìnhnàytínhgíatrịriêngvàvectơriêngcủamatrận:












−−

308

649
012
tanhậnđượcgiátrịriênglà3.0000vàvectơriênglà
x={‐0.75;0.75;1}
T
 Nhưchúngtađãnóitrướcđây,phươngphápMises(haycòngọilà
phươngpháplặplũythừa)chỉchophéptìmgiátrịriênglớnnhấtvàvectơ
riêngtương ứngcủamatrận.Đểxácđị
nhcácgiátrịriêngkhác,matrậnA
đượcbiếnđổithànhmộtmatrậnkhácA
1màcácgiátrịriênglàλ2>λ3> 
Phương pháp này gọi là phương pháp xuống thang. Sauđây là  phương
phápbiếnđổimatrận:
GiảsửX
1làvectơriêngcủamatrậnAtươngứngv ớigiátrịriêngλ1
vàW
1làvectơriêngcủamatrậnA
T
tươngứngvớigiátrịriêngλ1.Từđịnh
nghĩaAX
1=λ1X1taviết:
(A‐λE)X
1=0
TatạomatrậnA
1dạng:

W
X
X
W

AA
T
1
1
1
T
1
1
1
λ
−=
(7)

69


TachúýlàX1W1
T
làmộtmatrậncònW1
TX
1làmộtconsố.Khinhânhaivế
củabiểuthức(7)vớiX
1vàchýýđếntínhkếthợpcủatíchcácmatrậntacó:

0
XAX
X
W
X
W

XAX
X
W
X
X
W
AXXA
1
1
1
1
T
1
1
T
1
1
1
1
1
T
1
1
1
T
1
1
111
=
−=

−=
−=
λ
λ
λ
(8)
A
1chấpnhậngiátrịriêngbằngkhông.
NếuX
2làvectơriêngtươngứngvớigiátrịriêngλ2,thìkhinhânA1
vớiX
2tacó:

X
W
X
W
XAX
X
W
X
X
W
AXXA
1
T
1
2
T
1

1
1
2
2
T
1
1
1
T
1
1
221
λ
λ
−=
−=
(9)
TheođịnhnghĩavìW
1làvectơriêngcủaA
T
nên:
λ
1W1=ATW1(10)
Mặtkhácdo:
(AX)
T
=X
T
A
T

và(AT)
T
=A
Nênkhichuyểnvị(10)tanhậnđược:
(A
T
W1)
T
=λ1W
T
1
Hay:
W
1
T
A=λ1W1
T
(11)
Khinhân(11)vớiX
2tacó: 
λ
1W1
T
X2=W1
T
AX2
vàdođịnhnghĩa:
AX
2=λ2X2
nên:

λ
1W1
T
X2=W1
T
λ2X2
Vậythì:

1‐λ2)W1
TX
2=0
khiλ
1≠λ2thì:
 W
1
TX
2=0(12)
Cuốicùngthay(12)vào(9)tacó:
A
1X2=AX2=λ2X2
 Nhưvậyλ2làgiátrịriênglớnnhấtcủamatrậnA1vànhưvậycóthể
ápdụngthuậttoánnàyđểtìmcácgiátrịriêngcònlạicủamatrận.Cácbước
tínhtoánnhưsau
‐khiđãcóλ
1vàX1tatìmW1làvectơriêngcủaA
T
ứngvớigiátrị
riêngλ
1(vídụtìmW1bằngcáchgiảiphươngtrình(AT


‐λ1E)W1=0).Từđó
tínhmatrậnA
12theo(7).

70


‐tìmgiátrịriêngvàvectơriêngcủaA1bằngcáchlặplu ỹthừavàcứ
thếtiếptụcvàxuốngthang(n‐1)lầntatìmđủngiátrịriêngcủamatrậnA.
Vídụ:Tìmgiátrịriêngvàvectơriêngcủamatrậnsau:














−−−−
=
26544323
68102
720138
17302417

A 
Tađãtìmđượcgiátrịriênglớnnhấtλ
1=7vàmộtvectơriêngtươngứng:
X
1={1,1,0,‐2}
T
.
MatrậnA
T
códạng:


















=
266717

5482030
43101324
232817
A 
và theo phương trình (A
T
‐λ1E)W1 = 0 ta tìmđược vectơ W1 =
{293,695,746,434}
T
TalậpmatrậnmớiA1theo(7):














−−−−

86814921390586
0000
434746695293
434746695293

120
7
XW
WX
1
T
1
T
11
1

và:














−−−−


−−

=
6333.240333.330833.381833.11
68102
3167.185167.235417.270917.9
3167.85167.135417.160917.0
A
1

TừmatrậnA
1tatìmtiếpđượcλ2theophéplặpluỹthừavàsauđólạitìm
matrậnA
3vàtìmgiátrịriêngtươngứng.
Chươngtrìnhlặptìmcácgiátrịriêngvàvectơriêng củamatrậnnhư
sau:
Chươngtrình3‐6

#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
#definemax50

71

×