주요 콘텐츠

qz

일반 고유값에 대한 일반화된 슈어(QZ) 분해

    설명

    [AA,BB,Q,Z] = qz(A,B)는 정사각 행렬 AB에 대해 Q*A*Z = AAQ*B*Z = BB가 되도록 QZ 분해를 수행합니다.

    예제

    [AA,BB,Q,Z,V,W] = qz(A,B)AB에 대해 열이 각각 일반화 좌고유벡터 및 일반화 우고유벡터인 행렬 VW도 반환합니다.

    예제

    [___] = qz(A,B,mode)mode"real"인 경우 실수 분해를 반환하고 mode"complex"인 경우 잠재적 복소수 분해를 반환합니다. 이 구문을 위에 열거된 구문의 모든 출력 인수 조합과 함께 사용하십시오.

    예제

    예제

    모두 축소

    2개의 3×3 행렬에 대한 QZ 분해를 계산합니다.

    A = [1 7 3; 2 9 12; 5 22 7];
    B = [3 1 0; 0 3 1; 0 0 3];
    [AA,BB,Q,Z] = qz(A,B)
    AA = 3×3
    
       23.5574    1.4134  -14.3485
             0   -0.5776    2.7629
             0         0   -8.6720
    
    
    BB = 3×3
    
        3.5845   -0.1090   -0.6024
             0    2.7599    0.8430
             0         0    2.7292
    
    
    Q = 3×3
    
        0.2566    0.6353    0.7284
       -0.9477    0.3134    0.0604
       -0.1899   -0.7058    0.6824
    
    
    Z = 3×3
    
        0.1502   -0.9664   -0.2088
        0.4689    0.2556   -0.8455
        0.8704    0.0291    0.4915
    
    

    기계 정밀도 내에서 AA - Q*A*Z, BB - Q*B*Z, Q'*Q - eye(size(Q)), Z'*Z - eye(size(Z))의 노름이 0인지 확인합니다.

    norm(AA - Q*A*Z)
    ans = 
    6.3184e-15
    
    norm(BB - Q*B*Z)
    ans = 
    1.7936e-15
    
    norm(Q'*Q - eye(size(Q)))
    ans = 
    8.8320e-16
    
    norm(Z'*Z - eye(size(Z)))
    ans = 
    5.1071e-16
    

    QZ 분해를 계산하고 2개의 2×2 행렬의 일반화된 고유벡터도 반환합니다.

    A = [10 -7; -3 2];
    B = [7 3; 12 9];
    [AA,BB,Q,Z,V,W] = qz(A,B)
    AA = 2×2
    
       11.9600   -4.3532
             0   -0.0836
    
    
    BB = 2×2
    
        1.6381   -2.9374
             0   16.4830
    
    
    Q = 2×2
    
       -0.9597    0.2811
        0.2811    0.9597
    
    
    Z = 2×2
    
       -0.5752    0.8180
        0.8180    0.5752
    
    
    V = 2×2
    
       -0.7031    0.6960
        1.0000    1.0000
    
    
    W = 2×2
    
       -1.0000    0.2929
        0.4537    1.0000
    
    

    기계 정밀도 내에서 Q*A*Z - AAQ*B*Z - BB의 요소가 0인지 확인합니다.

    Q*A*Z - AA
    ans = 2×2
    10-14 ×
    
             0    0.1776
       -0.1034   -0.1360
    
    
    Q*B*Z - BB
    ans = 2×2
    10-14 ×
    
       -0.0222         0
        0.0888   -0.3553
    
    

    eig 함수를 사용하여 AB의 일반 고유값과 우고유벡터 및 좌고유벡터를 계산합니다. 기계 정밀도 내에서 A*V - B*V*DW'*A - D*W'*B의 요소가 0인지 확인합니다.

    [V,D,W] = eig(A,B);
    A*V - B*V*D
    ans = 2×2
    10-14 ×
    
             0   -0.2297
       -0.7105   -0.0860
    
    
    W'*A - D*W'*B
    ans = 2×2
    10-14 ×
    
        0.7105   -0.3553
       -0.1235   -0.0625
    
    

    2개의 3×3 행렬에 대한 복소수 QZ 분해를 계산합니다.

    A = [1/sqrt(2) 1 0; 0 1 1; 0 1/sqrt(2) 1];
    B = [0 1 1; -1/sqrt(2) 0 1; 1 -1/sqrt(2) 0];
    [AAc,BBc,Qc,Zc] = qz(A,B)
    AAc = 3×3 complex
    
       0.5011 - 0.8679i   0.0332 - 1.0852i   0.3687 + 0.9278i
       0.0000 + 0.0000i   0.1848 - 0.0000i  -0.6334 - 0.3673i
       0.0000 + 0.0000i   0.0000 + 0.0000i   0.5590 + 0.9682i
    
    
    BBc = 3×3 complex
    
       1.0022 + 0.0000i   0.3136 + 0.0711i  -0.0280 + 0.5966i
       0.0000 + 0.0000i   1.3388 + 0.0000i   0.1572 + 0.6846i
       0.0000 + 0.0000i   0.0000 + 0.0000i   1.1180 + 0.0000i
    
    
    Qc = 3×3 complex
    
       0.5379 + 0.2210i   0.4604 - 0.3553i   0.3214 - 0.4693i
       0.2172 + 0.3386i   0.4018 - 0.0188i  -0.7698 + 0.2895i
      -0.3719 - 0.6014i   0.7068 - 0.0213i  -0.0000 - 0.0000i
    
    
    Zc = 3×3 complex
    
       0.2514 + 0.0413i  -0.7279 - 0.4531i  -0.4470 - 0.0135i
      -0.1000 - 0.6068i   0.3328 - 0.3332i  -0.3326 + 0.5379i
       0.6391 + 0.3853i   0.1423 - 0.1511i   0.2996 + 0.5570i
    
    

    mode"real"로 지정하여 AB의 실수 QZ 분해를 계산합니다. A의 일반화된 슈어 형식은 준삼각 행렬이며, 이는 복소수 고유값을 가짐을 나타냅니다.

    [AAr,BBr,Qr,Zr] = qz(A,B,"real")
    AAr = 3×3
    
        0.1464    1.1759    0.3094
             0    1.0360    1.2594
             0   -0.8587    0.3212
    
    
    BBr = 3×3
    
        1.0607   -0.5952    0.1441
             0    1.6676         0
             0         0    0.8481
    
    
    Qr = 3×3
    
        0.0000   -0.0000   -1.0000
       -0.7882   -0.6154    0.0000
       -0.6154    0.7882   -0.0000
    
    
    Zr = 3×3
    
       -0.7071    0.2610   -0.6572
        0.5000   -0.4727   -0.7257
       -0.5000   -0.8417    0.2037
    
    

    삼각 행렬 AAc의 경우, diag(AA)./diag(BB)를 사용하여 고유값을 계산합니다.

    diag(AAc)./diag(BBc)
    ans = 3×1 complex
    
       0.5000 - 0.8660i
       0.1381 - 0.0000i
       0.5000 + 0.8660i
    
    

    준삼각 행렬 AAr의 경우, ordeig 함수를 사용하여 고유값을 계산합니다.

    ordeig(AAr,BBr)
    ans = 3×1 complex
    
       0.1381 + 0.0000i
       0.5000 + 0.8660i
       0.5000 - 0.8660i
    
    

    입력 인수

    모두 축소

    입력 행렬로, 실수 또는 복소수 정사각 행렬로 지정됩니다. AB는 차원이 동일해야 합니다.

    데이터형: single | double
    복소수 지원 여부:

    분해 모드로, 다음 값 중 하나로 지정됩니다.

    • "complex"qz는 잠재적 복소수 분해를 반환하고 AABB는 삼각 행렬입니다.

    • "real"qz는 실수 분해를 반환하고 AABB준삼각 행렬입니다.

    출력 인수

    모두 축소

    AB의 일반화된 슈어 형식으로, 상부 삼각 행렬 또는 준삼각 정사각 행렬로 반환됩니다.

    • 분해가 복소수이고 AA가 삼각 행렬인 경우 대각선 요소 a = diag(AA)b = diag(BB)A*V*b = B*V*a b'*W'*A = a'*W'*B를 충족하는 일반 고유값입니다.

    • 분해가 실수이고 AA가 준삼각 행렬인 경우 2×2 블록을 더 줄여서 전체 시스템의 고유값을 구해야 합니다. AA에 있는 각각의 2×2 블록은 BB에서 동일한 위치에 있는 2×2 대각선 블록에 대응합니다.

    유니타리 인수로, Q*A*Z = AAQ*B*Z = BB를 충족하는 정사각 행렬로 반환됩니다.

    우고유벡터로, 각 열이 (A,B) 쌍의 일반화된 우고유벡터인 정사각 행렬로 반환됩니다. 고유벡터는 A*V = B*V*D를 충족하며, 여기서 D는 주대각선을 따라 쌍을 이루는 일반 고유값을 포함합니다. eig 함수를 사용하여 D를 반환하고 ordeig 함수를 사용하여 D의 대각선 요소를 반환합니다.

    컴퓨터가 다르거나 MATLAB® 릴리스가 다르면, 같지는 않지만 수치적으로는 정확한 고유벡터가 생성될 수 있습니다.

    • 실수 고유벡터의 경우, 고유벡터의 기호가 달라질 수 있습니다.

    • 복소수 고유벡터의 경우, 크기가 1인 복소수와 고유벡터를 곱할 수 있습니다.

    • 중복 고유값의 경우, 선형 결합을 통해 고유벡터를 다시 결합할 수 있습니다. 예를 들어, Ax = λx이고 Ay = λy인 경우 A(x+y) = λ(x+y)이므로, x+yA의 고유벡터입니다.

    좌고유벡터로, 각 열이 (A,B) 쌍의 일반화된 좌고유벡터인 정사각 행렬로 반환됩니다. 고유벡터는 W'*A = D*W'*B를 충족하며, 여기서 D는 주대각선을 따라 쌍을 이루는 일반 고유값을 포함합니다. eig 함수를 사용하여 D를 반환하고 ordeig 함수를 사용하여 D의 대각선 요소를 반환합니다.

    컴퓨터가 다르거나 MATLAB 릴리스가 다르면, 같지는 않지만 수치적으로는 정확한 고유벡터가 생성될 수 있습니다.

    • 실수 고유벡터의 경우, 고유벡터의 기호가 달라질 수 있습니다.

    • 복소수 고유벡터의 경우, 크기가 1인 복소수와 고유벡터를 곱할 수 있습니다.

    • 중복 고유값의 경우, 선형 결합을 통해 고유벡터를 다시 결합할 수 있습니다. 예를 들어, Ax = λx이고 Ay = λy인 경우 A(x+y) = λ(x+y)이므로, x+yA의 고유벡터입니다.

    세부 정보

    모두 축소

    • QZ 분해로부터 일반 고유값 문제 Ax=λBx를 푸는 일반 고유값을 계산할 수 있습니다. 삼각 행렬 AA의 경우 diag(AA)./diag(BB)를 사용하여 고유값을 계산합니다. 준삼각 행렬 AA의 경우 ordeig(AA,BB)를 사용하여 고유값을 계산합니다.

    확장 기능

    모두 확장

    버전 내역

    R2006a 이전에 개발됨

    참고 항목

    | | |