You are on page 1of 17

ĐẠ I HỌ C QUỐ C GIA THÀ NH PHỐ HỒ CHÍ MINH

ĐẠ I HỌ C BÁ CH KHOA
KHOA KHOA HỌ C Ứ NG DỤ NG

ĐẠI SỐ TUYẾN TÍNH (MT1007)

BÀI TẬP LỚN


PHÂN TÍCH A=QR BẰNG PHÉP QUAY GIVEN

Giáo viên HD: Nguyễn Xuân Mỹ


Lớp: DT03

STT Họ và tên MSSV


1 Hoà ng Đứ c Nguyên 2110393
2 Đoà n Bả o Nghi 2114162
3 Bù i Nguyễ n Tú Như 2114334
4 Nguyễ n Đứ c Phá t 2212518
5 Nguyễ n Phạ m Đứ c Phú 2212584
6 Lưu Thị Trú c Như 2212467
7 Tiế t Mỹ Nghi 2114168
8 Phan Duy Quang Nhậ t 2212402
9 Nguyễn Phương Nam 2212148
10 Hồ Đình Gia Nguyê n 2212289
Email liên hệ: nguyen.hoang3@hcmut.edu.vn

THÀNH PHỐ HỒ CHÍ MINH, tháng 6 2023


Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

Mục lục
1 Cơ sở lý thuyết 2
1.1 Giớ i thiệu đề tà i........................................................................................................................2
1.2 Cơ sở lý thuyết..........................................................................................................................2
1.2.1 Ma trậ n trự c giao.........................................................................................................2
1.2.2 Phép quay Givens.........................................................................................................2
1.3 Thự c hiện phâ n rã trên ma trậ n cụ thể.................................................................................4

2 Viết chương trình 7


2.1 Code matlab...............................................................................................................................7
2.2 Giả i thích code...........................................................................................................................8
2.3 Kết quả thu đượ c khi chạ y code trên Matlab.......................................................................9
2.3.1 Ví dụ 1...........................................................................................................................9
2.3.2 Ví dụ 2.........................................................................................................................10

3 Ứng dụng 11
3.1 Ứ ng dụ ng trong cá c bà i toá n:...............................................................................................11
3.2 Ứ ng dụ ng thự c tế:...................................................................................................................11
3.2.1 Ứ ng dụ ng phâ n rã QR trong hệ thố ng thu - nhậ n MIMO (hay multiple-
input and multiple-output).......................................................................................11
3.2.2 Ứ ng dụ ng phâ n rã QR trong A.I (Artificial intelligence-trí tuệ nhâ n tạ o). 12
3.2.3 Ứ ng dụ ng củ a phâ n rã QR trong việc tìm ra quy luậ t chung (mộ t hà m số
gầ n đú ng) củ a cá c số liệu thự c tế trong vấ n đề phâ n tích dữ liệu.....................12

4 Kết luận 13

5 Phân công công việc 14

6 Tài liệu tham khảo 15

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

1 Cơ sở lý thuyết

1.1 Giới thiệu đề tài

Cho A là 1 ma trậ n kích thướ c m×n, khi nhâ n tử hó a QR củ a ma trậ n A (A=QR), vớ i Q là


ma trậ n đơn vị kích thướ c m×n, và R là ma trậ n tam giá c trê n kích thướ c m×n.
Ta có 3 phương phá p để hoà n thà nh phép phâ n tích nà y:

• Phé p quay Givens.

• Biến đổ i Household.

• Phương phá p Gram-Schmidt.

Bà i tậ p lớ n nà y, chú ng em sẽ phâ n tích về phép quay Givens.

1.2 Cơ sở lý thuyết

1.2.1 Ma trận trực giao

Ma trậ n trự c giao: là mộ t ma trậ n vuô ng, có tính chấ t ma trậ n chuyể n vị củ a nó chính bằ ng
ma trậ n nghịch đả o GT = G−1
Chú ng ta có thể thấ y cá ch cá c hà ng củ a ma trậ n đượ c phâ n tích thà nh dạ ng ma trậ n tam
giá c vớ i phé p phâ n tích PA=LU.
Để phâ n tích A= QR, chú ng ta có thể sử dụ ng cá ch tiế p cậ n tương tự , trong đó , cá c phé p
toá n biế n đổ i hà ng đượ c á p dụ ng cho ma trậ n A để biế n đổ i ma trậ n A về ma trậ n tam giá c
trê n, nế u Q1và Q2 là ma trậ n trự c giao. Khi đó , Q1.Q2cũ ng làmộ t ma trậ n trự c giao.
    −1 0
1 0 0 1 0
Ví dụ về ma trậ n trự c giao: 0 1 0,  ,  ,...
  0 1 0 1
0 0 1
Chú ng ta sẽ sử dụ ng ma trậ n trự c giao để phâ n tích A=QR, vì ma trậ n trự c giao có nghịch
đả o bằ ng chính ma trậ n chuyể n vị.

1.2.2 Phép quay Givens

Cho A thuộ c Mn(R). Tìm cá c ma trậ n trự c giao P1, P2, ..., Pk−1, Pk (là ma trậ n củ a phé p
quay trong Rn) vớ i k thuộ c N để:

(P1P2...Pk−1, Pk)A = R

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

⇒ A = (P1P2...Pk−1, Pk)−1R = QR
Vớ i Q = (P1P2...Pk−1, Pk)−1

Cá ch chọ n ma trậ n P là :

Giả sử có mộ t vectơ cộ t v = (v1, v2, ..., vi, ..., vj, ..., vn)T .
Mụ c tiê u là dù ng mộ t phé p quay P để khử phầ n tử thứ j củ a vectơ cộ t v dự a và o phầ n tử
thứ i củ a v.
Để là m đượ c điều nà y, ta tìm mộ t ma trậ n quay thỏ a:

Chọ n phép quay sao cho khi thự c hiện phép nhâ n Pijv thì vị trí thứ j bằ ng 0, tứ c là :
−vi sin(a) + vj cos(a) = 0
 vj
sin(a) vi 2 + vj 2
Ta chọ n: vi
= √
cos(a) = √
2 2
vi + vj
Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

Khi đó , phầ n tử thứ i củ a v là : q


2 vj 2 vi2 + vj2
vi

i ji j i j

2 2
v i cos(a) + vj sin(a) = √ +√ = √ = vi + vj
Thự c hiện lầ n lượ t phép quay
v 2 +sao
v 2cho đểvchuyển
2
+ v 2đổ i từ vng2 phầ
+ v n2 tử phía bên dướ i đườ ng chéo
chính lầ n lượ t bằ ng 0. Như vậ y ta sẽ thu đượ c ma trậ n R

1.3 Thực hiện phân rã trên ma trận cụ thể

Xét ma trận A:

 
6 5 0
5 1 4
A  
0 4 3

Để tạ o ma trậ n mong muố n, chú ng ta phả i khô ng có phầ n tử (2, 1) và (3, 2). Đầ u tiên ta chọ n
(2, 1) bằ ng 0. Sử dụ ng na trậ n xoay củ a:

c −s 0
 
G= 
 s c
1
0 0 1
0
Ta có phép nhâ n ma trậ n sau:

   
c −s 0 6 5 0

1 G1 A =2 A 
= s c 0 5 1 4
 
Bài tập lớn Lập trình Web - Năm học 2022 - Page
0 0 0 4
1 3
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

Vớ i:

r = 62 + 52
c= 6

r
−5
s= r
Thê m giá trị nà y cho c và s ta thu đượ c ma trậ n A2


2  7,0 8102 −2, 
4327 3,2,0729
4, 4813
A 
0 4 3

Tiếp theo phầ n tử (3, 2) bằ ng 0 ta có5607


ma trận xoay củ 
a:

1 0 0
 
G = −s
2  0 c 
0 s c

Chú ng ta trình bà y vớ i phép nhâ n ma trậ n sau:


   
1 0 0 7, 8102 4, 4813 2, 5607
  0
 
G2 A2 = A3 = 0 c −s −2, 4327 3, 0729

0 s c 0 4 3

Vớ i:

r = √(−2, 4327)2 + 42
−2.4237
c= r
−4
S= r

Khi đó ta có :

 
7, 8102 4, 4813 2, 5607
 
A=R= 0 4, 4817 0, 9664 
3  
0 0 −4, 1843 
 
0, 7682 0, 3327 0, 5470
 
1T
Q = G .G =  2T −0, 3992 −0, 
 
Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính
0 0, 8544 −0, 5196

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

Kết luận:
A = QR :

    
6 5 0 0, 7682 0, 3327 0, 5470 7, 8102 4, 4813 2, 5607
5 1 4
  0, 6402
 0, 3992 
  0 4, 4817 
0, 9664 
= −
0 4 3 0 0, 8544 −0, 5196 0 0 −4, 1843

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

2 Viết chương trình

2.1 Code matlab

1 function [Q, R] = qrgivens(A)


2 [m, n] = size(A); Q = eye(m);
R = A;
3
4
5
6 for j = 1:n
7 for i = m:-1:(j+1) G = eye(m);
[c, s] = givensrotation(R(i-1, j), R(i, j));
8 G([i-1, i], [i-1, i]) = [c, -s; s, c]; R = G' * R;
9 Q = Q * G;
end
10 end
11
12
13
14
15
16 disp("Matrix Q:");
17 disp(Q); disp("Matrix R:"); disp(R);

18
19
20 end
21
22 % givensrotation.m
23 function [c, s] = givensrotation(a, b) if b == 0
c = 1;
24 s = 0;
25 else
if abs(b) > abs(a) r = a / b;
26
27
28
29

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

30 s = 1 / sqrt(1 + r^2);
31 c = s * r; else
r = b / a;
32 c = 1 / sqrt(1 + r^2); s = c * r;
33 end

34
35
36
37 end
38 end

2.2 Giải thích code

Chương trình trê n phâ n tích ma trậ n A thà nh cá c ma trậ n Q và R theo phương phá p phé p
quay Given trong phâ n tích QR. Ma trậ n Q là ma trậ n trự c giao và ma trậ n R là ma trậ n tam
giá c trê n.
1. function [Q, R] = qrgivens(A)

• Hà m nà y thự c hiện phâ n rã QR bằ ng phương phá p Givens.

• A: Ma trậ n đầ u và o cầ n phâ n rã QR.

• Kế t quả trả về : Ma trậ n Q và R.

2. [m, n] = size(A)

• Hà m size(A) trả về kích thướ c củ a ma trậ n A.

• m: Số hà ng củ a ma trậ n A.

• n: Số cộ t củ a ma trậ n A.

3. Q = eye(m)

• eye(m) tạ o ra ma trậ n đơn vị kích thướ c m x m.

• Q: Ma trậ n Q ban đầ u đượ c khở i tạ o bằ ng ma trậ n đơn vị.

4. [c, s] = givensrotation(R(i-1, j), R(i, j))

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

• Hà m givensrotation tính toá n giá trị c và s dự a trên cá c phầ n tử R(i-1, j) và R(i, j) củ a


ma trậ n R

• Sử dụ ng phép xoay Givens

5. disp(Q), disp(R)

• In ma trậ n Q, R ra mà n hình

2.3 Kết quả thu được khi chạy code trên Matlab

2.3.1 Ví dụ 1

Xét ma trận A giống với phần I để kiểm chfíng chương trình:

 
6 5 0
5 1 4
A  
0 4 3

Kết quả:

Nhận xét: Kết quả sau khi chạ y chương trình giố ng vớ i kết quả đã tính tay ở phầ n I

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

2.3.2 Ví dụ 2

Xét ma trận A:

 
3 7 0
2 4 9
A  
0 4 5

Kết quả:

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

3 Ứng dụng

3.1 Ứng dụng trong các bài toán:

• Giả i quyết vấ n đề bình phương tố i thiểu tuyến tính.

• Là cơ sở cho mộ t thuậ t toá n eigenvalue (trị riêng).

3.2 Ứng dụng thực tế:

3.2.1 Ứng dụng phân rã QR trong hệ thống thu - nhận MIMO (hay multiple-input
and multiple-output).

MIMO là 1 trong nhữ ng cô ng nghệ anten thô ng minh. Nó cung cấ p sự gia tă ng đá ng kể về


thô ng lượ ng dữ liệu và phạ m vi liên kết mà khô ng cầ n thêm bă ng thô ng hoặ c cô ng suấ t phá t.
Nó đó ng vai trò quan trọ ng trong nhữ ng vậ t dụ ng truyền phá t khô ng dâ y như wifi, 4g, radio, ...
.
Trong hệ thố ng MIMO, hệ thố ng phá t truyền nhiều luồ ng tín hiệu cù ng lú c bằ ng nhữ ng anten
phá t. Luồ ng tín hiệu nà y sẽ đi và o kênh ma trậ n H. Sau đó thì hệ thố ng nhậ n sẽ tiếp thu nhữ ng
tín hiệu nà y qua nhữ ng anten nhậ n, giả i mã thô ng tin và đưa về lạ i thô ng tin gố c.
Trong 1 hệ thố ng MIMO bình thườ ng, thì nó sẽ có cô ng thứ c là :
r = Hx + ξ (vớ i H = QR)

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

3.2.2 Ứng dụng phân rã QR trong A.I (Artificial intelligence-trí tuệ nhân tạo).

Phâ n rã QR rấ t hữ u dụ ng trong nhữ ng ứ ng dụ ng về A.I. Mộ t ví dụ củ a việc dù ng phâ n rã


QR trong A.I chính là tự độ ng loạ i bỏ vậ t thể từ 1 bứ c ả nh.
Bằ ng cá ch tá ch video thà nh 2 khung độ c lậ p, biến đổ i cá c khung thà nh cá c vectơ 1D và tạ o
cá c ma trậ n củ a cá c vectơ tương ứ ng thà nh từ ng ả nh, mộ t trong số cá c ma trậ n sau đó á p dụ ng
đơn trị phâ n rã trên video. Phâ n ra cho phép đơn giả n hó a việc tá ch nhữ ng vậ t thể ở nền trướ c
từ mộ t khoả ng khô ng gian nền từ nhữ ng hình ả nh trong mộ t đoạ n video.

3.2.3 Ứng dụng của phân rã QR trong việc tìm ra quy luật chung (một hàm số
gần đúng) của các số liệu thực tế trong vấn đề phân tích dữ liệu.
Trong cuộ c số ng, việc phâ n tích dữ liệu rấ t khó khă n vì trên thự c tế số liệu đượ c biểu diễn
dướ i dạ ng cá c đồ thị rấ t khó để tìm ra quy luậ t chung. Nhờ và o phâ n rã QR, chú ng ta có thể
tìm đượ c 1 hà m số gầ n đú ng vớ i cá c số liệu đượ c cho ban đầ u. Qua đó , giú p chú ng ta thuậ n lợ i,
dễ dà ng hơn trong việc tính toá n, đo đạ c, dự đoá n cá c dữ liệu cầ n thiết.

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

4 Kết luận
Phâ n tích ma trậ n A thà nh tích củ a hai ma trậ n Q và R là mộ t phương phá p quan trọ ng
trong đạ i số tuyế n tính. Trong bà i bá o cá o nà y, chú ng tô i đã trình bà y về phương phá p phâ n
tích A = QR bằ ng phé p quay Given và triể n khai nó trong MATLAB.
Phép quay Given là mộ t phương phá p tiếp cậ n linh hoạ t và hiệu quả để thự c hiện phâ n tích
QR. Phương phá p nà y dự a trên việc á p dụ ng cá c phép quay đơn giả n để biến đổ i ma trậ n A
thà nh ma trậ n tam giá c trên R. Đồ ng thờ i, cá c phép quay tương ứ ng đượ c á p dụ ng và o ma trậ n
Q để tạ o ra ma trậ n trự c giao.
Chương trình MATLAB đã đượ c cung cấ p để thự c hiện phâ n tích QR bằ ng phép quay Given.
Bằ ng cá ch sử dụ ng mã nguồ n nà y, chú ng ta có thể nhậ p ma trậ n A và nhậ n đượ c ma trậ n Q và
R tương ứ ng. Kết quả đượ c hiển thị trự c tiếp trên mà n hình, giú p ngườ i dù ng dễ dà ng xem và
kiểm tra kết quả .
Phâ n tích A = QR bằ ng phép quay Given mang lạ i nhiều ưu điểm, bao gồ m tính ổ n định và
tính toá n đơn giả n. Nó cũ ng đó ng vai trò quan trọ ng trong nhiều ứ ng dụ ng, chẳ ng hạ n như giả i
hệ phương trình tuyến tính, tìm kiếm giá trị riêng và phâ n tích dữ liệu.
Tổ ng kế t lạ i, phâ n tích A = QR bằ ng phé p quay Given là mộ t phương phá p mạ nh mẽ và
linh hoạ t trong đạ i số tuyế n tính. Chương trình MATLAB đã đượ c trình bà y trong bà i bá o cá o
nà y cung cấ p mộ t cá ch tiệ n lợ i để thự c hiệ n phâ n tích QR và hiể n thị kế t quả . Phương phá p
phé p quay Given nà y sẽ tiế p tụ c đó ng vai trò quan trọ ng trong việ c giả i quyế t cá c bà i toá n đạ i
số tuyế n tính và ứ ng dụ ng tương tự .

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

5 Phân công công việc

STT MSSV Họ và tên Phâ n cô ng


1 2110393 Hoà ng Đứ c Nguyên Code Matlab và thuyế t trình
2 2114162 Đoà n Bả o Nghi Cơ sở lý thuyết
3 2114334 Bù i Nguyễ n Tú Như Cơ sở lý thuyết
4 2212518 Nguyễ n Đứ c Phá t Cơ sở lý thuyết
5 2212584 Nguyễ n Phạ m Đứ c Phú Ứ ng dụ ng
6 2212467 Lưu Thị Trú c Như Ứ ng dụ ng
7 2114168 Tiế t Mỹ Nghi Kế t luậ n
8 2212402 Phan Duy Quang Nhậ t Slide thuyết trình
9 2212518 Nguyễn Phương Nam Slide thuyết trình
10 2212289 Hồ Đình Gia Nguyê n Slide thuyết trình

Bả ng 1: Phâ n cô ng cô ng việc

Bài tập lớn Lập trình Web - Năm học 2022 - Page
Trường Đại học Bách Khoa Thành phố Hồ Chí Minh
Khoa Khoa học và Kỹ thuật Máy tính

6 Tài liệu tham


khảo Tài liệu
[1] Dang Van Vinh, Giáo trình Đại số tuyến tính
[2] W. Fan and A. Amir, "Givens rotation-based QR decomposition for MIMO systems,"
IET Communications, 2017.
[3] L. Beilina, E. Karchevskii and M. Karchevskii, Numerical Linear Algebra: Theory and
Applications, Berlin: Springer, 2017.
[4] M. T. Romero, E. Rubio and E. H. Rubio, "Parallel QR Factorization using Givens
Rotations in MPI-CUDA for Multi-GPU," Cinvestav-IPN, SEPI-ESCOM, Mexico city,
2020.
[5] M. T. Heath, Parallel Numerical Algorithms Chapter 11 – QR Factorization

Bài tập lớn Lập trình Web - Năm học 2022 - Page

You might also like