Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

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

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA ĐIỆN-ĐIỆN TỬ

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 biến đổi
Householder và các ứng dụng của phân tích A = QR
Lớp: L01
Nhóm thực hiện: 3
Giảng viên hướng dẫn: TS. ĐẶNG VĂN VINH
Nă m họ c: 2020 – 2021
1

DANH SÁCH THÀNH VIÊN

1. Nguyễn Hòa Hiệp 2010265

2. Cao Văn Hiếu 2010251

3. Vũ Huy Hiệu 2010266

4. Nguyễn Võ Hồng Mỹ Hiền 2010260

5. Phạm Thái Hòa 2010267

6. Nguyễn Nhật Hưng 2010307

7. Đào Khánh Hưng 2010304

8. Hồ Đắc Huy 2010279

9. Mao Quốc Huy 2010024

10. Nguyễn Nhật Huy 2010291


2

MỤC LỤC

1. CƠ SỞ LÝ THUYẾT CỦA PHÉP PHÂN TÍCH A= QR BẰNG


PHÉP BIẾN ĐỔI HOUSEHOLDER ................................................. 3
1.1 ......Phân tích A=QR .............................................................. 3
1.2 .......Phép biến đổi Householder ............................................. 3
1.3 .......Phân tích A=QR bằng phép biến đổi Householder ...... 4
2. SỬ DỤNG MATLAB ĐỂ PHÂN TÍCH A= QR BẰNG BIẾN ĐỔI
HOUSEHOLDER ............................................................................... 5
2.1 .......Thuật toán ....................................................................... 5
2.2 .......Code và kết quả............................................................... 6
3. ỨNG DỤNG CỦA PHÂN TÍCH A=QR ĐỂ TẠO RA CÁC LƯỢC
ĐỒ THỦY VÂN .................................................................................. 8
3.1......Giới thiệu ......................................................................... 8
3.2......Các ứng dụng thực tế ..................................................... 8
3.3......Các thuật ngữ .................................................................. 9
3.4......Thuật toán ........................................................................ 9
3.5......Thuật toán kiểm tra dấu thủy vân ................................. 10

Tài liệu tham khảo .......................................................................................... 11


3

1. CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH A= QR BẰNG PHÉP BIẾN


ĐỔI HOUSEHOLDER
1.1 Phân tích A=QR

Phân rã QR (hay còn gọi là phân tích QR) của một ma trận là quá trình
phân tích một ma trận thành ma trận trực giao và ma trận tam giác. Phân tích QR
của một ma trận thực A là phân tích A dưới dạng A=QR, trong đó Q là ma trận
trực giao (tức là 𝑄𝑇 . 𝑄 = 𝐼) và R là ma trận tam giác trên. Nếu A khả nghịch thì
phép phân tích QR này là duy nhất.
1.2 Phép biến đổi Householder
*Công thức tìm hình chiếu của vecto v lên không gian con F:
prF(v) = FTX = FT (FMFT)-1 FMv

Giả sử u là vecto khác không tùy ý và tích vô hướng là tích vô hướng


chính tắc, khi đó hình chiếu của vecto v lên không gian con F sinh ra bởi vecto u
là:
𝑢𝑢𝑇
 pru(v) =u(u u) u v =
T -1 T
v (1)
𝑢𝑇 𝑢
𝑢𝑢𝑇
là phép chiếu vuông góc của một vecto lên không gian con sinh ra
𝑢𝑇 𝑢
bởi u.

Vecto v được phân tích thành v = a +b , với a là hình chiếu vuông góc
của v lên F, b là hình chiếu vuông góc của v lên F
𝑢𝑢𝑇
(1)  b= v
𝑢𝑇 𝑢
𝑢𝑢𝑇
 v=a+ v
𝑢𝑇 𝑢
𝑢𝑢𝑇
 a=(I- )v
𝑢𝑇 𝑢
𝑢𝑢𝑇
I- là phép chiếu vuông góc của một vecto lên không gian con F.
𝑢𝑇 𝑢
4

F E M

O H

Biểu diễn hình học của phép biến đổi Householder


Ta có ⃗⃗⃗⃗⃗⃗
𝑂𝑁 = ⃗⃗⃗⃗⃗⃗ ⃗⃗⃗⃗⃗⃗
𝑂𝐻 +𝐻𝑁
𝑢𝑢𝑇 𝑢𝑢𝑇
=(I- )v - v
𝑢𝑇 𝑢 𝑢𝑇 𝑢

𝑢𝑢𝑇
=(I-2 )v
𝑢𝑇 𝑢
𝑢𝑢𝑇
(I-2 ) là phép đối xứng qua F phép biến đổi này được gọi là
𝑢𝑇 𝑢
phép biến đổi Householder.
1.3 Phân tích A= QR bằng phép biến đổi Householder

Một trong những ứng dụng chính của phép biến đổi Householder là
dùng để phân tích ma trận A thành A = QR

Gỉa sử A*1≠ 0 là cột thứ nhất của ma trận A



0
Ta cần tìm một ma trận trực giao P1 để P1A*1= :
.
(0)
5

Ma trận P1 tương ứng với phép biến đổi trực giao nên nó bảo toàn độ dài
của vecto.
Vậy độ dài của P1A*1 bằng với độ dài của A*1
Do đó ta chọn P1A*1=||A*1||e1
Đặt vecto ⃗⃗⃗⃗⃗⃗
𝑂𝑀 = A*1 , ⃗⃗⃗⃗⃗⃗
𝑂𝑁 = ||A*1||e1
Khi đó ⃗⃗⃗⃗⃗⃗
𝑂𝑀 = ⃗⃗⃗⃗⃗⃗ ⃗⃗⃗⃗⃗⃗⃗
𝑂𝑁 + 𝑁𝑀
⃗⃗⃗⃗⃗⃗⃗ = ⃗⃗⃗⃗⃗⃗
 𝑁𝑀 𝑂𝑀-𝑂𝑁 ⃗⃗⃗⃗⃗⃗

Đặt 𝑢 ⃗⃗⃗⃗⃗⃗⃗ = A*1- ||A*1||e1.


⃗ = 𝑁𝑀
𝑢𝑢𝑇
⃗ này tạo ra phép biến đổi Householder P1= I-2
Dùng vecto 𝑢 và phép
𝑢𝑇 𝑢
biến đổi này sẽ khử tất cả các phần tử trong cột thứ nhất của ma trận A ngoại trừ
phần tử đầu tiên.
2. SỬ DỤNG MATLAB ĐỂ PHÂN TÍCH A=QR BẰNG PHÉP BIẾN
ĐỔI HOUSEHOLDER
2.1 Thuật toán:

Ta nhận xét rằng A= QR ⟹ 𝑄 −1 . 𝐴 = 𝑅 = 𝑄𝑇 . 𝐴 với Q là ma trận trực


giao và R là ma trận tam giác trên. Như vậy ta có thể nói rằng 𝑄−1 là tập hợp các
phép biến đổi sơ cấp theo hàng biến ma trận A trở thành ma trận tam giác trên R,
đồng thời các phép biến đổi này là phép biến đổi trực giao. Do đó 𝑄−1 là tích các
ma trận sơ cấp 𝐻1 , 𝐻2 , … , 𝐻𝑛−1 , 𝐻𝑛 với 𝐻𝑖 là ma trận sơ cấp tạo từ ma trận đơn vị
qua phép biến đổi Householder nên các ma trận 𝐻𝑖 đồng thời cũng trực giao và
đối xứng dẫn đến Q là ma trận trực giao và đối xứng. Ta có:
𝑄 −1 = 𝐻𝑛 . 𝐻𝑛−1 … . 𝐻2 . 𝐻1 ⟹ 𝑄 = (𝐻𝑛 . 𝐻𝑛−1 … . 𝐻2 . 𝐻1 )−1
⟹ 𝑄 = 𝐻1−1 . 𝐻2−1 … . 𝐻𝑛−1
−1
. 𝐻𝑛−1
⟹ 𝑄 = 𝐻1𝑇 . 𝐻2𝑇 … . 𝐻𝑛−1
𝑇
. 𝐻𝑛𝑇
⟹ 𝑄 = 𝐻1 . 𝐻2 … . 𝐻𝑛−1 . 𝐻𝑛
Các bước trong thuật toán:
Bước 1: Tạo một ma trận thực A bất kì, ở đây ta chọn ma trận vuông
cấp 3 làm ví dụ, cho ma trận R có giá trị ban đầu là ma trận A và ma trận Q là ma
trận đơn vị có cấp bằng với số hàng của ma trận A.
6

Bước 2: Ta tạm gọi các ma trận 𝐻𝑖 là các ma trận Householder. Tìm các
ma trận Householder bằng phép biến đổi Householder, ta lấy ra cột đầu tiên của
ma trận R để tính toán. Gọi cột đầu tiên của ma trận R là 𝑎1 . Ta có :
𝑎
𝑎1 = (𝑏 ) ⟹ ‖𝑎1 ‖ = √𝑎2 + 𝑏 2 + 𝑐 2 ⟹ 𝑢1 = 𝑎1 + 𝑠𝑖𝑔𝑛(𝑎)‖𝑎1 ‖𝑒1
𝑐

𝑎 + ‖𝑎1 ‖
⟹ 𝑢1 = ( 𝑏 )
𝑐
𝑢1 .𝑢1𝑇
Lại có : 𝐻1 = 𝐼 − 2. .
𝑢1𝑇 .𝑢1

𝑎 + ‖𝑎1 ‖
Mà 𝑢1𝑇 . 𝑢1 = (𝑎 + ‖𝑎1 ‖ 𝑏 𝑐). ( 𝑏 ) = (𝑎 + ‖𝑎1 ‖)2 + 𝑏 2 +
𝑐
𝑐2
⟹ 𝑢1𝑇 . 𝑢1 = ‖𝑢1 ‖2
𝑢
⟹ 𝐻1 = 𝐼 − 2. 𝑣1 . 𝑣1𝑇 với 𝑣1 = ‖𝑢1‖
1

Bước 3: Nhân ma trận 𝐻1 vào ma trận Q và ma trận R, ta được một ma


trận 𝑄1 và ma trận 𝑅1 . Bỏ đi hàng 1 và cột 1 của ma trận 𝑅1 , ta tiếp tục thực hiện
lại các thao tác của bước 2 và bước 3 đối với ma trận 𝑅1 vừa nhận được và cứ tiếp
tục như vậy cho tới khi ma trận 𝑅𝑖 nhận được sau khi nhân ma trận 𝐻𝑖 cho ma trận
𝑅𝑖−1 chỉ có 1 cột
2.2 Code và kết quả:

%% *Phân tích A = QR bằng biến đổi Householder*


function phantich
disp(' Phan tich A = Q R bang bien doi Householder
');
A = input('Nhap ma tran A: ');
n=size(A,1); %số dòng
R = A; %bắt đầu bằng R=A
Q = eye(n); %cho Q la Ma tran don vi cap n
for k = 1:n -1 %chay n-1 lan H*R va Q*H
7

H = householder(R(:,k),k); % Gọi hàm householder


R = H*R; %H1*H2*H3*H4...*A = R
Q = Q*H; %(H1*H2*H3*H4...)' =Q
end
disp(' Ma tran Q la: ');
disp ('Q = ') ;disp(Q);
disp(' Ma tran R la: ');
disp ('R = ') ;disp(R);

function H = householder(x,k)
n = length(x); % Tìm số hàng của vector X
y = sum(x(k+1:n).^2);
g = sqrt(x(k)^2+y); %||x||
W = sqrt((x(k)+g)^2+y);%||u||
v = zeros(n,1); % Tao ma tran 0 (n x 1)
v(k) = (x(k) + g)/W; % v = u/||u||
v(k+1:n) = x(k + 1:n)/W;
H = eye(n) -2*v*v';% H = I - 2v*v'
Kết quả chạy
8

3. ỨNG DỤNG CỦA PHÂN TÍCH A = QR ĐỂ TẠO LƯỢC ĐỒ


THỦY VÂN MỚI
3.1. Giới thiệu:
Thủy vân ảnh là kĩ thuật nhúng thông tin vào dữ liệu ảnh trước khi ảnh
được phân phối trên môi trường không an toàn. Việc nhúng thông tin vào ảnh sẽ
làm giảm chất lượng ảnh, tuy nhiên thông tin đã nhúng sẽ là dấu vết để nhận biết
sự tấn công trái phép, hoặc để xác định thông tin về chủ sở hữu. Phép biến đổi QR
có tính chất quan trọng là tập trung năng lượng ảnh vào một số phần tử cố định của
miền biến đổi, cụ thể là hàng đầu của ma trận R. Các phần tử này có tính ổn định
cao, vì vậy có thể sử dụng chúng để xây dựng các lược đồ thủy vân bền vững trước
các phép tấn công.
3.2. Các ứng dụng thực tế :
Tem chống giả kỹ thuật số: tem sử dụng công nghệ chống giả bằng mã
PIN, in lên tem một dãy các mã số bí mật dưới lớp phủ. Người ta dùng xác minh
sản phẩm bằng cách kiểm tra mã PIN thông qua tổng đài hoặc tra cứu trực tuyến
trên Website
9

VD: Chữ kí của người dùng trên tấm thẻ ATM


3.3. Các thuật ngữ:
Dấu thủy vân: là một loại "dấu ấn số" (có thể là ảnh, chuỗi bit, chuỗi
số) được nhúng một cách tinh vi vào dữ liệu ( ảnh số, audio, video hay text) .
Nó thường được sử dụng để xác định quyền sở hữu bản quyền của dữ liệu đó.
Hệ số lượng tử q: thể hiện tính bền vững của lược đồ thủy vân. Nếu hệ
số q càng nhỏ thì tính bền vững của lược đồ càng thấp, nhưng chất lượng ảnh
thủy vân càng cao và ngược lại.
3.4. Thuật toán:
Để tiện trình bày thuật toán, chọn phần tử R(1,1) để nhúng một bit của
dấu thủy vân. Đầu vào của thuật toán là ảnh I, dấu thủy vân W = (w1 ;
w2 ; … . ) và hệ số lượng tử q. Đầu ra của thuật toán là ảnh I′ chứa dấu thủy
vân W. Các bước của thuật toán như sau:
Bước 1: Chia ảnh I thành t khối không giao nhau từng đôi một và có
cùng kích thước m×n, ký hiệu là 𝐼𝑖 , 𝑖 = 1,2, … , 𝑡.
Bước 2: Áp dụng phân tích QR trên mỗi khối Ii : Ii = Q i x R i
Bước 3: Nhúng bit wi vào phần tử R i (1,1) của ma trận tam giác trên R i
.
Bước 3.1: Tính:
R i (1,1)
ki = [ ]
q
Bước 3.2: Điều chỉnh R i (1,1) thành R i ′(1,1)
R i ′(1,1)= k i .q + ((k i mod 2) XORwi ).q
(Phép toán thao tác bit XOR lấy hai dãy bit có cùng độ dài và thực hiện phép toán logic
bao hàm XOR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí là 1 chỉ khi bit đầu tiên là 1
10

hoặc nếu chỉ khi bit thứ hai là 1, nhưng sẽ là 0 nếu cả hai là 0 hoặc cả hai là 1. Ở đây ta
thực hiện phép so sánh hai bit, kết quả là 1 nếu hai bit khác nhau và là 0 nếu hai bit giống
nhau.)

Sau khi thực hiện nhúng wi vào R i (1,1) ta nhận được R i ′(1,1) chỉ khác
R i ở vị trí (1,1). Nếu chọn phần tử khác để nhúng, ví dụ R i (1, k) thì
R i ′ khác R i tại vị trí (1, k)
Bước 4: Tính Ii ′ = Q i x R i ′ ảnh I′ tạo từ các khối Ii ′ là ảnh chứa dấu thủy
vân W.
3.5. Thuật toán kiểm tra dấu thủy vân

Cho 𝐼 ∗ là một phiên bản của 𝐼 ′ với hệ số lượng tử 𝑞, thuật toán dưới đây
sẽ kiểm tra sự tồn tại của dấu thủy vân trong ảnh 𝐼 ∗ để kết luận sự giống nhau
giữa 𝐼 ∗ và 𝐼 ′
Bước 1: Chia ảnh 𝐼 ∗ thành 𝑡 khối như nhau, kí hiệu là 𝐼𝑖∗ , 𝑖 = 1,2,…, 𝑡
Bước 2: Áp dụng phân tích QR cho từng khối 𝐼 ∗
𝐼 ∗ = 𝑄𝑖∗ x 𝑅𝑖∗
Bước 3: Xác định bit 𝑤𝑖∗ từ 𝑅𝑖∗ (1,1) như sau:
𝑞
𝑅𝑖∗ (1,1) +
𝑘𝑖∗ =[ 2
]
𝑞

𝑤𝑖∗ = 𝑘𝑖∗ MOD 2


Bước 4: So sánh dấu thủy vân 𝑊 ∗ = (𝑤1∗ ;…; 𝑤𝑡∗ ) trích ra từ 𝐼 ∗ với dấu
thủy vân gốc 𝑊 = (𝑤1 , … , 𝑤𝑡 ) bằng cách dùng hệ số 𝐸𝑟𝑟
1
𝐸𝑟𝑟 = ∑𝑡𝑖=1 𝑤𝑖 𝑋𝑂𝑅 𝑤𝑖∗
𝑡

Ta nhận thấy 𝐸𝑟𝑟 là độ sai khác trung bình giữa 𝑊 và 𝑊 ∗ , nó có giá


trị trong đoạn [0;1] và 𝐸𝑟𝑟=0 nếu 𝑤𝑖 = 𝑤𝑖∗ (với mọi 𝑖), 𝐸𝑟𝑟 = 1 nếu 𝑤𝑖 ≠ 𝑤𝑖∗
(với mọi 𝑖)
Hệ số 𝐸𝑟𝑟 được so sánh với ngưỡng τ ∈ [0;1], nếu 𝐸𝑟𝑟 < τ (tức là
𝑊 ∗ khá gần với 𝑊) thì kết luận 𝐼 ∗ có nhúng dấu thủy vân 𝑊 và ảnh 𝐼 ∗ giống
với ảnh 𝐼 ′ .
TÀI LIỆU THAM KHẢO
11

[1] Cơ sở lý thuyết: Giáo trình Đại số tuyến tính của thầy Đặng Văn Vinh,
Chương 4 trang 161-168

[2] Chương trình chạy: file:///C:/Users/ASUS/Downloads/matlab_tran-van-


chinh_chuong-2_ma-tran%20-%20[cuuduongthancong.com]%20(1).pdf

[3] Ứng dụng của phân tích A=QR: https://tailieuxanh.com/vn/dlID2220448_mot-


so-luoc-do-thuy-van-moi-dua-tren-phan-tich-
qr.html?fbclid=IwAR1VvC1DZ5RD4Nn-
fKqfPionMz7W4486HnXa2Tnjcw9UZHIZOuQwBuhEbUc#google_vignette

[4] Thuật toán xây dựng chương trình matlab:


https://atozmath.com/example/MatrixEv.aspx?he=e&q=qrdecomphh&fbclid=IwA
R1vA-PSBtyY3eDCePUNVxYhapcqvtQD03PoZHgO3_U5vU0LffMFI6qNJaE

You might also like