Ngoài bài viết Golub-Reinsch (bây giờ là cổ điển) mà Brian ghi chú trong câu trả lời của anh ấy (tôi đã liên kết với phiên bản Sổ tay của bài báo), cũng như bài báo tiền thân (cũng là cổ điển) của Golub-Kahan , đã có một số kể từ những phát triển quan trọng trong việc tính toán SVD kể từ đó. Đầu tiên, tôi phải tóm tắt cách thức hoạt động của phương pháp thông thường.
Ý tưởng trong việc tính toán SVD của ma trận tương tự về mặt chất lượng với phương pháp được sử dụng để tính toán sự xuất tinh của ma trận đối xứng (và, như đã lưu ý trong OP, có một mối quan hệ mật thiết giữa chúng). Cụ thể, một tiến hành trong hai giai đoạn: chuyển đổi thành ma trận hai chiều , sau đó tìm SVD của ma trận hai chiều. Điều này hoàn toàn tương tự như quy trình đầu tiên giảm ma trận đối xứng thành dạng tam giác, và sau đó tính toán sự xuất tinh của kết quả tam giác.
Để tính toán SVD của ma trận hai chiều, một bước đột phá đặc biệt thú vị là bài báo của Jim Demmel và Velvel Kahan , đã chứng minh rằng người ta có thể tính toán ngay cả các giá trị số ít của ma trận hai chiều với độ chính xác tốt, bằng cách sửa đổi phù hợp phương pháp ban đầu được đề xuất trong Golub-Reinsch. Điều này sau đó đã được tiếp theo là (lại?) Phát hiện ra các DQD thuật toán , mà là một hậu duệ của thuật toán thương-chênh lệch cũ của Rutishauser. (Beresford Parlett đưa ra một cuộc thảo luận tốt đẹp ở đây.) Nếu bộ nhớ phục vụ, đây hiện là phương thức ưa thích được sử dụng bởi LAPACK. Ngoài ra, người ta luôn có thể rút ra các phiên bản SVD của sự phát triển trong giải pháp các biểu tượng bản địa đối xứng; chẳng hạn, có một phiên bản phân chia và chinh phục SVD, cũng như một phiên bản SVD của thuật toán Jacobi cũ (có thể chính xác hơn trong một số trường hợp).
Đối với phương pháp hai chiều, một phương pháp cải tiến đã được phác thảo trong bài báo của Barlow , đòi hỏi nhiều công sức hơn so với quy trình ban đầu của Golub và Reincsh, nhưng mang lại ma trận hai chiều chính xác hơn.