Làm thế nào để thuật toán QR được áp dụng cho một ma trận thực trả về các giá trị riêng phức tạp?


8

Tôi là một người không biết gì về thuật toán eigenvalues, nhưng có gì đó khiến tôi chú ý. Thuật toán QR hoạt động với ma trận thực / phức tạo ra các giá trị riêng thực / phức. Tuy nhiên, nó không thể tạo ra các giá trị riêng phức tạp từ một ma trận thực . Đây là một ví dụ đơn giản được viết bằng Julia và xuất phát từ đâyđây :

using LinearAlgebra
A = [7 3 4 11 -9 -2;
    -6 4 -5 7 1 12;
    -1 -9 2 2 9 1;
    -8 0 -1 5 0 8;
    -4 3 -5 7 2 10;
    6 1 4 -11 -7 -1]
M = copy(A)

for i=1:100
    global M
    Q,R = LinearAlgebra.qr(M);
    M=R*Q;
end

display(diag(M))
display(eigvals(A))

6-element Array{Float64,1}:
 -2.8415406888480472
  8.675063708533656
  3.658872985794657
  6.3411270142053695
  0.12201942568224483
  3.0444575546321087
6-element Array{Complex{Float64},1}:
  2.916761509842819 + 13.248032079355992im
  2.916761509842819 - 13.248032079355992im
  5.000000000000005 + 6.000000000000003im
  5.000000000000005 - 6.000000000000003im
 1.5832384901571723 + 1.4155521348117128im
 1.5832384901571723 - 1.4155521348117128im

Xác định ma trận A là phức tạp, chỉ có các thành phần thực, không có sự khác biệt.

Câu hỏi của tôi là:

  • hiểu lầm khái niệm của tôi về chủ đề này là gì?
  • Tôi đang làm sai bước nào?
  • Và làm thế nào để khắc phục nó ?

Cảm ơn bạn


2
Về câu trả lời của Christian Clason, bạn có thể cho kiểm tra trường hợp mà thấp nhất khối có một dấu vết ,12201942568224483 + 3,0444575546321087 = 3,1664769803143535 đó cũng là khoảng hai lần so với một phần thực sự của cặp eigenvalue cuối cùng 2 * 1,5832384901571723 = 3,1664769803143447 . Mối quan hệ tương tự sẽ giữ cho hai cặp còn lại, nhưng mối quan hệ thứ tự ở đó không được đảm bảo như lần cuối, luôn luôn là giá trị riêng nhỏ nhất trong thuật toán QR đơn giản mà không có dịch chuyển hoặc tiếng chuông khác. 2×20.12201942568224483+3.0444565546321087= =3.16647698031435352*1.5832384901571723= =3.1664769803143447
Lutz Lehmann

3
Ma trận thực có thể có giá trị riêng phức tạp. Ma trận thực và đối xứng chỉ có thể có giá trị riêng thực. math.stackexchange.com/questions/67304/ Mạnh
R zu

Câu trả lời:


13

Tóm lại, thuật toán QR áp dụng cho một ma trận Một là một thủ tục lặp đi lặp lại rằng hội tụ đến Schur thực phân hủy: một ma trận unita Q và một ma trận R trong khối dạng trên hình tam giác (xem dưới đây) sao cho Một= =QRQT . Nó sau đó các cột của Q là vector riêng (đó là những đối tượng chủ yếu được tính!) Và R có giá trị riêng giống như Một .

Điểm mấu chốt là dạng tam giác khối trên , có nghĩa là

R= =(R11*0Rmm),
trong đóRTôiTôicáckhốithựccủa một trong hai

  • kích thước 1×1 , trong trường hợp RTôiTôi là giá trị riêng (thực) của Một , hoặc
  • kích thước 2×2 , trong trường hợp RTôiTôi có một cặp giá trị riêng liên hợp phức tạp của Một (chẳng hạn như 2+Tôi2-Tôi ).

2×2Reigvals

n×nnMột= =(0-110)±TôiR2×2 các khối (ví dụ: bằng cách kiểm tra xem một phần tử phụ có lớn hơn dung sai không) và nếu vậy, tính toán giá trị riêng theo công thức.

eigenvalues2×2

using LinearAlgebra
A = [7 3 4 11 -9 -2;
    -6 4 -5 7 1 12;
    -1 -9 2 2 9 1;
    -8 0 -1 5 0 8;
    -4 3 -5 7 2 10;
    6 1 4 -11 -7 -1]
M = copy(A)

for i=1:100
    global M
    Q,R = LinearAlgebra.qr(M);
    M=R*Q;
end

eig = Complex{Float64}[]
let
    i=1
    N=size(M,1)
    while i<N   
        if abs(M[i+1,i])<1e-10             
            append!(eig,M[i,i])         
            i+=1         
        else             
            append!(eig,eigvals(M[i:i+1,i:i+1]))         
            i+=2         
        end                 
    end
    if length(eig)<N
       append!(eig,M[N:N,N:N])
    end                 
end       

Tôi không nghĩ rằng tôi hiểu quan điểm của bạn. Trong ví dụ của tôi, ma trận M có chứa các giá trị riêng. Làm thế nào tôi có thể có được các giá trị riêng phức tạp từ nó? (nếu ai đó có thể cung cấp mã nguồn sẽ tốt hơn)
Noel Araujo

2
R

2
Một lợi thế của phương pháp này là bất kỳ cách hợp lý nào để tìm giá trị riêng của các khối 2x2 đảm bảo rằng các giá trị riêng phức tạp đi theo các cặp liên hợp phức tạp như lý thuyết yêu cầu.
Brian Borchers

3
@NoelAraujo Bạn nên nhìn vào ma trận đầy đủ M, không chỉ là đường chéo diag(M)(vì Mkhông phải là đường chéo cũng không phải là hình tam giác). Sau đó, bạn sẽ thấy các khối 2x2. Bạn có thể kiểm tra yêu cầu của tôi với, ví dụ , eigvals(M[1:2,1:2]). (@BrianBorchers Đó là một mánh khóe gọn gàng!)
Christian Clason

2
@KutalmisB Nếu bạn muốn các hàm riêng phức tạp (chứ không phải là một hàm riêng thực sự), cách dễ nhất có lẽ là cách tiếp cận của Brian để làm việc trong số học phức tạp ngay từ đầu. Trích xuất các hàm riêng phức tạp từ hệ số Schur thực có thể được thực hiện nhưng khó hơn; bạn có thể thấy LAPACK làm điều đó như thế nào .
Christian Clason

5

Hãy quên thuật toán QR và nhớ giá trị bản địa là gì - chúng là gốc của đa thức đặc trưng cho ma trận (xem ví dụ https://en.wikipedia.org/wiki/Characteristic_polynomial ). Đối với một ma trận thực của đơn hàng N, đây là một đa thức của đơn hàng N với các hệ số thực. Nhưng hệ số thực không có nghĩa là rễ thực sự nhất thiết, bạn có thể có các cặp liên hợp phức tạp. Do đó, một ma trận thực nói chung có thể có giá trị riêng phức tạp.


0

Tôi đã sử dụng phương trình này nhiều lần để kiểm tra sự hội tụ. Số 11 ở hàng đầu tiên phải là -11. Chạy thuật toán QR mà không thay đổi, giống như ma trận, trong khoảng 60 lần lặp lại dẫn đến một ma trận với các giá trị riêng hiển thị gần như chính xác trên đường chéo, ngay cả những đường phức tạp. 5 + -6i nằm ở hai dòng đầu tiên, 4 và 3 ở hai dòng tiếp theo và cuối cùng là 1 + -21 ở khối dưới cùng bên phải. Đừng nghĩ rằng các giá trị phức tạp thường xuất hiện rõ ràng mà không cần tính toán giá trị ma trận 2x2.

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.