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ω1−Aω1||2+||Dω2−Aω2||2+...+||Dωk−Aωk||2.
Tối thiểu có công thức chính xác,
di=ωi1Aω11+ωi2Aωi2...+ωikAωik(ωi1)2+(ωi2)2+...+(ωik)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
||A−1i,i||−1≥∑j||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ω1−Aω1||2+||Bω2−Aω2||2+...+||Bωk−Aω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)ω(l)T1+...+(Aωk)(l)ω(l)Tk][ω(l)1ω(l)T1+...+ω(l)kω(l)Tk]−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)ω(l)iAω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,