gsvd
일반화된 특이값 분해
설명
예제
행렬에 대한 일반화된 특이값 분해
두 행렬에 대해 일반화된 특이값 분해를 수행하고 일반화된 특이값도 계산합니다.
5×3 행렬 A
와 3×3 행렬 B
를 만듭니다.
A = reshape(1:15,5,3)
A = 5×3
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
B = magic(3)
B = 3×3
8 1 6
3 5 7
4 9 2
A
와 B
에 대해 일반화된 특이값 분해를 수행합니다. 직교 행렬 U
와 V
, 정칙 행렬 X
, 대각 행렬 C
와 S
등이 출력값으로 생성됩니다. A
는 랭크가 부족하므로 C
의 첫 번째 대각선 요소는 0입니다.
[U,V,X,C,S] = gsvd(A,B)
U = 5×5
-0.1882 0.6457 -0.4279 -0.4268 -0.4271
0.6897 0.3296 -0.4375 0.2067 0.4261
-0.6849 0.0135 -0.4470 0.2542 0.5160
0.0534 -0.3026 -0.4566 0.5787 -0.6019
0.1300 -0.6187 -0.4661 -0.6128 0.0869
V = 3×3
-0.7071 -0.6946 0.1325
0.0000 -0.1874 -0.9823
0.7071 -0.6946 0.1325
X = 3×3
-2.8284 -9.3761 -6.9346
5.6569 -8.3071 -18.3301
-2.8284 -7.2381 -29.7256
C = 5×3
0.0000 0 0
0 0.3155 0
0 0 0.9807
0 0 0
0 0 0
S = 3×3
1.0000 0 0
0 0.9489 0
0 0 0.1957
이제 A
와 B
에 대해 효율적인 크기의 분해를 수행합니다. 행렬 U
와 C
는 크기가 다르지만, 다른 출력 행렬은 동일합니다.
[U,V,X,C,S] = gsvd(A,B,"econ")
U = 5×3
-0.3736 -0.6457 0.4279
-0.0076 -0.3296 0.4375
0.8617 -0.0135 0.4470
-0.2063 0.3026 0.4566
-0.2743 0.6187 0.4661
V = 3×3
-0.7071 0.6946 -0.1325
0.0000 0.1874 0.9823
0.7071 0.6946 -0.1325
X = 3×3
-2.8284 9.3761 6.9346
5.6569 8.3071 18.3301
-2.8284 7.2381 29.7256
C = 3×3
0 0 0
0 0.3155 0
0 0 0.9807
S = 3×3
1.0000 0 0
0 0.9489 0
0 0 0.1957
일반화된 특이값을 계산합니다. 이 경우 특이값은 비율 diag(C)./diag(S)
와 같습니다. 이들 값은 svd(A/B)
에서 반환된 다음과 같은 일반 특이값을 재정렬(Reordering)한 것입니다.
sigma = gsvd(A,B)
sigma = 3×1
0.0000
0.3325
5.0123
svals = svd(A/B)
svals = 3×1
5.0123
0.3325
0.0000
무한한 특이값을 가진 행렬
일반화된 특이값이 경우에 따라 Inf
가 될 수 있는 이유를 알아보겠습니다.
3×5 행렬 A
와 5×5 행렬 B
를 만듭니다.
A = reshape(1:15,3,5)
A = 3×5
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
B = magic(5)
B = 5×5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
A
와 B
에 대해 일반화된 특이값 분해를 수행합니다. 직교 행렬 U
와 V
, 정칙 행렬 X
, 대각 행렬 C
와 S
등이 출력값으로 생성됩니다. 이 경우 C
에서 0이 아닌 대각선은 diag(C,2)
입니다.
[U,V,X,C,S] = gsvd(A,B)
U = 3×3
0.4082 0.7178 -0.5639
-0.8165 0.0109 -0.5772
0.4082 -0.6961 -0.5906
V = 5×5
-0.7596 0.3266 0.3195 -0.4552 -0.0843
0.4139 -0.3747 0.6218 -0.5408 0.0956
0.0484 -0.1713 -0.0078 -0.0271 -0.9836
-0.1717 -0.4817 -0.6610 -0.5408 0.0956
0.4689 0.7011 -0.2725 -0.4552 -0.0843
X = 5×5
0.2422 -0.8564 10.0949 -30.7287 -4.6958
-9.4897 11.7764 -2.1067 -28.5003 -11.6858
11.2281 3.8525 -14.8016 -26.2720 -18.6758
-1.9806 -14.7725 -3.3206 -24.0436 -25.6657
0 0 10.1340 -21.8152 -32.6557
C = 3×5
0 0 0.0000 0 0
0 0 0 0.0439 0
0 0 0 0 0.7432
S = 5×5
1.0000 0 0 0 0
0 1.0000 0 0 0
0 0 1.0000 0 0
0 0 0 0.9990 0
0 0 0 0 0.6690
0이 포함된 일반화된 특이값을 구합니다.
sigma = gsvd(A,B)
sigma = 5×1
0
0
0.0000
0.0439
1.1109
A
와 B
의 역할을 뒤바꾸면 이들 값의 역이 계산되어 Inf
값이 생성됩니다.
sigma2 = gsvd(B,A)
sigma2 = 5×1
1016 ×
0.0000
0.0000
3.8423
Inf
Inf
입력 인수
A
, B
— 입력 행렬(개별 인수)
행렬
입력 행렬. A
와 B
는 열 개수가 같아야 하지만, 행 개수는 다를 수 있습니다.
데이터형: single
| double
복소수 지원 여부: 예
출력 인수
U
, V
— 유니타리 행렬 인수
행렬
유니타리 행렬 인수로, 행렬로 반환됩니다. U
와 V
는 A
와 B
의 열에 대한 기저를 각각 제공하는 직교 열이 있는 행렬입니다.
U
와 V
의 크기는 "econ"
옵션의 지정 여부에 따라 달라집니다. A
가 m
×p
이고 B
가 n
×p
이면 다음과 같습니다.
기본적으로
U
는m
×m
이고V
는n
×n
입니다."econ"
옵션을 지정할 경우,U
는m
×min(m,p)
이고V
는n
×min(n,p)
입니다.
X
— 행렬 인수
행렬
행렬 인수로, 행렬로 반환됩니다. A
가 m
×p
이고 B
가 n
×p
이면 X
는 p
×q
입니다. 여기서 q
는 [A; B]
의 수치적 랭크입니다.
X
의 속성은 norm([A; B]) == norm(X)
입니다. U
, V
, C
, S
가 행렬 [A; B]
에 대한 직교 기저만 나타내기 때문입니다.
C
, S
— 대각 행렬 인수
행렬
대각 행렬 인수로, 행렬로 반환됩니다. S
의 0이 아닌 요소는 항상 주대각선에 있습니다. C
의 0이 아닌 요소는 대각선 diag(C,max(0,size(C,2)-size(C,1)))
에 있습니다. 0이 아닌 값을 가져오려면 명령 sv = max(S,[],1)
과 cv = max(C,[],1)
을 사용하십시오. A
와 B
의 일반화된 특이값은 비율 cv./sv
와 같습니다.
C
와 S
의 크기는 "econ"
옵션의 지정 여부에 따라 달라집니다. A
가 m
×p
이고 B
가 n
×p
이면 다음과 같습니다.
기본적으로
C
는m
×q
이고S
는n
×q
입니다."econ"
옵션을 지정할 경우,C
는min(m,p)
×q
이고V
는min(n,p)
×q
입니다.
두 경우 모두, q
는 [A; B]
의 수치적 랭크입니다.
sigma
— 일반화된 특이값
열 벡터
일반화된 특이값으로, 열 벡터로 반환됩니다. sv = max(S,[],1)
및 cv = max(C,[],1)
이면 A
와 B
의 일반화된 특이값은 비율 cv./sv
와 같습니다.
sigma
는 길이가 [A; B]
의 수치적 랭크와 같고, 비내림차순입니다.
알고리즘
gsvd
함수로 수행된 일반화된 특이값 분해는 내장 svd
및 qr
함수뿐 아니라 C-S 분해를 사용합니다.
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2022b: 수치적 랭크에 기반한 출력 크기
함수 호출 [U,V,X,C,S] = gsvd(A,B)
(여기서 A
는 m
×p
이고 B
는 n
×p
임)에서 gsvd
함수는 다음 크기의 값을 반환합니다.
X
를p
×q
로C
를m
×q
로S
를n
×q
로
또한 하나의 출력 인수를 갖는 함수 호출 sigma = gsvd(A,B)
는 길이가 q
이며 일반화된 특이값으로 구성된 벡터를 반환합니다.
이러한 모든 경우 q
가 이제 [A; B]
의 수치적 랭크와 같다는 것이 동작 변경 사항입니다. 수치적 랭크는 [A; B]
의 QR 분해에서 계산됩니다. 이 변경 사항으로 인해 C
와 S
의 0이 아닌 요소가 고유하게 결정됩니다.
이전에는 q
의 값이 min(m+n,p)
였으며, [A; B]
가 완전 랭크가 아닌 경우 gsvd
는 추가 열(또는 요소)을 출력값으로 반환했습니다.
R2022b: "0" 구문은 효율적 크기의 분해에 권장되지 않음
구문 [U,V,X,C,S] = gsvd(A,B,0)
은 계속 지원되지만, 더 이상 권장되지 않습니다. 효율적 크기의 분해를 수행하려면 "econ"
옵션을 대신 사용합니다.
R2022a: 효율적 크기의 분해에 대한 옵션
gsvd
함수로 효율적 크기의 분해를 계산하려면 "econ"
옵션을 사용합니다. 이 기능은 gsvd(A,B,0)
과 동일합니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)