Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
1,13 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA Mơn: Đại Số Tuyến Tính BÁO CÁO BÀI TẬP LỚN ĐỀ TÀI SỐ 04: PHÂN TÍCH A = QR BẰNG PHÉP BIẾN ĐỔI Householder Nhóm 8: Phan Anh Hào Nông Thị Uyên Tưởng Thọ Hiếu Nguyễn Minh Thư Phan Thị Ngọc Như Phương Khánh Minh Đặng Nguyễn Ngọc Phi Huỳnh Thị Nguyệt Thơ Bùi Nguyễn Thảo Nguyên 10 Phạm Hữu Quốc 11 Lê Hồng Thanh Trúc MSSV: 2013055 MSSV: 2015017 MSSV: 1913369 MSSV: 2014677 MSSV: 2014055 MSSV: 2013786 MSSV: 2011801 MSSV: 2012136 MSSV: 2011693 MSSV: 2014304 MSSV: 2014898 GVHD: Bùi Anh Tuấn TP Hồ Chí Minh, tháng năm 2021 MỤC LỤC Phần I Cơ sở lý thuyết phân tích A = QR phép biến đổi Householder: Giới thiệu thuật toán A = QR: 2 Lý thuyết bước thực thuật toán: Phần II Chương trình Matlab để phân tích A = QR phép biến đổi Householder: Phần III Các ứng dụng phép phân tích A = QR: 10 Giải vấn đề bình phương tối thiểu: 10 Giải tốn tìm giá trị riêng: .12 Ứng dụng MIMO 16 Phần I Cơ sở lý thuyết phân tích A = QR phép biến đổi Householder: Giới thiệu thuật toán A = QR: a) Khái niệm phân rã QR: Trong đại số tuyến tính, phân rã QR, cịn gọi phân tích nhân tố QR phân tích nhân tố QU phân rã ma trận A thành tích A = QR ma trận trực giao Q ma trận tam giác R Phân rã QR thường sử dụng để giải vấn đề bình phương tối thiểu tuyến tính sở cho thuật tốn eigenvalue cụ thể, thuật toán QR b) Ý tưởng thuật tốn QR: c) Quy trình Gram-Schmidt: Phân hủy QR có cơng thức sau: A = QR Trong đó: A ma trận ban đầu mà muốn phân rã Q ma trận trực giao R ma trận tam giác Trực giao vectơ - Điều kiện: Họ véctơ cột A họ độc lập tuyến tính - Dùng q trình trực giao hóa Gram-Schmidt ta họ trực giao chia véctơ cho độ dài ta có họ trực chuẩn - Ma trận trực giao Q có cột véctơ trực chuẩn vừa tìm - Ma trận R (ma trận chuyển sở từ Q sang E) = QTA Để tạo vectơ trực giao, sử dụng thơng tin sau Vectơ a vectơ so khớp với v1 v2 phải trực giao với vectơ v1, nên chiếu vectơ b lên v2 để b trực giao với a (v1) Phép chiếu vectơ b lên a (v1) cho bởi: v1T b v1 v1T v1 Phép chiếu vectơ Bây cần chiếu b lên v2 để có tính trực giao a b Đối với điều này, chúng tơi sử dụng e, lỗi chiếu chúng tơi tính cơng thức sau: v1T b e b T v1 v1 v1 Cần lưu ý điều e có độ dài chiều với v2 Chúng ta kết luận: v1T b v2 b T v1 v1 v1 Về cách hoạt động trình Gram-Schmidt Đối với nhiều hai chiều (giả sử có vectơ a, b c), tính tốn q trình theo cách sau : v1T c v2T c v3 c T v1 T v2 v1 v1 v2 v2 Điều xảy nhiều chiều trừ hướng vectơ cho thành phần trước (v1, v2 v.v có nhiều thứ nguyên hơn) Bây biết cách lấy ma trận Q Để tính tốn ma trận R, sử dụng thay đổi sau công thức QR: A = QR, QᵗA = QᵗQR (vì Q trực giao Qᵗ = nghịch đảo (Q)) QᵗA = R, R = QᵗA d) Phản chiếu Householder Gram-Schmidt khơng ổn định mặt số học, có nghĩa đầu vào thay đổi nhỏ dẫn đến thay đổi tương đối lớn đầu ( nguồn ) Cách ổn định sử dụng phản chiếu Householder Householder chiếu vectơ qua “tấm gương” Chúng ta có vectơ x mà muốn phản ánh vectơ Qx Để phản ánh, sử dụng ma trận trực giao Q Nội dung phản ánh Từ trước, biết hình chiếu x lên u là: Từ biểu đồ phản chiếu Householder, thấy lấy x trừ hai lần thành phần song song với u, nhận Qx : Thành phần song song hình chiếu x với u, viết: Vì tính kết hợp phép nhân ma trận: Chúng tơi viết: Trở thành: Và cuối chúng tơi có: Lý thuyết bước thực thuật tốn: a) Đối với ma trận vng: Bất kì ma trận vng thực A phân tách thành: A = QR Trong đó: - Q ma trận trực giao (các cột vectơ đơn vị trực giao, có nghĩa QTQ = QQT = 1) - R ma trận tam giác (còn gọi ma trận tam giác vuông) Nếu A khả nghịch, việc phân tích yêu cầu phần tử đường chéo R dương Nếu thay vào A ma trận vng phức, có phép phân tách A = QR, Q ma trận đơn vị (vì Q*Q = QQ* = 1) Nếu A có n cột độc lập tuyến tính, n cột Q tạo thành sở trực giao cho không gian cột A Tổng quát hơn, cột k Q tạo thành sở trực giao cho nhịp cột k A cho ≤ k ≤ n Thực tế cột k A phụ thuộc vào cột k Q chịu trách nhiệm cho dạng tam giác R b) Đối với ma trận hình chữ nhật: Nói chung, tính đến ma trận m×n phức tạp A, với m ≥ n, tích ma trận đơn M×m Q ma trận hình tam giác m×n R. Vì hàng (m−n) ma trận hình tam giác m×n bao gồm hồn tồn số khơng, thường hữu ích cho phân vùng R R Q: A = QR = Q R1 R = [ Q1 ,Q2 ] = Q1 R 0 [ ] [ ] Trong đó:R1 n × m ma trận tam giác trên, ma trận (m – n) × n, Q m × n, Q2 m × (m – n), Q1 Q2 có cột trực giao Phản chiếu Trình quản lý nội để phân rã QR: Mục tiêu tìm phép biến đổi tuyến tính thay đổi vectơ x thành vectơ độ dài phương với e Chúng ta sử dụng phép chiếu trực giao (Gram-Schmidt) điều không ổn định mặt số vectơ x gần với trực giao Thay vào đó, phản xạ Householder phản ánh qua đường chấm (được chọn để chia đơi góc x e 1) Góc tối đa với phép biến đổi 45 độ c) Thuật toán phép biến đổi Householder: Giả sử u vectơ khác không tùy ý, hình chiếu vng góc vectơ v lên khơng gian F sinh vectơ u pru(v) = uuTv Vectơ v phân tích thành v = a + b, với a hình chiếu vng góc u lên F b hình chiếu vng góc v lên F uu T uu T uu T y ON ( I T )v T v ( I T )v u u u u u u Ta có: ON OH HN => Vậy ta có phép đối xứng qua F ⊥ I 2 uu T u T u (phép biến đổi gọi phép biến đổi Householder) #Cách thực hiện: Giả sử A*1 ≠ cột thứ ma trận A ¿ Ta cần tìm ma trận trực giao P1 để P1A*1 = ⋮ () Ma trận P1 tương ứng với phép biến đổi trực giao nên bảo tồn độ dài vectơ Vậy độ dài P1A*1 độ dài A*1 Do đó, ta chọn P1A*1 = || A*1 ||e1 OM A *1 ON OM ON NM Đặt vectơ , = || A*1 ||e1 Khi đó: u NM OM ON Đặt NM A*1 || A*1 || e1 uu T P1 I T u u phép biến Dùng vectơ u tạo phép biến đổi Householder đổi khử tất phần tử cột thứ cảu ma trận A ngoại trừ hạng tử Phần II Chương trình Matlab để phân tích A = QR phép biến đổi Householder: Chương trình phân tích A=QR function [Q,R] = qr(A) % Compute the QR decomposition of an m-by-n matrix A using % Householder transformations A=input('nhap A:'); [m,n] = size(A); Q = eye(m); % Orthogonal transform so far R = A; % Transformed matrix so far for j = 1:n % Find H = I-tau*w*w’ to put zeros below R(j,j) normx = norm(R(j:end,j)); s = -sign(R(j,j)); u1 = R(j,j) - s*normx; w = R(j:end,j)/u1; w(1) = 1; tau = -s*u1/normx; % R := HR, Q := QH R(j:end,:) = R(j:end,:)-(tau*w)*(w'*R(j:end,:)); Q(:,j:end) = Q(:,j:end)-(Q(:,j:end)*w)*(tau*w)'; end Chương trình tính R QTb: function [Q,R] = lec18hqr1(A) % Compute the QR decomposition of an m-by-n matrix A using % Householder transformations A=input('nhap A:'); [m,n] = size(A); B=input('Nhap B:'); Q = eye(m); % Orthogonal transform so far R = A; % Transformed matrix so far for j = 1:n % Find H = I-tau*w*w’ to put zeros below R(j,j) normx = norm(R(j:end,j)); s = -sign(R(j,j)); u1 = R(j,j) - s*normx; w = R(j:end,j)/u1; w(1) = 1; tau = -s*u1/normx; % R := HR, Q := QH R(j:end,:) = R(j:end,:)-(tau*w)*(w'*R(j:end,:)); Q(:,j:end) = Q(:,j:end)-(Q(:,j:end)*w)*(tau*w)'; end R=R QTb=Q'*B' Ex: 12 −51 A = 167 −68 −4 24 −41 [ ] Đầu tiên, cần dùng phép phản chiếu để biến đổi cột ma trận A, vector T T a 1=[ 12 −4 ] , thành ‖a1‖e1 =[ α 0 ] Bây ta có: v= u=x−α e 1; u ‖u‖ T Với: α =14 v x =a1=[ 12 −4 ] Do đó: T T u=[ −2 −4 ] =2 [ −1 −2 ] v v= [ −1 −2 ] T √ 14 −1 /7 3/7 −2/ 1 −3 Q1=I − [−1 −2 ]¿ I − −3 −6 ¿ /7 −2/7 6/7 √ 14 √14 −2 −6 −2 /7 6/7 3/7 [] [ ][ ] Từ ta có: 14 21 −14 Q1 A= −49 −14 168 −77 [ ] *Chúng ta gần có ma trận hình tam giác, cịn cần số khơng hóa cho giá trị hàng cột Lấy (1,1) phụ hợp, sau áp dụng lại quy trình cho [−49 168 ' A =M 11 = −14 −77 ] Bằng phương pháp tương tự trên, ta có ma trận phép biến đổi Householder 0 Q2= −7 /25 24 /25 24 /25 /25 [ ] Tiếp theo ta tính 6/ −69/ 175 58 /175 Q=Q Q = 3/ 158 /175 −6 /175 −2/7 /35 33 /35 T Hoặc T [ [ ] 0.8571 −0.3943 0.3314 Q=QT1 Q T2 = 0.4286 0.9029 −0.0343 −0.2857 0.1714 0.9429 ] 14 21 −14 R=Q2 Q1 A=Q A= 175 −70 0 −35 T [ ] Phần III Các ứng dụng phép phân tích A = QR: Giải vấn đề bình phương tối thiểu: Bình phương tối thiểu tuyến tính là kỹ thuật ngành tối ưu tốn học để tìm nghiệm gần cho một hệ phương trình tuyến tính khơng có nghiệm xác Điều thường xảy số phương trình (m) lớn số biến (n) Theo từ ngữ tốn học , muốn tìmnghiệm phương trình với A là một ma trận cỡ m-nhân-n (với m > n) và x và b theo thứ tự là vectơ cột với n- và mhàng Ta có : AT Ax= AT b ↔ Rx=QT b (A = QR, với Q ma trận trực giao, R ma trận tam giác trên) Ví dụ: Tìm hàm bậc hai f ( t )=α + βt + γ t 2với tập hợp D={(2;7),(-2;8),(3;19),(-3;17)} Phương pháp: Giả sử ta có tập hợp điểm D={(t1;b1),(t2;b2),…(tm;bm)} Cần tìm hàm f =f (t ) cho đồ thị qua (hoặc gần) tất điểm D Xét trường hợp hàm f ( t )=α + βg ( t )+ γh ( t ) m Tìm α , β ,γ để ∈ ( t ) = Σⅈ=1 (α + βg ( t i ) + γh ( t i) −bi ) = Σmⅈ=1 ∈2i nhỏ Phương pháp gọi bình phương cực tiểu Ta tìm cực trị hàm ∈ ( t ) có ba biến α , β ,γ Để cho gọn, ta ký hiệu g ( t i) =gi , h ( t i ) =hi Điểm dừng hàm∈ ( t ) là: { ∂ ∈ (t) =0 ∂α ∂ ∈ (t) =0 ⇔ ∂β ∂ ∈ (t) =0 ∂γ Σ mⅈ=1 (α + βg ( t i ) + γh ( t i )−b i)=0 Σ mⅈ=1 (α + βg ( t i ) + γh ( t i )−b i) gi=0 { Σ mⅈ=1 (α + βg ( t i ) +γh ( t i ) −bi )h i=0 (Σ mⅈ=1 1) α +(Σ mⅈ=1 gi) β +( Σ mⅈ=1 hi) γ=( Σmⅈ=1 bi ) m ⇔ ( Σ ⅈ=1 g i)α +( Σ mⅈ=1 g2i )β +( Σ mⅈ=1 gi hi)γ =(Σ mⅈ=1 gi bi) (Σ mⅈ=1 hi ) α +( Σ mⅈ=1 g i h i) β+(Σ mⅈ=1 hi2)γ =( Σ mⅈ=1 hi bi) { g1 h1 α g2 h2 Xét ma trận A= ⋮ … ⋮ , X = β , B= γ gm hm ( ) () b1 b2 ⋮ bm () Hệ phương trình ghi dạng ma trận AT AX= AT b Giải hệ phương trình ta α , β ,γ , suy f ( t ) Nếu g ( t ) =t ,h ( t )=0 , ta có đa thức bậc f ( t )=α + β t Nếu g ( t ) =t ,h ( t )=t , ta có đa thức bậc hai f ( t )=α + βt + γ t Trong trường hợp tổng quát, ta có hàm f ( t )=α +α g1 ( t ) + α g ( t )+ + α n gn ( t ) , ta làm tương tự Lời giải cho toán trên: Ta đặt g ( t ) =t , h ( t )=t g1 g2 Xét ma trận A= g3 g4 h1 h2 = −2 h3 −3 h4 4 b= , 19 17 ( )( ) ( ) Giải hệ phương trình Rx=QT b ( với R QTb kết chương trình) Ta −9 21 T ; ; nghiệm X = 10 13 10 −9 21 Hàm cần tìm f ( t )= 10 + 13 t+ 10 t ( ) Giải tốn tìm giá trị riêng: a) Các bước tìm trị riêng phương pháp QR: -B1: Tìm s từ ma trận A cho, ta có ma trận A i -B2: Từ ma trận Ak(i) => Ma trận quay Pk + -B3: Tính Ak + 1(i) -B4: Tìm giá trị riêng ma trận A cho b) Công thức cần lưu ý: - A(i) = Q(i) R(i) - A(i + 1) = Q(i) r(i) - A2(1) = P2 A(1) - A3(1) = P3 A2(1) - A(2) = R(1) Q(1) = P3 P2 A(1) P2’ P3’ - Dạng tổng quát Ak(i): - Dạng tổng quát Pk + 1: sk 1 Với: bk 1 b k 1 x k I k 1 ck 1 sk 1 sk 1 ck 1 ck 1 ; I n k 1 xk b k 1 x k c) Ví dụ: 3 0 1 1 3 ma trận đường chéo, đối xứng Tìm trị riêng A? Cho ma trận A = Giải: - Tính s1 cách tìm trị riêng ma trận vng 2×2 tạo dòng thứ 2,3 cột thứ 2,3 3 1 1 3 Ma trận có trị riêng µ1 = µ2 = Chọn trị riêng gần với giá trị a3 = A33 = => Chọn s1 = µ1 = - Ta có: 3 0 1 0 1 0 1 1 20 0 1 1 0 3 0 1 0 1 A(1) = A – s1I = => x1 = 1; b2 = 1; s2 = c2 = P2 - Dạng P2: A2 P2 A => 0 0 1 2 2 2 2 x2 = 0; b3 = 1; s1 = 0; c3 = - Dạng P3: 1 0 P3 0 1 1 (2) (1) (1) (1) - Ma trận A = R Q = P3P2A1 P2’P3’ = - Tương tự ta có: s2 2 2 2 2 2 (3) A 2.6720277 0.37597448 0.37597448 1.4736080 0.030396964 0.030396964 0.047559530 Nhận thấy b(2)3 = 0.030396964 đủ nhỏ, ta tính giá trị riêng: 3 a3(3) s1 s2 1.5894151 2.6720277 0.37597448 - Bỏ hàng cột ma trận A(3), ta được: 0.37597448 1.4736080 + trị riêng ma trận là: µ1 = 2.7802140 µ2 = 1.3654218 + trị riêng cịn lại ma trận A là: 1 1 s1 s2 4.4141886 2 s1 s2 2.9993964 Ta dùng phép lặp (n=20 lần ) giá trị đường chéo hội tụ dần với chương trình [Q,R] = qr(A) tạo thuật toán sau : [Q,R] = qr(A) A=Q*R i=1:n [Q,R] = qr( Ai ) Ai +1=R*Q So sánh với ma trận D chứa trị riêng nằm đường chéo tạo hàm [V,D] = eig(A)trong matlab kết ví dụ ta thấy phép phân tích A=QR sử dụng để tính trị riêng ma trận với điều kiện lặp đủ số lần Ứng dụng MIMO Trong radio, nhiều đầu vào nhiều đầu ra, hay MIMO, việc sử dụng nhiều ăng-ten máy phát máy thu để cải thiện hiệu suất truyền thông MIMO nhiều dạng công nghệ ăng ten thông minh MIMO cung cấp gia tăng đáng kể thông lượng liệu phạm vi liên kết mà không cần thêm băng thông công suất truyền MIMO phần quan trọng tiêu chuẩn truyền thông không dây đại IEEE 802.11n (Wifi) 4G Trong hệ thống MIMO, máy phát gửi nhiều luồng nhiều ăng-ten phát Các luồng truyền qua kênh ma trận bao gồm tất đường dẫn NtNr ăng ten phát Nt máy phát Nr ăng-ten thu máy thu Sau đó, máy thu nhận vectơ tín hiệu nhận nhiều ăng-ten thu giải mã vectơ tín hiệu nhận thành thơng tin ban đầu Mơ tả tốn học Cho x = (x1, , xn)T vectơ truyền qua kênh nhiễu Mỗi xi chọn từ bảng chữ có kích thước hữu hạn X Một hệ thống MIMO chung mơ hình hóa r = Hx + ξ H m × n kênh ma trận xếp hạng cột đầy đủ (m ≥ n) (bộ thu biết) ξ = (ξ1, , ξm)T vectơ nhiễu Gaussian màu trắng E (ξξ*) = σ2I r = (r1, , rm)T vectơ nhận quan sát Nhiệm vụ phát / ước lượng vectơ ^x = ( ^x 1, , ^x n)T ∈ Xn với quan sát nhiễu r Sự phân hủy QR ma trận kênh H sử dụng để tạo thành dò hủy ngược Đặt H = QR, phương trình phân rã QR ma trận hệ thống H với m hàng, n cột Q = Ma trận trực giao mxn R = Ma trận tam giác nxn => r = Hx + ξ ⇒ Q∗ r = Rx + Q∗ ξ Đặt: ~r := Q∗ r, ~ ξ := Q∗ ξ ~ r1 ~ r2 r 11 r 12 … = r 22 … => ⋮ ⋮ ⋮ ⋱ ~ 0 … r3 ( )( r1 n r1 m ⋮ r nm ~ x ξ1 ~ x ξ2 + ⋮ ⋮ xn ~ ξ4 )( ) ( ) (2) Phương pháp thức Giả sử ước tính xn cơng thức: ^x n := Quant¿] Với quant(t) phân tử X gần với t (3) Phân Hủy Quay lại công thức: ^x n := Quant¿] n ^x k := Quant [ ~r − ∑ r x^ k km i i=k+1 r kk ] , k= n-1, n-2, , Thuật toán phương pháp bình phương cực tiểu Nhận xét: - - Sự phân rã QR cung cấp cách thay để giải hệ phương trình A x = b mà không cần nghịch đảo ma trận A Thực tế Q trực giao có nghĩa Q TQ = I, A x = b tương đương với R x = QTb, dễ giải R ma trận tam giác Việc sử dụng phép biến đổi Householder đơn giản số thuật toán phân rã QR ổn định số lượng sử dụng phản xạ làm chế tạo số trong ma trận R. Tuy nhiên, thuật tốn phản chiếu Householder nặng băng thơng khơng thể song song hóa, phản xạ tạo phần tử thay đổi toàn bộ ma trận Q và R - ... [Q,R] = qr (A) tạo thuật toán sau : [Q,R] = qr (A) A= Q*R i=1:n [Q,R] = qr( Ai ) Ai +1=R*Q So sánh với ma trận D ch? ?a trị riêng nằm đường chéo tạo hàm [V,D] = eig (A) trong matlab kết ví dụ ta thấy... trình Matlab để phân tích A = QR phép biến đổi Householder: Chương trình phân tích A= QR function [Q,R] = qr (A) % Compute the QR decomposition of an m-by-n matrix A using % Householder transformations... transformations A= input('nhap A: '); [m,n] = size (A) ; Q = eye(m); % Orthogonal transform so far R = A; % Transformed matrix so far for j = 1:n % Find H = I-tau*w*w’ to put zeros below R(j,j) normx = norm(R(j:end,j));