Thuật toán nhanh nhất để tính số điều kiện của một ma trận lớn trong Matlab / Octave


9

Từ định nghĩa về số điều kiện, có vẻ như cần phải đảo ngược ma trận để tính toán nó, tôi tự hỏi liệu một ma trận vuông chung (hoặc tốt hơn nếu xác định dương đối xứng) có thể khai thác một số phân tách ma trận để tính số điều kiện trong một cách nhanh hơn.

Câu trả lời:


7

Việc tính toán số điều kiện (thậm chí xấp xỉ nó trong hệ số 2) dường như có độ phức tạp tương tự như tính toán một hệ số, mặc dù không có định lý nào theo hướng này.

Từ một yếu tố Cholesky thưa thớt của một ma trận xác định dương đối xứng hoặc từ một yếu tố Q R thưa thớt (với Q ẩn ) của một ma trận vuông tổng quát, người ta có thể có được số điều kiện trong định mức Frobenius bằng cách tính toán tập hợp nghịch đảo thưa thớt của ( R T R ) - 1 , nhanh hơn nhiều so với tính toán nghịch đảo hoàn toàn. (Liên quan đến đây là bài viết của tôi: Các chỉ tiêu và giới hạn lai cho các hệ thống tuyến tính quá hạn, Áp dụng đại số tuyến tính 216 (1995), 257-266. Http://www.mat.univie.ac.at/~neum/scan/74 .pdf )RQRQ(RTR)1

A=QR

cond(A)=cond(R)=cond(RTR).




AA=QRRQcond(A)=||A||||A1||(RTR)1

@linello: không hẳn; xem chỉnh sửa của tôi.
Arnold Neumaier

Cảm ơn! Tôi sẽ kiểm tra nó, btw chi phí của bước này là bao nhiêu?
linello

O(n3)

4

Chắc chắn dễ dàng sử dụng phân tách eigenvalue / eigenvector của ma trận đối xứng hoặc SVD của ma trận chung để tính số điều kiện, nhưng đây không phải là những cách đặc biệt nhanh để tiến hành.

A1condest


Nhưng ước tính đôi khi quá nhỏ. Việc tính toán số điều kiện (thậm chí xấp xỉ nó trong hệ số 2) dường như có độ phức tạp tương tự như tính toán một hệ số, mặc dù không có định lý nào theo hướng này.
Arnold Neumaier

1

HHHTH

Do các giá trị riêng / giá trị đơn lẻ lớn nhất và nhỏ nhất có thể được tìm thấy rất nhanh (rất lâu trước khi quá trình tridia chéo hóa hoàn thành), phương pháp Lanczos đặc biệt hữu ích để tính số điều kiện.


Tôi đã luôn tự hỏi nơi để tìm một mã MATLAB có thể đọc được cho phép lặp lanczos để làm rõ cách lấy giá trị riêng nhỏ nhất hoặc lớn nhất. Bạn có thể gợi ý cho tôi một cái không?
linello

Tôi không có mã MATLAB cho thuật toán Lanczos.
chaohuang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.