Trích xuất đường chéo của ma trận đường chéo xấp xỉ khi chúng ta không biết các mục nhập của nó


8

Cách tốt để trích xuất đường chéo từ ma trận đối xứng gần như là đường chéo, nhưng nơi bạn không có các phần tử ma trận (chỉ có khả năng áp dụng nó cho vectơ)?

Các ràng buộc khác là, (1) áp dụng ma trận n-by-n lần để xây dựng đường chéo một cách rõ ràng sẽ rất tốn kém và (2) các yếu tố nhỏ của đường chéo rất quan trọng ngoài các yếu tố lớn.

Dưới đây là hình ảnh ví dụ về loại ma trận tôi muốn trích xuất đường chéo từ (trong trường hợp thử nghiệm quy mô nhỏ):

nhập mô tả hình ảnh ở đây

Câu trả lời:


9

Tôi sẽ trả lời câu hỏi của riêng tôi vì phương pháp sau đây có vẻ rất hiệu quả. Tôi đang làm cho nó trở thành một câu trả lời để mọi người có thể upvote hoặc downvote nó độc lập với câu hỏi nếu họ nghĩ nó tốt hay xấu.

Trả lời: sử dụng phương pháp thăm dò ma trận ngẫu nhiên áp dụng cho đường chéo của ma trận.

Aω1,ω2,..,ωkAAω1,Aω2,...,Aωk

mindiagonal D||Dω1Aω1||2+||Dω2Aω2||2+...+||DωkAωk||2.

Tối thiểu có công thức chính xác,

di=ω1iAω11+ω2iAω2i...+ωkiAωki(ω1i)2+(ω2i)2+...+(ωki)2.

Mã Matlab, ví dụ:

omegas = randn(16,3); 
dprobe=sum(omegas.*(A*omegas),2)./sum(omegas.^2,2);

Trong ma trận ví dụ của tôi, với 3 vectơ thăm dò, đường chéo chính xác và đường chéo được thăm dò so sánh như sau:

[dprobe, diag(A)]

ans =

1.0e+04 *

2.3297    2.4985
0.4596    0.4921
0.1322    0.0897
0.2838    0.1764
0.0989    0.0999
0.0106    0.0071
0.0068    0.0068
0.0469    0.0571
0.0070    0.0070
0.0355    0.0372
0.0059    0.0060
0.0071    0.0064
0.0067    0.0067
0.0026    0.0021
0.0012    0.0012
0.0015    0.0013

Cập nhật: Tôi đã thử nghiệm áp dụng những ý tưởng này cho ma trận khối đối xứng, vì một ma trận tôi đang làm việc gần như chặn đường chéo trong một cơ sở giống như sóng con. Nó dường như hoạt động khá tốt để xây dựng các điều kiện tiên quyết miễn là ma trận "chiếm ưu thế theo đường chéo" (định nghĩa là một chút khó khăn), và miễn là bạn đối xứng với các khối được xây dựng lại hình vuông nhỏ nhất.

Hãy nhớ lại rằng một ma trận được phân chia thành các khối là khối chiếm ưu thế theo đường chéo nếu Ai,j

||Ai,i1||1j||Ai,j||.

Cho ngẫu nhiên gaussian như trên, chúng tôi cố gắng tìm cách tái tạo đường chéo khối vuông nhỏ nhất sau đây:ω

minblock diagonals B||Bω1Aω1||2+||Bω2Aω2||2+...+||BωkAωk||2.

Sau một số thao tác sản phẩm tenor, bạn có thể tìm thấy công thức chính xác cho khối thứ bằng cách giải quyết các vấn đề cục bộ:lB~(l)

B~(l)=[(Aω1)(l)ω1(l)T+...+(Aωk)(l)ωk(l)T][ω1(l)ω1(l)T+...+ωk(l)ωk(l)T]1,

trong đó và là các phần của và tương ứng với các chỉ số của khối '.(Aωi)(l)ωi(l)Aωiωil

Nếu tôi chỉ sử dụng các , điều kiện tiên quyết có vẻ khá tệ, nhưng nếu tôi đối xứng như sau,B~

B(l)=(B~(l)+B~(l)T)/2,

trong các thí nghiệm của tôi, nó trở nên tốt như thể tôi đã sử dụng các khối đường chéo thực sự (thường tốt hơn!). Dưới đây là một ma trận ví dụ trong hình ảnh, nhập mô tả hình ảnh ở đây


3
Đừng ngần ngại trả lời câu hỏi của riêng bạn. Đây chính xác là loại điều chúng tôi muốn trên SciComp (Tôi đã thực hiện nó). Bạn có thể muốn chờ đợi để chấp nhận câu trả lời của riêng bạn, trong trường hợp câu trả lời tốt hơn xuất hiện. Tốt hơn là trả lời câu hỏi của riêng bạn (khi bạn có câu trả lời) hơn là không trả lời; chúng tôi khuyến khích tất cả người dùng làm theo ví dụ của bạn, nếu có thể.
Geoff Oxberry 17/03/2016

Ok, rất vui khi nghe điều đó! Tôi sẽ chờ đợi để chấp nhận trong một vài ngày trong trường hợp bất cứ ai khác có câu trả lời tốt hơn.
Nick Alger
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.