qz
일반 고유값에 대한 일반화된 슈어(QZ) 분해
설명
예제
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 - AA와 Q*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 함수를 사용하여 A와 B의 일반 고유값과 우고유벡터 및 좌고유벡터를 계산합니다. 기계 정밀도 내에서 A*V - B*V*D와 W'*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"로 지정하여 A와 B의 실수 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
입력 인수
출력 인수
유니타리 인수로, Q*A*Z = AA와 Q*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+y도 A의 고유벡터입니다.
좌고유벡터로, 각 열이 (A,B) 쌍의 일반화된 좌고유벡터인 정사각 행렬로 반환됩니다. 고유벡터는 W'*A = D*W'*B를 충족하며, 여기서 D는 주대각선을 따라 쌍을 이루는 일반 고유값을 포함합니다. eig 함수를 사용하여 D를 반환하고 ordeig 함수를 사용하여 D의 대각선 요소를 반환합니다.
컴퓨터가 다르거나 MATLAB 릴리스가 다르면, 같지는 않지만 수치적으로는 정확한 고유벡터가 생성될 수 있습니다.
실수 고유벡터의 경우, 고유벡터의 기호가 달라질 수 있습니다.
복소수 고유벡터의 경우, 크기가 1인 복소수와 고유벡터를 곱할 수 있습니다.
중복 고유값의 경우, 선형 결합을 통해 고유벡터를 다시 결합할 수 있습니다. 예를 들어, Ax = λx이고 Ay = λy인 경우 A(x+y) = λ(x+y)이므로, x+y도 A의 고유벡터입니다.
세부 정보
준 상부 삼각 행렬은 실수 행렬의 슈어 분해 또는 일반화된 슈어(QZ) 분해로 인해 발생할 수 있습니다. 준 상부 삼각 행렬은 대각선을 따라 0이 아닌 값으로 구성된 1×1 블록과 2×2 블록이 있는 블록 상부 삼각 행렬입니다.

이러한 대각선 블록의 고유값은 행렬의 고유값이기도 합니다. 1×1 블록은 실수 고유값에 대응하고, 2×2 블록은 켤레 복소수 고유값 쌍에 대응합니다.
가역 복소수 정사각 행렬 U는 그 켤레 전치가 역행렬이기도 한 경우, 즉 를 충족하는 경우 유니타리 행렬입니다.
팁
QZ 분해로부터 일반 고유값 문제 를 푸는 일반 고유값을 계산할 수 있습니다. 삼각 행렬
AA의 경우diag(AA)./diag(BB)를 사용하여 고유값을 계산합니다. 준삼각 행렬AA의 경우ordeig(AA,BB)를 사용하여 고유값을 계산합니다.
확장 기능
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)