Thuật toán nhanh nhất để tính toán ma trận nghịch đảo và yếu tố quyết định của nó đối với ma trận đối xứng xác định dương là gì?


10

Cho một ma trận đối xứng xác định dương, thuật toán nhanh nhất để tính toán ma trận nghịch đảo và định thức của nó là gì? Đối với các vấn đề tôi quan tâm, kích thước ma trận là 30 hoặc ít hơn.

  1. Độ chính xác và tốc độ cao là thực sự cần thiết. (hàng triệu ma trận được thực hiện)
  2. Yếu tố quyết định là cần thiết. Trong mỗi phép tính, chỉ cần một yếu tố của ma trận nghịch đảo. Cảm ơn!

Bạn có phải đảo ngược hàng triệu ma trận như vậy không? Nếu không, tốc độ không phải là một vấn đề.
Wolfgang Bangerth

Tôi chỉnh sửa tiêu đề và câu hỏi của bạn cho rõ ràng. Nếu tôi có bất kỳ lỗi nào, xin vui lòng cho tôi biết.
Geoff Oxberry

@Wolfgang Bangerth Vâng, tốc độ nên được xem xét.
Đơn đặt hàng

1
Bạn có biết phần tử nào của ma trận nghịch đảo là cần thiết không? Hoặc nó có thể là một mục ngẫu nhiên?
Ghi nhớ

2
@ Tổ chức Nhận xét và chỉnh sửa của bạn có vẻ mâu thuẫn: bạn có cần một yếu tố nghịch đảo hay tất cả chúng không?
Federico Poloni

Câu trả lời:


12

Đối với các vấn đề tôi quan tâm, kích thước ma trận là 30 hoặc ít hơn.

Như WolfgangBangerth lưu ý, trừ khi bạn có một số lượng lớn các ma trận này (hàng triệu, hàng tỷ), hiệu suất đảo ngược ma trận thường không phải là một vấn đề.

Cho một ma trận đối xứng xác định dương, thuật toán nhanh nhất để tính toán ma trận nghịch đảo và định thức của nó là gì?

Nếu tốc độ là một vấn đề, bạn nên trả lời các câu hỏi sau:

  • Bạn có thực sự cần toàn bộ nghịch đảo? (Nhiều ứng dụng không cần phải tạo thành một nghịch đảo rõ ràng.)
  • Bạn có thực sự cần yếu tố quyết định? (Các yếu tố quyết định là không phổ biến, nhưng chắc chắn không phải là chưa từng thấy trong khoa học tính toán.)
  • Bạn có cần độ chính xác cao? (Các thuật toán có độ chính xác thấp có xu hướng nhanh hơn.)
  • Một xấp xỉ xác suất sẽ đủ? (Các thuật toán xác suất có xu hướng nhanh hơn.)

Đáp ứng tiêu chuẩn cho vấn đề của bạn về việc đảo ngược một ma trận xác định nhỏ, dương và tính toán xác định của nó sẽ là phân rã Cholesky. Nếu , thì và . det ( A ) = n i = 1 l 2 i i det ( A - 1 ) = n i = 1 l - 2 i iA=LLTdet(A)=i=1nlii2det(A1)=i=1nlii2

Giả sử là bằng , phép phân tách Cholesky có thể được tính trong khoảng flops, tức là khoảng một nửa chi phí cho phép phân tách LU. Tuy nhiên, thuật toán như vậy sẽ không được coi là "nhanh". Một phân tách LU ngẫu nhiênn n n 3 / 3Annn3/3có thể là một thuật toán nhanh hơn đáng để xem xét nếu (1) bạn thực sự phải tính một số lượng lớn ma trận, (2) hệ số hóa thực sự là bước giới hạn trong ứng dụng của bạn và (3) bất kỳ lỗi nào xảy ra khi sử dụng thuật toán ngẫu nhiên là chấp nhận được Ma trận của bạn có thể quá nhỏ để các thuật toán thưa thớt đáng giá, do đó, các cơ hội khác cho các thuật toán nhanh hơn sẽ yêu cầu cấu trúc ma trận bổ sung (ví dụ: dải) hoặc khai thác cấu trúc vấn đề (ví dụ: có thể bạn có thể cấu trúc lại thuật toán một cách khéo léo để bạn không cần dài hơn để tính toán một ma trận nghịch đảo hoặc xác định của nó). Các thuật toán xác định hiệu quả gần như là chi phí để giải quyết một hệ thống tuyến tính, trong phạm vi một yếu tố không đổi, do đó, các đối số tương tự được sử dụng cho các hệ thống tuyến tính cũng áp dụng để tính toán các định thức.


Chỉ cần một lưu ý ngắn gọn: nếu , để tính một yếu tố duy nhất ta nên tính toán chỉ có thứ cột . Khi hệ số Cholesky được tính toán, điều này được thực hiện bằng cách thay thế tiến và lùi đối với vectơ rhs của tất cả các số 0 và chỉ với một số duy nhất trong hàng . Vì việc tính toán có thể bị gián đoạn ngay khi đã được tính toán, trường hợp tốt nhất là cho trường hợp xấu nhất cho trong đó người ta phải tính lại toàn bộ và thay thế về phía trước. b i j j B j b i j b n n = l - 2 n n b 11B=A1bijjBjbijbnn=lnn2b11
Stefano M

@StefanoM Thậm chí tốt hơn, bạn có thể hoán vị ma trận của mình trước khi bắt đầu tính toán để bạn luôn ở trong trường hợp tốt nhất.
Federico Poloni
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.