Tìm giá trị riêng lớn thứ của ma trận


8

Đưa ra một ma trận A lớn với giá trị riêng σ1σ2 , tôi muốn chỉ xác định một tập hợp con của các giá trị này, giả sử σ5,σ8σ19 . Có một thuật toán có thể làm điều này, hoặc đang tìm ra 19 giá trị riêng hàng đầu tốt nhất có thể được thực hiện?


Ma trận của bạn có thuộc tính đặc biệt nào không? Bạn có biết đại khái các giá trị cho σ5 , σ8σ19 không?
nicoguaro

Không. Nhưng hãy cho tôi biết nếu có bất kỳ kết quả nào giả định bất kỳ tính chất đặc biệt nào.
dexter04

Liên quan: stackoverflow.com/questions/12167654/ Có lẽ bạn có thể xác định phương thức đằng sau hậu trường ở đó.
carlosvalderrama

Tôi sẽ đoán một cái gì đó theo hướng không gian con Krylov, lặp đi lặp lại Arnoldi hoặc Lanczos là bắt buộc.
carlosvalderrama

2
Nếu ma trận của bạn là Hermiti, có đảm bảo rằng bạn có bộ giá trị riêng được đặt hàng, vì tất cả chúng đều có thật. Ngoài ra, nếu bạn biết đại khái các giá trị bạn có thể thử sử dụng phương pháp shift-invert. Vào cuối ngày, tôi nghĩ rằng có thể dễ dàng tìm thấy n evalvalues đầu tiên .
nicoguaro

Câu trả lời:


6

Không, không có gì, theo như tôi biết, trừ khi bạn biết khoảng vị trí của các giá trị bản địa này. Đối với các phương thức có thể tính toán một tập hợp con của phổ của ma trận, tôi chỉ biết các phương thức có thể tạo ra:

  • giá trị riêng từ "các cực trị của phổ", ví dụ, các cực trị có giá trị tuyệt đối lớn nhất hoặc với phần thực / ảo nhất âm. Ví dụ lặp Arnoldi / không gian con (thay đổi phù hợp).
  • giá trị riêng gần nhất với một điểm đã cho trong mặt phẳng phức, ví dụ: điểm nhỏ nhất trong mô đun (gần nhất với 0). Ví dụ (hợp lý) dịch chuyển và đảo ngược Arnoldi hoặc phép lặp công suất nghịch đảo.
  • giá trị riêng trong một khu vực cụ thể của mặt phẳng, ví dụ . Tôi nghĩ rằng các phương pháp kiểu FEAST làm điều này, nhưng tôi biết rất ít về chúng.[1,1]×[1,1]

Theo những gì tôi hiểu, với các phương thức kiểu FEAST, bạn cũng có thể nhận được số lượng giá trị riêng trong một vùng xác định của mặt phẳng phức (thông qua tích phân đường viền), do đó, trong trường hợp bạn cần một giá trị riêng được chỉ định từ giữa phổ , ví dụ thứ 300, bạn có thể chạy một loại tìm kiếm chia đôi: giả sử (dịch chuyển và chia tỷ lệ) rằng phổ của ma trận của bạn nằm trong (và đó là thực tế, vì đơn giản). Tính toán giá trị riêng gần nhất với . Tính số lượng giá trị riêng trong . Nếu nó lớn hơn 300, hãy tìm giá trị riêng gần nhất với trung điểm của , nếu không thì giá trị riêng gần nhất với trung điểm của . Nói lại.[1,1]μ12[12,1][μ,1][1,μ]

Tôi không nghĩ bất kỳ thứ gì trong số này sẽ cạnh tranh với vanilla LAArnoldi nếu bạn thay 300 bằng 19, như trong ví dụ của bạn. Và có thể thậm chí không với 300.

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.