Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
212,49 KB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠẠ̣I HỌC BÁCH KHOA BÁO CÁO KÈM CODE MATLAB Chủ đề: pPhân tích QR phép quay Given Nhóm Lớp: L10 Giáo viên HD: Nguyễn Xuân Mỹ Danh sách thành viên nhóm: STT Họ tên MSSV Châu An Huy Nguyễn Hữu Nhật Huy Đỗ Trường Duy Phạm Thành Vinh Hoàng Huy Hoàng Mai Xuân HảiNguyễn Quốc Hùng Nguyễn Hoàng Minh Trần Huy Hoàng Trần Văn Thắng Nguyễn Quang Lực Nguyễn Hữu Hiếu Trần Xuân Nhật 2113453 1710774 2113509 1713986211 1230 1711179 2113585 1712176 2113418 1713252 1713252 1711292 1712479 I Nội dung: *1 Yêu cầu đặt ra: Nhập vào ma trận A có vectơ cột độc lập tuyến tính, viết chương trình dựa vào phương pháp phép quay Given xuất hai ma trận Q R thỏa A=Q*R với Q ma trận vng có vectơ cột độc lập tuyến tính trực giao, R ma trận tam giác Nêu sở lý thuyết phân tích A=QR phép quay Given Viết chương trình dùng để phân tích A=QR phép quay Given Tìm ứng dụng phân tích A=QR 21 Cơ sở lí thuyết: - Cho A thuộc Mn (R) Tìm ma trận trực giao P1, P2, , Pk-1, Pk (là ma trận phép quay Rn) với k thuộc N để: (P1P2 Pk-1,Pk)A = R => A = (P1P2 Pk-1,Pk)-1R = QR Với Q = (P1P2 Pk-1,Pk)-1 *Cách chọn ma trận P là: P có dạng(P trực giao): Cột i Cột j ↓ ↓ cos(a) sin(a) → Hàng i cos(a) → Hàng j Pij= -sin(a) Giả sử có vectơ cột v=(v1, v2, , vi, ,vj, ,vn)T Mục tiêu dùng phép quay P để khử phần tử thứ j vectơ cột v dựa vào phần tử thứ i v Để làm điều này, ta tìm ma trận quay thỏa: v1 v2 vicos(a) + vjsin(a) Pijv= -visin(a) + vjcos(a) Chọn phép quay cho thực phép nhân Pijv vị trí thứ j 0, tức là: - visin(a) + vjcos(a) = Ta chọn: vj √v i sin(a) = +v j2 vi √v i cos(a) = +v j2 Khi đó, phần tử thứ i v là: v i2 vicos(a) + vjsin(a) = v j2 2 √v i +v j + √v i v i2+v j2 +v j = √v i +v j = √v i2+v j2 Thuật toán bản: BƯỚC 1: -kKiểm tra xem ma trận A có vectơ cột độc lập tuyến tính với hay không Nếu không xuất hình: “ma trận A có vectơ cột khơng độc lập tuyến tính với nhau” Nếu có ta tiếp tục với bước BƯỚC 2: a11 a12 a13 a1n a21 a22 a23 a2n Vòng lặp chạy theo hướng mũi ↓ Amn = a31 →a32 a33 a3n xanh am1 → am2 tên qua phần tử màu → am3 amn -Như hình ta chạy vịng lặp từ hàng h=2 đến hàng h=m từ cột k=1 đến cột k=i-1 từ xuống dưới, từ trái qua phải Trường hợp vị trí số hàng lớn số cột hai đơn vị trở lên ta cho chạy từ cột k=1 đến k=n để tránh xét thiếu trường hợp, xem ma trận để rõ hơn: a11 a12 a13 a21 a22 a23 a31 a32 a33 Nếu dừng việc xét đến h-1 hàng h=5 => k=5-1=4 => vòng lặp ↓ A6x3 = a41 a42 a43 chạy từ cột đến cột 4, điều SAI ma a51 a52 a53 trận có cột, a61 a62 a63 k phải chạy đến n=3 BƯỚC 3: Tìm ma trận P -Gán: P ma trận đơn vị cấp m Q -Tại vị trí theo thứ tự vịng lặp ta xét xem phần từ có chưa, chưa ta tạo ma trận P nhân với A để phần tử P ma trận vuông bậc m tạo thành từ việc thay phần tử cos(a), sin(a) , -sin(a), cos(a) vào vị trí thích hợp ma trận đơn vị ban đầu Theo sở lý thuyết phía thì: phần tử có vị trí (h,k) ma trận A, ta có: i=k [ta khử vj dựa vào vi với vi phần tử nằm đường j=h chéo có vị trí (k,k)] => Phk=-sin(a) Phh=cos(a) => Pkk=cos(a) Pkh=sin(a) Pkk=cos(a) BƯỚC 4: Gán: - Phk=-sin(a) - Pkk=cos(a) - Pkh=sin(a) - Phh=cos(a) - R P nhân A - Q P nhân Q BƯỚC 5: Xuất hình phần ma trận Q phần ma trận R: -PhầnQ nghịch đảo Q -PhầnR R 43 Code: disp('Day la chuong trinh duoc viet de phan tich QR bang phep quay Given'); a=input('Nhap vao ma tran A can phan tich QR: A='); if rank(a')