Thuật toán QR

Một phần của tài liệu (LUẬN văn THẠC sĩ) về một số thuật toán tính giá trị riêng của ma trận cỡ lớn (Trang 33 - 34)

2 Một số phương pháp tìm giá trị riêng

3.1.1 Thuật toán QR

Trong phần 2.2.2 để tính được giá trị riêng bằng phương pháp Arnoldi, ta phải tính giá trị riêng của ma trận Hessenberg. Trong mục này, ta sẽ trình bày một giải pháp cho bài toán đó. Cụ thể ta sẽ trình bày phương phápQRđể tính phân tích Schur của ma trận Hessenberg.

Algorithm 3.1Thuật toán QR cơ bản

1: ChoA ∈Cn×n. Thuật toán này tìm một ma trận tam giác trênT và một ma trận unitaU sao choA =U T U∗là phân tích Schur củaA.

2: ĐặtA0 := AandU0 =I. 3: fork−1,2, ...do 4: Ak−1 =: QkRk; / * Phân tích nhân QR * / 5: Ak := RkQk; 6: Uk :=Uk−1Qk; / * Cập nhật ma trận biến đổi * / 7: end for 8: ĐặtT := A∞ vàU :=U∞. Từ dòng 4 ta có:Rk =:Q∗kAk−1. Theo dòng 5 ta có Ak =RkQk =R∗kAk−1Qk. (3.1) Như vậy,Ak vàAk−1 là tương đương bởi một ma trận Unita. Người ta chỉ ra rằng những ma trận có tính chất này hội tụ đến một ma trận tam giác trên. Thêm vào đó, nếu ta giả sử các giá trị trên thỏa mãn

Từ (3.1) ta có

Ak =Q∗kAk−1Qk =Q∗kQ∗k−1Ak−2Qk−1Qk =...= Q∗k...Q∗1A0Q1...Qk

| {z }

Uk

.

Khi đó,uk hội tụ đến ma trận gồm các vectơ Schur.

Chú ý, người ta cũng đã chỉ ra bằng cách sử dụng trượtσhay một cặp trượtσ1, σ2,

ta có thể tính phân tích Schur nhanh hơn thuật toán cơ bản.

Trong trường hợpA đối xứng, thuật toán Arnoldi trở thành thuật toán Lanczos. Ma trận Hessenberg trở thành ma trận 3 đường chéo. Tương tự như trên, ta cần tính giá trị riêng của ma trận 3 đường chéo. Thuật toán Chia để Trị của Cuppen sẽ giải quyết việc đó.

Một phần của tài liệu (LUẬN văn THẠC sĩ) về một số thuật toán tính giá trị riêng của ma trận cỡ lớn (Trang 33 - 34)

Tải bản đầy đủ (PDF)

(44 trang)