Triển khai phương pháp Jacobi-Davidson cho bài toán eigenvalue khối


9

Tôi có một vấn đề eigenvalue khối lớn:

(A0+λA1+λ2A2+λ3A3)x=0.

Tôi có thể giải quyết điều này bằng cách chuyển đổi sang một vấn đề eigenvalue tuyến tính nhưng nó sẽ dẫn đến một hệ thống lớn như sau:32

[A0000I000I][xyz]=λ[A1A2A3I000I0][xyz],

trong đó và . Những kỹ thuật khác có sẵn để giải quyết một vấn đề eigenvalue khối? Tôi đã nghe nói rằng có một phiên bản Jacobi-Davidson sẽ giải quyết nó nhưng chưa tìm thấy một triển khai.y=λxz=λy

Ngoài ra, tôi cần có khả năng nhắm mục tiêu các giá trị riêng cụ thể tương tự như phương pháp thay đổi và đảo ngược của ARPACK và tìm các hàm riêng liên quan.


Các kích thước của ma trận liên quan là gì?
Bill Barth

Ai là đơn hàng . Tôi có hai công thức khác nhau của vấn đề này, một công thức trong đó dày đặc và trong công thức còn lại thì thưa thớt. 10000×10000Ai
OSE

1
SLEPc có các thói quen cho các vấn đề eigenvalue bậc hai và các vấn đề eigenvalue phi tuyến, vì vậy bạn có thể tìm thấy những gì bạn cần ở đó. Nó cũng có các cơ sở dịch chuyển và đảo ngược, và có giao diện với ARPACK.
Geoff Oxberry

Câu trả lời:


5

Với giao thức truyền thông ngược của ARPACK, bạn không cần lưu trữ ma trận một cách rõ ràng: bạn chỉ cần cung cấp hai hàm tính toán:3n×3n

[xyz][A0xyz][xyz][A1x+A2y+A3zyz]

(bạn vẫn phải trả giá cho việc lưu trữ các vectơ chiều nhưng bạn không phải trả bất cứ điều gì cho ma trận).3×n

Về biến đổi nghịch đảo, bạn có thể thực hiện tương tự, tức là tự thực hiện bằng cách sử dụng hàm gọi lại tính thay vì và thay thế bằng . Để tính toán , bạn có thể tính trước ma trận , nghĩa là chỉ bao gồm tiền tố (sử dụng các phiên bản LU, Cholesky hoặc thưa thớt của chúng tùy thuộc vào cấu trúc của ma trận). Đối với biến đổi đảo ngược hoàn toàn, tôi nghĩ rằng một cái gì đó tương tự có thể được thực hiện.xM1xxMxλsλ1M1xMA0

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.