Khảo sát ứng dụng MATLAB trong điều khiển tự động
NHĨM L NH V C I M MƠ HÌNH Ệ Ề ĐẶ Đ Ể
(Model Properties)
1. L nh COVAR, DCOVARệ
a) Cơng d ngụ : (Purpose)
Tìm đáp ng hi p ph ng sai đ i v i nhi u tr ng (white noise).ứ ệ ươ ố ớ ễ ắ
b) Cú pháp: (Syntax)
[P,Q]= covar(a,b,c,d,w)
P = covar(num,den,w)
[P, Q]= dcovar(a,b,c,d,w)
P = dcovar(num,den,w)
c) Gi i thíchả : (Description)
Covar tính các ngõ ra c đ nh và đáp ng hi p ph ng sai tr ng thái c a m t h th ng đ i v iố ị ứ ệ ươ ạ ủ ộ ệ ố ố ớ
các ngõ vàonhi u tr ng Gaussian v i c ng đ w:ễ ắ ớ ườ ộ
E[w(t)w(τ)’]= wδ(t -τ)
[P,Q]= covar(a,b,c,d,w) tìm đáp ng hi p ph ng sai c a h khơng gian tr ng thái liên t c.ứ ệ ươ ủ ệ ạ ụ
BuAxx
+=
.
y = Cx + Du
đ i v i nhi u tr ng v i c ng đ w t t t c các ngõ vào t i t t c tr ng thái và ngõ ra:ố ớ ễ ắ ớ ườ ộ ừ ấ ả ớ ấ ả ạ
P = E[yy’]
Q = E[xx’]
H th ng ph i n đ nh và ma tr n D ph i là zero.ệ ố ả ổ ị ậ ả
P = covar(num,den,w) tìm đáp ng hi p ph ng sai ngõ ra h SIMO c a hàm truy n đa th cứ ệ ươ ệ ủ ề ứ
G(s)= num(s)/den(s)
trong đó num và den ch a các h s đa th c theo chi u gi m d n s m c a s, wlà c ng đứ ệ ố ứ ề ả ầ ố ũ ủ ườ ộ
nhi u ngõ vào.ễ
tìm đáp ng hi p ph ng sai c a h gián đo n ta dùng l nh dcovar thay cho covar. Để ứ ệ ươ ủ ệ ạ ệ
d) Ví dụ 1: (Exemple)
Tìm đáp ng hi p ph ng sai do nhi u tr ng Gaussian c a h SISO v i c ng đ w=2 cóứ ệ ươ ễ ắ ủ ệ ớ ườ ộ
hàm truy n:ề
Thực hiện: PHẠM QUỐC TRƯỜNG - 1 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
32
15
)(
2
++
+
=
ss
s
sH
num = [5 1];
den = [1 2 3];
P = covar(num,den,2)
Ta đ c: P = 12.6667ượ
2. L nh CTRB, OBSVệ
a) Cơng d ngụ :
T o ma tr n có th đi u khi n và có th quan sát.ạ ậ ể ề ể ể
b) Cú pháp:
co = ctrb(a,b)
ob = obsv(a,c)
c) Gi i thíchả :
co = ctrb(a,b) t o ma tr n có th đi u khi n Cạ ậ ể ề ể
0
= [B ABA
2
B ……… A
n-1
B] cho h khơng gianệ
tr ng thái ob = obsv(a,c) t o ma tr n có th quan sát Oạ ạ ậ ể
b
cho h khơng gian tr ng thái.ệ ạ
O
b
=
−
1
2
n
CA
CA
CA
C
H th ng có th đi u khi n đ c n u h ng c a ma tr n Co là n và có th quan sát đ c n uệ ố ể ề ể ượ ế ạ ủ ậ ể ượ ế
h ng c a ma tr n Ob là n.ạ ủ ậ
d) Ví dụ:
Dùng l nh ctrb và obsv đ ki m tra h th ng (a,b,c,d) có th đi u khi n đ c hay có thệ ể ể ệ ố ể ề ể ượ ể
quan sát đ c hay khơng:ượ
% Nh p hàm truy n và xác đ nh khơng gian tr ng thái:ậ ề ị ạ
num = [2 3];
den = [1 4 7];
[a,b,c,d]= tf2ss(num,den)
% Xác đ nh ma tr n có th đi u khi n và ma tr n có th quan sát:ị ậ ể ề ể ậ ể
co = ctrb(a,b)
ob = obsv(a,c)
% s tr ng thái khơng th đi u khi n đ c:ố ạ ể ề ể ượ
Thực hiện: PHẠM QUỐC TRƯỜNG - 2 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
unco = length(a) – rank(co)
% s tr ng thái khơng th quan sát đ c:ố ạ ể ượ
unob = length(a) – rank(ob)
Cu i cùng ta đ c k t qu :ố ượ ế ả
a =
-4 -7
1 0
b =
1
0
c =
2 3
d = 0
co =
1 -4
0 1
unco = 0
ob =
2 3
-5 -14
unob = 0
3. L nh DAMP, DDAMPệ
a) Cơng d ngụ :
Tìm t n s t nhiên (Natural Frequencies) và h s t t d n (Damping Factors).ầ ố ự ệ ố ắ ầ
b) Cú pháp:
[wn,Z]= damp(a)
mag= ddamp(a)
[mag,Wn,Z]= ddamp(a,Ts)
c) Gi i thíchả :
Damp và ddamp tính t n s t nhiên và h s t t d n. N u b các đ i s bên trái trong các l nhầ ố ự ệ ố ắ ầ ế ỏ ố ố ệ
này thì ta nh n đ c m t b ng các giá tr riêng, t l t t d n và t n s t nhiên trên màn hình.ậ ượ ộ ả ị ỉ ệ ắ ầ ầ ố ự
Thực hiện: PHẠM QUỐC TRƯỜNG - 3 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
[wn,Z]= damp(a) t o ra vector c t Wn và Z ch a các t n s t nhiên wn, h s t t d n c aạ ộ ứ ầ ố ự ệ ố ắ ầ ủ
các giá tr riêng liên t c (Continous eigenvalues) đ c tính t a. Bi n a có th là m t trong các d ngị ụ ượ ừ ế ể ộ ạ
sau:
+ N u a là ma tr n vng thì a đ c xem nh là ma tr n khơng gian tr ng thái A.ế ậ ượ ư ậ ạ
+ N u a là vector hàng thì nó đ c xem nh là vector ch a các h s đa th c c a hàm truy n.ế ượ ư ứ ệ ố ứ ủ ề
+ N u a là vector c t thì a ch a các nghi m.ế ộ ứ ệ
Mag = damp(a) t o ra vector c t mag ch a biên đ các giá tr riêng gián đo n đ c tính t a. a ạ ộ ứ ộ ị ạ ượ ừ
có th là m t trong các d ng đ c nói đ n trên. ể ộ ạ ượ ế ở
[mag,Wn,Z]= ddamp(a,Ts) t o ra các vector mag, Wn và Z ch a các biên đ , t n s t nhiênạ ứ ộ ầ ố ự
trong m t ph ng s t ng ng và h s t t d n c a các giá tr riêng c a a. Ts là th i gian l y m u.ặ ẳ ươ ứ ệ ố ắ ầ ủ ị ủ ờ ấ ẫ
H s t t d n và t n s t nhiên trong m t ph ng s t ng ng c a các giá tr riêng gián đo n ệ ố ắ ầ ầ ố ự ặ ẳ ươ ứ ủ ị ạ λ là:
ω
n
=
Ts
λ
log
ζ = -cos(∠ log λ)
d) Ví dụ: (Trích t trang 11-52 sách ừ ‘Control System Toolbox’)
Tính và hi n th các giá tr riêng, t n s t nhiên và h s t t d n c a hàm truy n liên t c sau:ể ị ị ầ ố ự ệ ố ắ ầ ủ ề ụ
32
152
)(
2
2
++
++
=
ss
ss
sH
num = [2 5 1];
den = [1 2 3];
damp(den)
Eigenvalue Damping Freq.(rad/sec)
-1.0000 + 1.4142i 0.5774 1.7321
-1.0000 + 1.4142i 0.5774 1.7321
Tính và hi n th các giá tr riêng, biên đ , t n s và h s t t d n trong m t ph ng s t ng ngể ị ị ộ ầ ố ệ ố ắ ầ ặ ẳ ươ ứ
c a hàm truy n gián đo n v i th i gian l y m u Ts = 0.1:ủ ề ạ ớ ờ ấ ẫ
8.06.1
5.14.32
)(
2
2
+−
+−
=
sz
zz
zH
num = [2 -3.4 1.5]
den = [1 -1.6 0.8]
ddamp(den,0.1)
Eigenvalue Magnitude Equiv.Damping Equiv.Freq (rad/sec)
0.8000 + 0.4000i 0.8944 0.2340 4.7688
Thực hiện: PHẠM QUỐC TRƯỜNG - 4 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
0.8000 – 0.4000i 0.8944 0.2340 4.7688
4. L nh ệ DCGAIN, DDCGAIN
a) Cơng d ngụ :
Tìm đ l i tr ng thái xác l p c a h th ng.ộ ợ ạ ậ ủ ệ ố
b) Cú pháp:
k = dcgain(a,b,c,d)
k = dcgain(num,den)
k = ddcgain(a,b,c,d)
k = ddcgain(num,den)
c) Gi i thíchả :
dcgain dùng đ tính đ l i tr ng thái xác l p (DC hay t n s th p) c a h th ng. ể ộ ợ ạ ậ ầ ố ấ ủ ệ ố
k = dcgain(a,b,c,d) tính đ l i tr ng thái xác l p c a h khơng gian tr ng thái liên t c:ộ ợ ạ ậ ủ ệ ạ ụ
BuAxx
+=
.
y = Cx + Du
t t t c các ngõ vào t i t t c các ngõ ra:ừ ấ ả ớ ấ ả
K = -CA
-1
+ D
k = dcgain(num,den) tính đ l i tr ng thái xác l p c a hàm truy n đa th c:ộ ợ ạ ậ ủ ề ứ
G(s) =
)(
)(
sden
snum
trong đó num và den ch a các h s đa th c theo th t gi m d n s m c a s:ứ ệ ố ứ ứ ự ả ầ ố ũ ủ
K =
0
)(
)(
=s
sden
snum
tính đ l i DC c a h gián đo n ta dùng l nh ddcgain thay cho l nh dcgain. i v i hĐể ộ ợ ủ ệ ạ ệ ệ Đố ớ ệ
khơng gian tr ng thái xác l p, ma tr n đ l i DC là:ạ ậ ậ ộ ợ
K = C(I – A)
-1
+ D
Và đ i v i hàm truy n gián đo n, t đ L I DC là:ố ớ ề ạ ộ ợ
K =
1
)(
)(
=z
zden
znum
d) Ví d 1ụ :
Tính đ l i DC c a h th ng có hàm truy n:ộ ợ ủ ệ ố ề
32
152
)(
2
2
++
++
=
ss
ss
sH
num = [ 2 5 1];
den = [1 2 3];
k = dcgain(num,den)
k = 0.3333
Ví d 2: Tính đ l i DC c a h khơng gian tr ng thái MIMO:ụ ộ ợ ủ ệ ạ
−
+
−−
=
v
u
x
x
x
x
2231.00
5397.01
07814.0
7814.05572.0
2
1
2
.
1
.
Thực hiện: PHẠM QUỐC TRƯỜNG - 5 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
+
=
v
u
x
x
z
y
00
00
01
4493.69691.1
2
1
a = [-0.5572 -0.7814 ; 0.7814 0];
b = [1 0.5379 ; 0 -0.2231];
c = [1.9691 6.4493 ; 1 0];
d = [0 0 ; 0 0];
k = dcgain(a,b,c,d)
k =
8.2466 3.6861
0 0.2855
5. L nh GRAM, DGRAM ệ
a) Cơng d ngụ :
ánh giá kh n ng đi u khi n và kh n ng quan sát.Đ ả ă ề ể ả ă
b) Cú pháp:
Gc = gram(a,b)
Go = gram(a’,c’)
Gc = dgram(a,b)
Go = dgram(a’,c’)
c) Gi i thíchả :
gram tính tốn kh n ng đi u khi n và kh n ng quan sát. S đánh giá này có th đ c dùng đả ă ề ể ả ă ự ể ượ ể
nghiên c u đ c tính đi u khi n và đ c tính quan sát c a các h khơng gian tr ng thái và gi m b cứ ặ ề ể ặ ủ ệ ạ ả ậ
mơ hình.
gram(a,b) t o ra s đánh giá kh n ng đi u khi n Gạ ự ả ă ề ể
c
:
G
c
=
τ
ττ
dBB
ee
AA '
0
'
∫
∞
đó là m t ma tr n đ i x ng; h n n a, n u ma tr n có h ng đ (b ng kích th c c a maộ ậ ố ứ ơ ữ ế ậ ạ ủ ằ ướ ủ
tr n đánh giá) thì h th ng có th đi u khi n đ c. ậ ệ ố ể ề ể ượ
Go = gram(a’,c’) t o ra s đánh giá kh n ng quan sát Gạ ự ả ă
o
:
G
o
=
τ
ττ
dCC
ee
AA '
0
'
∫
∞
N u ma tr n đánh giá có h ng đ thì h th ng có th quan sát đ c.ế ậ ạ ủ ệ ố ể ượ
dgram dùng cho các h th ng gián đo n.ệ ố ạ
d) Ví dụ:
Xác đ nh kh n ng đi u khi n c a h kơng gian tr ng thái ví d v l nh dcgrainị ả ă ề ể ủ ệ ạ ở ụ ề ệ
a = [-0.5572 -0.7814 ; 0.7814 0];
b = [1 0.5379 ; 0 -0.2231];
c = [1.9691 6.4439 ; 1 0];
d = [0 0 ; 0 0];
Gc = gram(a,b)
Ta nh n đ c ma tr n:ậ ượ ậ
Gc =
Thực hiện: PHẠM QUỐC TRƯỜNG - 6 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
1.2016 -0.0318
-0.0318 1.0708
Tìm h ng ma tr n b ng l nh:ạ ậ ằ ệ
r = rank(Gc)
ta đ c r = 2 và b ng kích th c c a ma tr n đánh giá. V y h th ng này có th đi u khi nượ ằ ướ ủ ậ ậ ệ ố ể ề ể
đ c.ượ
6. L nh DSORT, ESORT ệ
a) Cơng d ngụ :
S p x p các giá tr riêng theo th t ph n th c ho c biên đ s ph c.ắ ế ị ứ ự ầ ự ặ ộ ố ứ
b) Cú pháp:
s = dsort(p)
[s,ndx] = dsort(p)
s = esort(p)
[s,ndx] = esort(p)
c) Gi i thíchả :
s = esort(p) x p các giá tr riêng ph c trong vector p theo th t gi m d n c a ph n th c.ế ị ứ ứ ự ả ầ ủ ầ ự
i v i các giá tr riêng liên t c, các giá tr riêng khơng n đ nh xu t hi n tr c. Đố ớ ị ụ ị ổ ị ấ ệ ướ
s = dsort(p) x p các gí tr riêng ph c trong vector p theo th t gi m d n c a biên đ . iế ị ứ ứ ự ả ầ ủ ộ Đố
v i các giá tr riêng gián đo n, cá giá tr riêng khơng n đ nh xu t hi n tr c.ớ ị ạ ị ổ ị ấ ệ ướ
[s,ndx] = dsort(p) hay [s,ndx] = esort(p) c ng t o ra vector ndx ch a các ch s dùng theoũ ạ ứ ỉ ố
th t .ứ ự
d) Ví dụ:
X p các ph n t c a vector p = [2+3jế ầ ử ủ -3+j 1-9j 3-7j 5+2j 6-j] theo th t gi m d nứ ự ả ầ
c a phân th c và đ l n s ph c.ủ ự ộ ớ ố ứ
p = [2+3j -3+j 1-9j 3-7j 5+2j 6-j]
% X p theo th t gi m d n c a đ l n s ph c:ế ứ ự ả ầ ủ ộ ớ ố ứ
s = dsort(h)
s =
1.0000 + 9.0000j
3.0000 + 7.0000j
6.0000 + 1.0000j
5.0000 – 2.0000j
2.0000 + 3.0000j
-3.0000 + 1.0000j
% X p theo th t gi m d n c a ph n th c:ế ứ ự ả ầ ủ ầ ự
s’ = esort(h)
6.0000 + 1.0000j
5.0000 – 2.0000j
3.0000 + 7.0000j
2.0000 – 3.0000j
1.0000 + 9.0000j
-3.0000 – 1.0000j
Thực hiện: PHẠM QUỐC TRƯỜNG - 7 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
7. L nh EIG ệ
a) Cơng d ngụ :
Tìm các giá tr riêng và các vector riêng c a h th ng. ị ủ ệ ố
b) Cú pháp:
E = eig(X)
[V,D] = eig(X)
[V,D] = eig(X)
[V,D] = eig(X,’nobalance’)
E = eig(A,B)
[V,D] = eig(A,B)
c) Gi i thíchả :
E = eig(X) là m t vector ch a các giá tr riêng c a ma tr n vng X.ộ ứ ị ủ ậ
[V,D] = eig(X) t o ra m t ma tr n đ ng chéo D c a các giá tr riêng và ma tr n đ v i các c tạ ộ ậ ườ ủ ị ậ ủ ớ ộ
là các vector riêng t ng ng đ cho X*V = V*D.ươ ứ ể
[V,D] = eig(X,’nobalance’) gi ng nh [V,D] = eig(X) nh ng b qua s cân b ng. Cách nàyố ư ư ỏ ự ằ
đơi khi cho k t qu chính xác h n. ế ả ơ
E = eig(A,B) là vector ch a các giá tr riêng ph bi n c a các ma tr n vng A và B.ứ ị ổ ế ủ ậ
[V,D] = eig(A,B) t o ra ma tr n đ ng chéo D c a các giá tr riêng ph bi n và các ma tr n đạ ậ ườ ủ ị ổ ế ậ ủ
V v i các c t là các vector riêng t ng ng đ cho A*V = B*V*D.ớ ộ ươ ứ ể
d) Ví dụ:
Cho X = [2+3j -3+j 1-9j ; 3-7j 5+2j 6-j ; 0+7j 6-8j 2+5j]. tìm các giá tr riêng c aị ủ
X.
X = [2+3j -3+j 1-9j ; 3-7j 5+2j 6-j ; 0+7j 6-8j 2+5j];
[V,D] = eig(X)
V =
0.4158 + 0.3442j 0.5455 + 0.4929j 0.4344 – 0.2255j
-0.3275 + 0.3580j 0.1837 – 0.2659j 0.5974 + 0.1368j
0.1209 – 0.6772j -0.5243 + 0.2831j 0.4954 + 0.3734j
D =
-9.3743 + 4.7955j 0 0
0 9.2099 + 0.2831j 0
0 0 9.1644 – 2.2542j
8. L nh PRINTSYS ệ
a) Cơng d ngụ :
In ra các tham s c a h th ng tuy n tính ố ủ ệ ố ế
b) Cú pháp:
printsys(a,b,c,d)
printsys(a,b,c,d,ulabels,ylabels,xlabels)
printsys(num,den,‘s’)
printsys(num,den,‘z’)
c) Gi i thíchả :
Thực hiện: PHẠM QUỐC TRƯỜNG - 8 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
printsys in các tham s c a h khơng gian tr ng thái và hàm truy n theo d ng đ c bi t. iố ủ ệ ạ ề ạ ặ ệ Đố
v i h khơng gian tr ng thái, các ngõ vào, ngõ ra và tr ng tháic a h đ c đ t tên và hàm truy n đ cớ ệ ạ ạ ủ ệ ượ ặ ề ượ
hi n th d i d ng t s c a hai đa th c. ể ị ướ ạ ỷ ố ủ ứ
printsys(a,b,c,d) in ra h khơng gian tr ng thái (a,b,c,d) v i tên tham s phía trên và phía bênệ ạ ớ ố ở
trái c a ma tr n h th ng. ủ ậ ệ ố
printsys(a,b,c,d,ulabels,ylabels,xlabels) in ra h khơng gian tr ng thái v i tên tham s đ cệ ạ ớ ố ượ
ch đ nh b i các vector ulabels, ylabels và xlabels. ulabels, ylabels và xlabels ch a tên ngõ vào, ngõ raỉ ị ở ứ
và tr ng thái c a h th ng. ạ ủ ệ ố
printsys(num,den,‘s’) ho c printsys(num,den,‘z’) in ra hàm truy n d i d ng t s c aặ ề ướ ạ ỷ ố ủ
hai đa th c theo s ho c z. N u bi n c a hàm truy n (‘s’ ho c ‘z’) khơng đ c ch đ nh thì phépứ ặ ế ế ủ ề ặ ượ ỉ ị
bi n đ i Laplace (‘s’) đ c th a nh n.ế ổ ượ ừ ậ
d) Ví dụ:
Cho h khơng gian tr ng thái sau:ệ ạ
u
x
x
x
x
+
−
=
0
1
12
11
2
1
2
.
1
.
[ ] [ ]
u
x
x
y 142
2
1
+
=
In ra h khơng gian tr ng thái v i tên g i các tham s m c nhiên và v i tên đ c ch đ nh nhệ ạ ớ ọ ố ặ ớ ượ ỉ ị ư
sau: ngõ vào u là sensor, tr ng thái x là alpha và beta, ngõ ra là angle.ạ
% Khai báo h th ng:ệ ố
a = [1 1 ; 2 -1];
b = [1 ; 0];
c = [2 4];
d = 1;
% In theo tên m c nhiên:ặ
printsys(a,b,c,d)
a =
x1 x2
x1 1.00000 1.00000
x2 2.00000 -1.00000
b =
u1
x1 1.00000
x2 0
c =
x1 x2
y1 2.00000 4.00000
d =
u1
y1 1.00000
% Ch đ nh tên tham s :ỉ ị ố
Thực hiện: PHẠM QUỐC TRƯỜNG - 9 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
inputs = ‘sensor’;
outputs = ‘angle’;
states = ‘alpha beta’;
states = ‘alpha beta’;
% In theo tên đã ch đ nh:ỉ ị
printsys(a,b,c,d,inputs,outputs,states)
a =
alpha beta
alpha 1.00000 1.00000
beta 2.00000 -1.00000
b =
sensor
alpha 1.00000
beta 0
c =
alpha beta
angle 2.00000 4.00000
d =
sensor
angle 1.00000
9. L nh TZERO ệ
a) Cơng d ngụ :
Tìm zero truy n đ t c a h khơng gian tr ng thái.ề ạ ủ ệ ạ
b) Cú pháp:
z = tzero(sys)
[z,gain] = tzero(sys)
z = tzero(a,b,c,d)
c) Gi i thíchả :
z = tzero(sys) tìm các zero truy n đ t c a h th ng LTI trong sys.ề ạ ủ ệ ố
[z,gain] = tzero(sys) tìm đ l i hàm truy n n u h th ng là h SISO.ộ ợ ề ế ệ ố ệ
z = tzero(a,b,c,d) tìm zero truy n đ t c a h khơng gian tr ng thái:ề ạ ủ ệ ạ
.
x
= Ax + Bu ho c x[n + 1} = Ax[n] + Bu[n]ặ
y = Cx + Du y[n] = Cx[n] + Du[n]
d) Ví dụ:
Tìm zero truy n đ t c a h khơng gian tr ng thái sau:ề ạ ủ ệ ạ
u
x
x
x
x
+
−
=
0
1
12
11
2
1
2
.
1
.
[ ] [ ]
u
x
x
y 142
2
1
+
=
Thực hiện: PHẠM QUỐC TRƯỜNG - 10 - GVHD: PHẠM QUANG HUY
Khảo sát ứng dụng MATLAB trong điều khiển tự động
a = [1 1 ; 2 -1];
b = [1 ; 0];
c = [2 4];
d = 1;
z = tzero(a,b,c,d)
z =
-1.0000 + 2.4495j
-1.0000 – 2.4495j
Thực hiện: PHẠM QUỐC TRƯỜNG - 11 - GVHD: PHẠM QUANG HUY