Tài liệu CHƯƠNG 3: HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH   §1. KHÁI NIỆM CHUNG    - Pdf 99


135
CHƯƠNG 3: HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH

§1.KHÁINIỆMCHUNG
 Trong chương này chúng ta sẽ xét các phương pháp số để giải các
phươngtrìnhđạisốtuyếntínhdạng:
11 1 12 2 1n n 1
21 1 22 2 2n n 2
n1 1 n2 2 nn n n
ax ax ax b
ax ax ax b
ax ax ax b
+ +⋅⋅⋅+ =


++⋅⋅⋅+ =


⋅⋅⋅⋅⋅⋅⋅⋅⋅


+ +⋅⋅⋅+ =


Cácphươngtrìnhnàycóthểviếtgọndướidạng:
 [A][x]=[b]

Trongđó:

[]




=

⋅⋅







[]
1
2
n
x
x
x
x






=
⋅⋅⋅


x=A^‐1*b
%x=inv(A)*b

2.Trườnghợpsốphươngtrìnhíthơnsốẩn(nghiệmcựctiểuchuẩn)
:Nếusố

136
phươngtrìnhmíthơnsốẩnsốnthìnghiệmkhôngduynhất.Giảsửmhàng
củamatrậnhệsố[A]làđộclậpthìvectơnchiềucóthểphântíchthànhhai
thànhphần:

[] [] []
xx x
+−
=+(2)
Trongđómộtmatrậnlàmatrậnkhônggianhàngcủamatrận[A]vàđược
viếtdướidạngtổhợpcủa:
[] [ ][]
T
xA
+
=α(3)
vàmatrậnkialàmatrậnkhônggiankhôngsaocho:

[][]
Ax 0

= (4)
Nhưvậy:


0T0T
T
AAAAb

+
⎡⎤
α= α=
⎣⎦
(7)
Điềunàythoảmãnphươngtrình[A][x]=[b].Tuynhiênnókhônglànghiệm
duy nhất vìnếu thêm bấtkì một vectơ[x] thoảmãn (4) thìnó sẽ cũng là
nghiệm.MATLABdùnglệnh
pinvđểgiảihệ(ctpinv.m)


A=[12];
b=3;
x=pinv(A)*b

3.Trườnghợpsốphươngtrìnhnhiềuhơnsốẩn(nghiệmsaisốbìnhphương
bénhất)
:Nếusốphươngtrìnhmlớnhơnsốẩnsốnthìkhôngtồntạinghiệm
thoảmãnđầyđủcácphươngtrình.Tacốgắngtìmvectơnghiệmcósaisố[e]
nhỏnhất.

[] [ ][]
[]
eAxb=−(8)
Vậythìbàitiámcủatalàcựctiểuhoáhàm:


⎣⎦
⎣⎦

 (10)

137
Chúýlàmatrận[A]cósốhànglớnhơnsốc ộtchonênkhôngnghịchđảo
được.Nghiệmsaisốbìnhphươngbénhấttìmđượcnhớdùnglệnh
pinvhay
phépchiatrái(
ctover.m):
 
A=[1;2];
b=[2.1;3.9];
x=pinv(A)*b
x=A\b
x=(Aʹ*A)^‐1*Aʹ*b


Để tiện dùng ta viết hàm
pttt()đểgiải hệ phương trình trong cả 3
trườnghợptrên

functionx=pttt(A,B)
%HamnaytimnghiemcuaptAx=B
[M,N]=size(A);
ifsize(B,1)~=M
error(ʹKichthuocAvaBtrongpttt()khongbangnhau!ʹ)

end

ax ax ax b
ax ax ax b
++=


++=


++=

(1)
)Trướchếttakhửx1rakhỏicácphươngtrình,ngoạitrừphươngtrìnhđầu 
tiên,bằngcáchnhânphươngtrìnhđầutiênvớia
i1/a11(ilàchỉsốhàng)vàtrừ
đimỗiphươngtrìnhđó:

(0) (0) (0) (0)
11 1 12 2 13 3 1
(1) (1) (1)
22 2 23 3 2
(1) (1) (1)
32 2 33 3 3
ax ax ax b
ax ax b
ax ax b

++=

+=


11
a
b
bb
a
=−  vớii,j=2,3
Việcnàygọilàlấytrụtạia
11vàphầntửa11gọilàtrụ.
)Tiếptheotakhửx2trongphươngtrìnhthứ3của(2)bằngcáchlấyphương
trìnhthứ2nhânvới
(1) (1)
i2 22
a/a(i=3)vàtrừđiphươngtrìnhthứ3:

(0) (0) (0) (0)
11 1 12 2 13 3 1
(1) (1) (1)
22 2 23 3 2
(2) (2)
33 3 3
ax ax ax b
ax ax b
ax b

++=

+=


=

(k) (k 1) (k 1)
ik
ij ij kj
(k 1)
kk
(k 1)
(k) (k1) (k1)
ik
ii k
(k 1)
kk
a
a a a i,j k 1,k 2, ,m
a
a
b
b b i k 1,k 2, ,m
a

−−


−−

=− =++
=− =++
  (5)
ĐểthựchiệnthuậttoánkhửGausstadùngđoạnmãlệnh:

139

22
b
ax
x
a

= (6b)
vàcuốicùngtừphươngtrìnhthứnhấttacó:

3
(0) (0)
111jj
(0)
j2
11
1
xbax
a
=
⎛⎞
=−
⎜⎟
⎝⎠

(6c)
Tacũngcóthểtổngquáthoáquátrìnhtìmnghiệmbằngcáchtính lùivàtìm
nghiệmbằng:

m
(i 1) (i 1)

functionv=swaprows(v,i,j)
%Traodoihangivahangjcuamatranv.
%Cuphap:v=swaprows(v,i,j)
temp=v(i,:);
v(i,:)=v(j,:);
v(j,:)=temp;


Taxâydựnghàm
gauss()đểthựchiệnthuậttoánkhửGauss

functionx=gauss(A,B)
%KichthuoccuamatranA,BlaNAxNAvaNAxNB.
%HamnaydunggiaiheptAx=BbangphuongphapkhuGauss
NA=size(A,2);
[NB1,NB]=size(B);
ifNB1~=NA
error(ʹAvaBphai
cokichthuoctuongungʹ);
end
N=NA+NB;
AB=[A(1:NA,1:NA)B(1:NA,1:NB)];
epss=eps*ones(NA,1);
fork=1:NA
%ChontruAB(k,k)
[akx,kx]=max(abs(AB(k:NA,k))./ 
max(abs([AB(k:NA,k+1:NA)epss(1:NA‐k+1)]ʹ))ʹ);
ifakx<eps

error(ʹMatransuybienvanghiemkhongduynhatʹ);

x=gauss(A,b)

2.PhươngphápkhửGauss‐Jordan:XéthệphươngtrìnhAX=B.Khigiảihệ
bằngphươngphápGausstađưanóvềdạngmatrậntamgiácsaumộtloạt
biếnđổi.PhươngphápkhửGauss‐JordancảitiếncáchkhửGauss
bằngcách
đưahệvềdạng:
 [E][X]=[B
*
]
vàkhiđónghiệmcủa hệchính là  [B
*
].TrongphươngphápGauss‐Jordan
mỗibướctínhphảitínhnhiềuhơnphươngphápGaussnhưnglạikhôngph ải
tínhnghiệm.Đểđưamatrận[A]vềdạngma trận[E]tạibướcthứi
taphảicó
a
ii=1vàaij=0.Nhưvậytạilầnkhửthứitabiếnđổi:
 1.a
ij=aij/aii(j=i+1,i+2, ,n)
 2.k=1,2, ,n
a
kj=akj‐aijaki(j=i+1,i+2, ,n)
b
k=bk‐biaki
Để giải hệ phương trình bằng phương pháp Gauss‐Jordan ta tạo rahàm
gaussjordan()

functionx=gaussjordan(A,B)
%KichthuoccuamatranA,BlaNAxvaNAxNB.

ctgaussjordan.mgiảihệ:

clearall,clc
 a=[531;2‐11;1‐1‐1];
b=[9;2;‐1];
x=gaussjordan(a,b)

§4.GIẢIHỆPHƯƠNGTRÌNHBẰNGCÁCHPHÂNTÍCHMATRẬN
1.Kháiniệmchung
:Mộtmatrậnkhôngsuybiến[A]gọilàphântíchđược
thànhtíchhaimatrận[L]và[R]nếu:
 [A]=[L][R]
Việcphântíchnày,nếutồntại,làkhông duynhất.Nếuma
trận[L]cócác
phầntửnằmtrênđườngchéochínhbằng1,tacóphépphântíchDoolittle.

143
Nếumatrận[R]cócácphầntửnằmtrênđườngchéochínhbằng1,tacóphép
phântíchCrout.Nếu[R]=[L]
T
(hay[L]=[R]
T
)tacóphépphântíchCholeski.

2.PhântíchDoolittle:Taxéthệphươngtrình[A][X]=[B].Nếutaphântích
matrận[A]thànhtíchhaimatrận[L]và[R]saocho:
 [A]=[L][R]
trongđó[L]làmatrậntamgiáctráivà[R]làmatrậntam
giácphải.Vởima
trậnbậc3[L]và[R]códạng:

n=size(A,1);
[l,r]=doolittle(A);
%timnghiemmttamgiactrai
y(1,:)=b(1)/l(1,1);
form=
2:n
y(m,:)=(b(m)‐l(m,1:m‐1)*y(1:m‐1,:))/l(m,m);
end
%timnghiemmttamgiacphai
x(n,:)=y(n)/r(n,n);
form=n‐1:‐1:1
x(m,:)=(y(m)‐r(m,m+1:n)*x(m+1:n,:))/r(m,m);
end

144
Ápdụnghàmdoolittlesol()giảihệphươngtrình:
1
2
3
436x 1
8310x 0
412 10x 0

⎡⎤⎡⎤⎡⎤
⎢⎥⎢⎥⎢⎥
−=
⎢⎥⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥
−−
⎣⎦⎣⎦⎣⎦


Khigiảiphươngtrìnhtachươngtrình
ctcrout.m:


clearall,clc
a=[4820;61316;2016‐91];
b=[24;18;‐110];

145
x=croutsol(a,b)

4. Phân tích Choleski: Sau khi phân tích ma  trận [A] theo thuật toán
Choleski,hệphươngtrình[A][X]=[B]trởthành:
 [L][L]
T
[X]=[B]
Trước hêt ta tìm nghiệm của hệ phương trình [L][Y] = [B] và sauđó tìm
nghiệm[X]từhệphươngtrình][L]
T
[X]=[Y].Taxâydựnghàmcholeskisol()
đểthựchiệnthuậttoánnày:

functionx=choleskisol(a,b)
%GiaiheptbangthuattoanCholeski
%Cuphap:x=choleskisol(a,b)
n=size(a,1);
l=choleski(a);
r=lʹ;
y(1,:)=b(1)/l(1,1);

[4‐22;‐22‐4;2‐411];
b=[6;‐10;27];
x=choleskisol(a,b)


146
5.PhântíchQR:Taxéthệphươngtrình[A][X]=[B].Phântíchmatrận[A]
thànhtíchcủahaimatrận[Q]và[R]saocho:
 [A]=[Q]*[R]
Trongđó[Q]làmatrậntrựcgiao,nghĩalà[Q]
T
[Q]=[E],và[R]làmatrậntam 
giácphải.Nhưvậyphươngtrìnhtrởthành:
 [Q]*[R]*[X]=[B]
Nhânhaivêcủaphươngtrìnhvới[Q]
T
tacó:
 [Q]
T
[Q]*[R]*[X]=[Q]
T
[B]
hay:
 [R]*[X]=[Q]
T
[B]
Hệphươngtrìnhnàydễdàngtìmnghiệmvỉ[R]làmatrậntamgiác.Khigiải
hệphươngtrìnhtadùngchươngtrình
ctqrsol.m:


⋅⋅⋅
⎢⎥
⋅⋅⋅
⎢⎥
=
⎢⎥
⎢⎥
⎢⎥
⎢⎥
⎣⎦
M
MMMMOM
L

Talưucácphầntửkhác0của[A]dướidạngvectơ:

[]
[]
[]
1
11
2
22
n1
n1 n1
n
d
ce
d
ce

và: d
k‐(ck‐1/dk‐1)×ek‐1→dk
Đểhoàntấtthuậtviệcphântích,talưuhệsốλ=ck‐1/dk‐1vàovịtrícủack‐1
trướcđó
 ck‐1/dk‐1→ck‐1
Nhưvậythuậttoánphântíchmatrậnlà:


fork=2:n
lambda=c(k‐1)/d(k‐1);
d(k)=d(k)‐lambda*e(k‐1)
c(k‐1)=lambda;
end

Sauđótatìmnghiệmcủaphươngtrình[L][R][X]=[B]bằngcáchgiảiphương
trình[L][Y]=[B]vàsauđólàphươngtrình[R][X]=[Y].Phươngtrình[L][Y]=
[B]códạng:
1
1
12
2
23
3
34
4
n1 n
n
1000 0y
b
c100 0y



⎢⎥⎢⎥
⎣⎦⎣⎦


L
L
L
L
MMMMLML
L

đểtìmnghiệm[Y]bằngcáchthaythếtiếntadùngđoạnlệnh:

y(1)=b(1);
fork=2:n
 y(k)=b(k)‐c(k‐1)*y(k‐1);
end

Phươngtrình[R][X]=[Y]códạng:

148

11
11
22
22
33
33

⎢⎥

⎥⎢⎥
⎢⎥

⎥⎢⎥
⎢⎥

⎥⎢⎥

⎦⎣⎦
⎣⎦
L
L
L
L
LL
MMMMLM

đểtìmnghiệm[X]bằngcáchthaythếlùitadùngđoạnlệnh:

x(n)=y(n);
fork=n‐1:‐1:1
 x(k)=(y(k)‐e(k)*x(k+1))/d(k);
end


Taxâydựnghàm
band3()đểphântíchmatrậndạngđườngchéo:


Tadùngchươngtrình
ctband3eq.mđểgiảihệphươngtrình:

clearall,clc
c=
[‐1;‐2;3;3];
d=[67875]ʹ;
e=[222‐2]ʹ;
b=[2;‐3;4;‐3;1];
x=band3sol(c,d,e,b);

2.Matrậnđườngchéođốixứngbậc5:Khigiảiphươngtrìnhviphânthường
bậc4tathườnggặpmộthệphươngtrìnhđạisốtuyếntínhdạngbăngđối
xứngcóbềrộngbằng5.Matrận[A]khiđócó
dạng:

[]
111
1222
1233 3
23 4
n4 n3 n2 n2 n2
n3 n2 n1 n1
n2 n1 n
de f 0 0 0 0
ede f 0 0 0
fede f 0 0
0f e d 0
A
00fedef


150
[]
[]
[]
1
1
11
2
2
n2
n2
n1 n2
n1
n
d
e
df
e
f
def
d
e
df
e
d


−−


M
M
M


Tathựchiệnthuậttoánbiếnđổimatrận:
 hàng(k+1)‐(e
k/dk)×hàngk→hàng(k+1)
hàng(k+2)‐(fk/dk)×hàngk→hàng(k+2)
Cácsốhạngbịthayđổitheothuậttoánnàylà:
 d
k+1‐(ek/dk)ek→dk+1
ek+1‐(ek/dk)fk→ek+1
 d
k+2‐(fk/dk)fk→dk+2
vàlưutrữlại:
 e
k/dk→ekfk/dk→fk
saukhiđãbiếnđổimatrận,tagiảihệphươngtrìnhcómatrậntamgiác.
 Hàm
band5()dùngđểphântíchmatrận:

function[d,e,f]=band5(d,e,f)
%A=[f\e\d\e\f].
%Cuphap:[d,e,f]=band5(d,e,f)
n=length(d);
fork=1:n‐2
lambda=e(k)/d(k);
d(k+1)=d(k+1)‐lambda*e(k);
e(k+1)=e(k+1)‐lambda*f(k);

1120 0 0 x 4
1231 0 0 x 7
2332 2 0 x 12
0121 2 1 x 7
0022 2 1x 5
0001 1 1 x 1
⎡⎤⎡⎤⎡⎤
⎢⎥⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥
=
⎢⎥⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥

⎢⎥⎢⎥⎢⎥

⎣⎦⎣⎦⎣⎦

tadùngchươngtrình
cban5eq.m

clearall,clc
d=[123121]ʹ;
e=[1322‐1]ʹ;
f=[2121]ʹ;
b=[4712751];
x=band5sol(d,e,f,b)



lặp Jacobi nhưng không nhanh bằngcác phương pháp lặp khôngổn
định.
•PhươngpháplặpcótăngSOR:Ph
ươngphápnàyđưaratừphương
phápGauss‐Seidelbằngcáchđưathêmhệsốngoạisuyω.Vớiωđược
chọntốiưu,phươngphápnàyhộitụnhanhhơnphươngphápGaus‐
Seidel.Khiω=1
phươngphápSORtrởthànhphươngphápGauss‐
Seidel.TốcđộhộitụcủaphươngphápSORphụthuộcvàoω
•PhươngpháplặpcótăngđốixứngSSOR:Phươngphápnàykhôngcó
ưuđiểmnào
trộihơnSOR.
Cácphươngpháplặpkhôngổnđịnhmớiđượcxâydựng,khóhiểu,nhưng
hiệuquảcao.Trongquátrìnhlặp,việctínhtoánbaohàmcácthôngtinthay
đổisaumỗibướ
ctính.
Cácphươngphápnàybaogồm:
• Phương pháp gradient liên hợp CG(Conjugate  Gradient): Phương
phápnàytạoramộtdãycácvectơliênhợp(haytrựcgiao)làsốdưcủa
phéplặp.Chúngcũng
làgradientcủamộthàmbậc2màviệctìmcực
tiểu tươngđương với việc giải hệ phương trìnhđại số tuyến tính.
Phương pháp CG rất hiệu quả khi ma trận [A]đố
i xứng, xácđịnh
dương ví chỉ đòi hỏi lưu trữ một số ít phần tử. Tốcđộhội tụ của
phươngphápnàyphụthuộc
sốđiềukiệncủamatrận(sốđiềukiệncủa
matrậnđođộnhạycủanghiệmcủah ệphươngtrìnhđạisốtuyếntính

153

kếthợp
cácnàybằngbàitoánbìnhphươngbénhấtđểgiảivàcậpnhật.
Tuynhiênnóđòihỏilưutoànbộdãy.Dovậyphươngánkhởiđộnglại
được dùngtrongphương pháp này.Phương
phápnày tiệndùng khi
matrậnhệsốkhôngđốixứng.
• Phương pháp gradient liên hợp kép BiCG(Biconjugate Gradient):
PhươngphápnàytạotahaidãyvectơgiốngnhưCG,mộtdựatrênhệ
vớimatr
ận[A]vàmộtd ựatrên[A]
T
.Thayvìtrựcgiaohoámỗidãy,
chúngtrựcgiaotươnghỗhai“trựcgiaokép”.Nórấthữuítkhimatrận
cómatrậnhệsốkhôngđốixứng,khôngsuybiến.
• Phương pháp g
ần như số dư cực tiểu QMR(Quasi‐Minimal
Residual):PhươngphápQMRdùngbìnhphươngtốithiểuđểgiảivà
cậpnhậtsốdưBiCG.Phươngphápnàydùngchohệphươngtrìnhcó
matrậnhệsốkhôngđố
ixứng.
• Phương pháp gradient liên hợp bậc 2 CGS(Conjugate Gradient
Squared):PhươngphápCGSlàmộtbiếnthểcủaBiCG,dùngcậpnhất
dãy[A]và[A]
T
.Phươngphápnàycóưuđiểmlàkhôngcầnnhânvới
matrậnhệsốchuyểnvịvàđượcdùngchohệphươngtrìnhđạisốtuyến
tínhcómatrậnhệsốkhôngđốixứng.
•Phương
phápgradientliênhợpképổnđịnhBiCGSTAB(Biconjugate
GradientStabilized):PhươngphápBiCGSTABcũnglàmộtbiếnthểcủa

§7.PHƯƠNGPHÁPLẶPJACOBI
XéthệphươngtrìnhAX=F.Bằngcáchnàođótađưah ệphươngtrình
vềdạng
 X=BX+G
trongđó:
 B=(b
ij)n,n
 G=(g
1,g2, ,gn)
T

Chọnvectơ:
 X=(x
1
(o)
,x2
(o)
, ,xn
(o)
)
T

làmxấpxỉthứ0củanghiệmđúngvàxâydựngxấpxỉ
 X
(m+1)
=BX
(m)
+G(m=0,1, )
Ngườitachứngminhrằngnếuphươngtrìnhbanđầucónghiệmduy
nhấtvàmộttrongbachuẩncủamatrậnBnhỏhơn1thìdãyxấpxỉhộ

n
1j
2
ij
3
bB








=
∑∑
==

(Chuẩncủamatrậnquanhệtớisựhộitụcủaphươngpháplặp)
Taxâydựnghàm
jacobi()đểthựchiệnthuậttoántrên:

functionx=jacobi(a,b,x0,kmax)
%TimnghiemcuaptAx=BbangthuattoanJacobi.
%Cuphap:x=jacobi(a,b,x0,kmax)
%hayjacobi(a,b,x0,kmax)
ifnargin<4
tol=1e‐6;
kmax=100;%jacobi(a,b,x0)
elseifkmax<

end

Đểgiảiphươngtrìnhtachươngtrình
ctjacobi.m:

 b=[1‐1]ʹ;
a=[
32;12];
x0=[00]ʹ;
x=jacobi(a,b,x0,20)

§8.PHƯƠNGPHÁPLẶPGAUSS‐SEIDEL
PhươngpháplặpGauss‐SeidelđượccảitiếntừphươngphápJacobi.
Nộidungcơbảncủaphươngpháplàởchỗkhitínhnghiệmxấpxỉthứ(k+1)
củaẩnx
itasửdụngcácxấpxỉthứ(k+1)đãtínhcủacácẩnx1, ,xi‐1.Giảsửđã
chohệ[A][X]=[B]thìtacónghiệm:
n, ,1ixx
j
n
1j
ijii
=α+β=

=

Lấyxấpxỉbanđầutuỳýx
1
(o)
,x2

)1k(
1211
)1k(
2
xxx

=
++
α+α+β= 
 

)k(
j
n
ij
ij
1i
1j
)1k(
jiji
)1k(
i
xxx
∑∑
=

=
++
α+α+β=



=++
=++
=++
14x10x2x2
13xx10x2
12xxx10
321
321
321

nghiệmđúngcủahệlà(1,1,1)
Tađưavềdạngthuậntiệnchophéplặp:






−−=
−−=
−−=
213
312
321
x2.0x2.04.1x
x1.0x2.03.1x
x1.0x1.02.1x

Lấyx

(2)
2
(2)
3
x 1.2 0.1 1.06 0.1 0.948 0.9992
x 1.3 0.2 0.9992 0.1 0.948 1.00536
x 1.4 0.2 0.9992 0.2 1.00536 0.999098

=−× −× =

=−× −× =


=−× −× =



vàcứthếtiếptụcchođếnkhihộitụ.Taxâydựnghàm
gausseidel()đểthực
hiệnthuậttoántrên:

functionx=gausseidel(a,b,x0,kmax)
%TimnghiemcuaheAX=BbangcachlapGauss–Seidel.
ifnargin<4
kmax=100;
end
ifnargin<3

158
x0=zeros(size(b));

x0=[00]ʹ;
x=gausseidel(a,b,x0,20)

§9.PHƯƠNGPHÁPLẶPRICHARDSON
 Trongcácphéplặpnóitrên,matrận[B]khôngthayđổi.Bâygiờtaxét
cácphươngpháplặpcó[B]thayđổi.Phươngphápđơngiảnnhấtlàphương
pháplặpRichardson.Tacócôngthứclặp
sau:

(k 1) (k) 1 (k)
xxPr
+−
=+α 

159
Trongđóαlàthôngsốrelaxationvàsốdưr
(k)
đượctínhbằng:

(k) (k)
rbAx=− 
Matrậnlặplầnklà:

1
kk
BE PA

=−α

Như vậy phéplặp Jacobicũng như phéplặp Gauss‐Seidel làtrường hợp

+omega*r;
ifnorm(r)<tol
break;
end
end
i

Đểgiảihệphươngtrìnhtadùngchươngtrình
ctrichardsoniter.m

clearall,clc
a=[1011;1102;2210];
b=[121314]ʹ;


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status