Tải bản đầy đủ (.docx) (13 trang)

Phép quay Givens, báo cáo bài tập lớn Đại học Bách Khoa

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 (124.52 KB, 13 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
----------

BÁO CÁO BÀI TẬP LỚN
Mơn: Đại số tuyến tính

Đề tâi: Phân tích A = QR bằng phép quay Givens

Giáo viên hướng dẫn: Thầy Bùi Anh Tuấn
Lớp L19
Nhóm 12
Tp.HCM, tháng 12, năm 2021
1


DANH SÁCH THÀNH VIÊN NHÓM 12 – LỚP L19
1. Lê Trung Hiếu

MSSV: 2111185

2. Nguyễn Huỳnh Trung Tuấn

MSSV: 2112582

3. Trần Trung Tấn

MSSV: 2114744

4. Phạm Hoàng Minh


MSSV: 2111761

5. Võ Hoàng Khang

MSSV: 2113687

6. Đào Vũ Phát

MSSV: 2114364

2


Mục lục
TRANG BÌA........................................................................................... 1
DANH SÁCH THÀNH VIÊN NHĨM ................................................. 2
Mục lục .................................................................................................. 3
A. MỞ ĐẦU
1. Yêu cầu ........................................................................................ 4
2. Điều kiện .................................................................................... 4
3. Kết kuận ...................................................................................... 4

B. CƠ SỞ LÝ THUYẾT - ỨNG DỤNG PHÂN TÍCH A=QR
1. Cơ sở lý thuyết ............................................................................. 4
2. Ứng dụng của phân tích A=QR ................................................... 6

C. CHƯƠNG TRÌNH MATLAB
1. Sơ đồ khối Matlab ....................................................................... 8
2. Chương trình Matlab ................................................................... 8
3. Giải thích các câu lệnh ................................................................ 9

a. Phần vịng lặp sử lý bài tốn .................................................. 9
b. Phần tính tốn cho từng bước lặp tính tốn ........................... 9
3


c. Phần kết thúc và hiển thị kết quả ........................................... 9
4. Các ví dụ .....................................................................................10

D. KẾT LUẬN
1. Nhận xét ..................................................................................... 11
2. Kết luận ..................................................................................... 11
DANH SÁCH CÁC TÀI LIỆU THAM KHẢO ................................... 12

A. MỞ ĐẦU
1. Yêu cầu
a. Nêu cơ sở lý thuyết của phân tích A = QR bằng phép quay Given.

b. Viết chương trình dùng để phân tích A = QR bằng phép quay Given.

c. Tìm các ứng dụng của phân tích A = QR

2. Điều kiện

4


- Sinh viên cần có kiến thức về lập trình cơ bản trong MATLAB.

- Sinh viên cần nắm được một số kiến thức về ma trận


3. Nhiệm vụ
- Viết chương trình Matlab nhập vào ma trận trận A, kết quả xuât ra là ma trận
Q và ma trận R

B. CƠ SỞ LÝ THUYẾT - ỨNG DỤNG
1. Cơ sở lí thuyết
Kỹ thuật quay Givens là một phương pháp để phân tích ma trận [A] thành tích
của ma trận [Q] và ma trận [R] bằng cách làm cho các phần tử lần lượt bằng zero
cho đến khi có được ma trận tam giác phải. Ý tưởng là dùng một ma trận quay đơn
giản 2 × 2 đặt dọc theo đường chéo chính của một ma trận đơn vị và làm cho một phần
tử của ma trận bằng zero. Các phần tử của ma trận quay để quay một vec tơ ngược
chiều kim đồng hồ một góc θ là:

[Q0]

=

Nếu ta muốn quay vec tơ [x1 x2]T và muốn làm cho x2 bằng 0 rồi quaytheo chiều
kim đồng hồ một góc θ(hay ngược chiều kim đồng hồ một góc ‐θ) trong đó:

thì ma trận quay để thực hiện phép quay này theo chiều kim đồng hồ một góc θ là:

[Q0]

=

Trong đó :

5



Do đó :

[Q0]

=

. =

Chú ý là như mong muốn:

[Q0]

= =

=

Nếu A là ma trận m × n, ta sẽ xem điều gì xảy ra khi ta thay các phần tử của [Q] vào
ma trận con xác định bằng các cột và hàng thứ i, các cột và hàng thứ j. Nói cách khác ta
thay ma trận 2 × 2 này dọc theo đường chéo chính tại một số điểm:

[Gkl]= =
Như vậy [G] là ma trận đơn vị m × m ngoại trừ các giá trị đã bị thay thế:

gii =

gjj

= c


gij =

g-ij = s

Điều này sẽ tạo ra ma trận unita:

[G]T[G] = [E]

nghĩa là:

Và đòi hỏi :

2. Ứng dụng

6


Khi sử dụng mạng Wifi nếu như có nhiều thiết bị kết nối với 1 Wifi cùng lúc sẽ
làm cho tốc độ truyền dữ liệu của Wifi càng giảm. Với bộ định truyền một kết nối gọi
là SU-MINO, nghĩa là các bộ định truyền chỉ có thể giao tiếp với 1 thiết một lúc sẽ
khiến cho các thiết bị khi kết nối cùng phải chờ đợi để gửi và nhận dữ liệu. Chính vì
vậy tốc độ sẽ chậm hơn nên để cải thiện tình hình này đã có một tiêu chuẩn công nghệ
mới giúp làm giảm đáng kể thời gian chờ. Chúng được gọi là MU-MINO
+MIMO (Multiple In, Multiole Out) là cách sử dụng nhiều ăng-ten để phát và thu
nhận tín hiệu của kết nối khơng dây. Giúp các thiết bị điện tử tiếp nhận song Wifi dễ
dàng hơn và khai thác hết công suất của Router Wifi.
+ MIMO tận dụng sự không dội lại của song khi “đụng” phải những chướng ngại
trên đường truyền khiến chúng có thể đến được đầu nhận tín hiệu bằng nhiều con
đường khác nhau.
Giải thích:

Cơng nghệ MIMO dựa trên phương pháp phân tích thừa số QR của ma trận kênh
truyền hình H. Theo phương pháp này thì bất kì ma trận kênh truyền hình nào cũng
phân tích được thành H=QR.
+Với R là ma trận tam giác trên:

R=
Q là ma trận trực giao có tính chất QHQ=Q-1Q=1
Ta có phương trình hệ thống: y=Hs+z
Thực hiện biến đổi nhân 2 vế cho QH ta được:
QHy=QH.Hs+QH.z
<=> QHy=R.s+QH.z
Coi y’ là QHy và z’ là QH.z ta có:
Y’=R.s+z’
Tổng quát: y’i = Ri,I si+ ∑Ri,j.si + z’i
(1) (2)
(3)

7


Trong đó:
(1) Là tín hiệu mong muốn
(2) Là nhiễu từ của các angten
(3) Là tạp âm bên ngoài
-Ứng với angten thứ N sẽ thu được tín hiệu tốt nhất, y’N không chịu ảnh hưởng của
angten nhiễu từ của các angten khác nên được tách ra trước ở lớp trên, bằng phương pháp
quyết định cứng hard decision tín hiệu ở lớp dưới khi phát ra sẽ làm triệt tiêu tín hiệu ở
lớp trên làm hạn chế đến mức thấp nhất nhiễu từ.

Lặp j từ 1 đến n-1,

Ma trận A, ma trận
i lặp từ n giảm
C.
CHƯƠNG
TRÌNH
MATLAB
Q là ma trận đơn vị
xuống
1 đến khi j
Sơn đồ
cấp 1.
n với
là sốkhối Matlab
ngừng lặp thì nhận
hàng của ma trận A
giá trị j+1

Tính cos Ө và sin Ө

Tính ma trận A mới và
Q mới bằng cách rút 2
dòng i và i-1 của ma
trận từ phép lặp nhân
với ma trận (c s,-s c)

8
Kết quả sẽ là R=A

Q=



2. Chương trình Matlab
A=[0 -1 1;4 2 0;3 4 0]
n = size(A, 1);
Q = eye(n);
for j = 1:n-1
for i = n:-1:j+1
z = 1/sqrt(A(i-1, j)^2 + A(i, j)^2);
c = A(i-1, j)*z;
s = A(i, j)*z;
A(i-1:i,:) = [c s;-s c]*A(i-1:i,:);
Q(i-1:i,:) = [c s;-s c]*Q(i-1: i,:);
end
end
R = A;
Q = Q';
disp ('R=');
disp (R);
disp ('Q=');
disp (Q);

3. Giải thích các lệnh trong MATLAB
- A=[0 -1 1;4 2 0;3 4 0] : Ma trận A =
- n = size(A, 1): Tính n là số hàng của ma trận A
- Q = eye(n): Lập Q là ma trận đơn vị cấp n
a. Phần vịng lặp xử lý bài tốn:
- for j = 1:n-1 :Lặp j trong từng bước lặp tính tốn tăng dần 1 đơn vị cho đến khi
đạt đến giá trị n-1 và kết thúc lặp
- for i = n:-1:j+1:Lặp i trong từng bước lặp tính tốn giảm dần 1 đơn vị cho đến
khi j ngừng lặp thì i nhận giá trị là j+1 và kết thúc lặp

*Lưu ý: Khi j đã đạt giá trị n+1, lần lặp tiếp theo thì i sẽ mang giá trị j+1 và j mang
giá trị của lần lặp trước đó
b. Phần tính tốn cho từng bước lặp tính tốn
- z = 1/sqrt(A(i-1, j)^2 + A(i, j)^2): tính giá trị độ dài của z với
9


z=
- c = A(i-1, j)*z: tính giá trị của c là cos Ө=*z
- s = A(i, j)*z: tính giá trị của s là sin Ө=*z
- A(i-1:i,:) = [c s;-s c]*A(i-1:i,:): Thay thế 2 dòng (i-1) đến i bằng kết quả của phép
nhân ma trận với ma trận gồm 2 dòng (i-1) và i của ma trận A trong kết quả trước
- Q(i-1:i,:) = [c s;-s c]*Q(i-1:i,:): Thay thế 2 dòng (i-1) đến i bằng kết quả của phép
nhân ma trận với ma trận gồm 2 dòng (i-1) và i của mà trận Q trong kết quả trước
*Lưu ý nếu phép tính đang ở lần lặp đầu tiên thì A sẽ là A của đề bài còn Q sẽ là ma
trận đơn vị cấp n
c. Phần kết thúc và hiển thị kết quả
- R=A: Kết quả ma trận R trong phép phân tích phép quay A=QR sẽ lấy kết quả A
của vòng lặp cuối cùng
- Q=Q’: Kết quả ma trận Q trong phép phân tích phép quay A=QR sẽ lấy ma trận
chuyển vị của ma trận Q trong kết quả vòng lặp cuối cùng
- disp (‘R=’): Hiển thị dòng “R=”
- disp (R): Hiển thị ma trận R trong phép phân tích A=QR
- disp (‘Q=’): Hiển thị dòng “Q=”
- disp (Q): Hiển thị ma trận Q trong phép phân tích A=QR

4. Các ví dụ
VD1: Chạy chương trình với ma trận
A=
Kết quả là :

Phần Q=

Phần R=
VD2: Chạy chương trình với ma trận
Q=
Kết quả là :
Phần Q=

Phần Q=
10


D. KẾT LUẬN
1. Nhận xét
Ưu điểm khi sử dụng Matlab
 Tính tốn dễ dàng, tiện lợi, cho kết quả chính xác.
 Tiết kiệm được thao tác và thời gian.
Nhược điểm khi sử dụng Matlab
 Việc cài đặt và sử dụng chương trình gặp nhiều khó khăn

 Học cách sử dụng code mất thời gian, địi hỏi nhiều cơng sức
2. Tổng kết
Với sự phân công chuẩn bị kỹ lưỡng và cố gắng hết mình, nhóm em đã hồn thành
đề tài được giao và Matlab cho ra kết quả như mong muốn.
Qua phần bài tập lớn này nhóm đã:
- Biết được thao tác toán trên Matlab.
- Nâng cao sự hứng thú đối với môn học.
- Trao dồi kinh nghiệm học tập và làm việc nhóm.
- Nâng cao tinh thần trách nhiệm và thắt chặt tình đồn kết của các thành viên
trong nhóm


11


DANH SÁCH CÁC TÀI LIỆU THAM KHẢO
[1] Giáo trình đại số tuyên tính
[2] Tài liệu hướng dẫn sử dụng Matlab
[3] Hy Đức Mạnh, Bài giảng đại số tuyến tính và hình học giải tích, Tài liệu học tập cho
sinh viên tại học viện Kỹ Thuật Quân Sự

12


HẾT

13



×