Main Content

orth

행렬의 치역에 대한 정규 직교 기저

설명

예제

Q = orth(A)A치역에 대한 정규 직교 기저를 반환합니다. 행렬 Q의 열은 A의 치역을 생성(span)하는 벡터입니다. Q의 열 개수는 A랭크와 같습니다.

Q = orth(A,tol)은 허용오차도 지정합니다. tol보다 작은 A의 특이값은 0으로 처리되어 Q의 열 개수에 영향을 줄 수 있습니다.

예제

모두 축소

완전 랭크 행렬의 치역에 대한 정규 직교 기저 벡터를 계산하고 확인합니다.

행렬을 정의하고 랭크를 구합니다.

A = [1 0 1;-1 -2 0; 0 1 -1];
r = rank(A)
r = 3

A는 완전 랭크의 정사각 행렬이므로, orth(A)에서 계산된 정규 직교 기저는 특이값 분해 [U,S] = svd(A,"econ")에서 계산된 행렬 U와 일치합니다. 그 이유는 A의 특이값이 모두 0이 아니기 때문입니다.

orth를 사용하여 A의 치역에 대한 정규 직교 기저를 계산합니다.

Q = orth(A)
Q = 3×3

   -0.1200   -0.8097    0.5744
    0.9018    0.1531    0.4042
   -0.4153    0.5665    0.7118

Q의 열 개수는 rank(A)와 같습니다. A가 완전 랭크이므로, QA는 크기가 같습니다.

기저 Q가 합리적인 오차 범위 내에서 정규 직교한다는 사실을 확인합니다.

E = norm(eye(r)-Q'*Q,"fro")
E = 9.2306e-16

오차가 대략 eps 정도입니다.

랭크 부족 행렬의 치역에 대한 정규 직교 기저 벡터를 계산하고 확인합니다.

특이 행렬을 정의하고 랭크를 구합니다.

A = [1 0 1; 0 1 0; 1 0 1];
r = rank(A)
r = 2

A가 랭크 부족이므로, orth(A)로 계산한 정규 직교 기저는 특이값 분해 [U,S] = svd(A,"econ")에서 계산된 행렬 U의 처음 r = 2 열들과만 일치합니다. 그 이유는 A의 특이값이 모두 0이 아닌 것은 아니기 때문입니다.

orth를 사용하여 A의 치역에 대한 정규 직교 기저를 계산합니다.

Q = orth(A)
Q = 3×2

   -0.7071   -0.0000
         0    1.0000
   -0.7071    0.0000

A가 랭크 부족이므로, Q에는 A보다 하나 적은 수의 열이 포함됩니다.

행렬의 특이값이 작은 경우, 0으로 처리되는 특이값을 변경하도록 허용오차를 지정합니다.

7×7 힐베르트 행렬을 생성합니다. 이 행렬은 완전 랭크이지만 일부 작은 특이값을 가집니다.

H = hilb(7)
H = 7×7

    1.0000    0.5000    0.3333    0.2500    0.2000    0.1667    0.1429
    0.5000    0.3333    0.2500    0.2000    0.1667    0.1429    0.1250
    0.3333    0.2500    0.2000    0.1667    0.1429    0.1250    0.1111
    0.2500    0.2000    0.1667    0.1429    0.1250    0.1111    0.1000
    0.2000    0.1667    0.1429    0.1250    0.1111    0.1000    0.0909
    0.1667    0.1429    0.1250    0.1111    0.1000    0.0909    0.0833
    0.1429    0.1250    0.1111    0.1000    0.0909    0.0833    0.0769

H의 치역에 대한 정규 직교 기저를 계산합니다. H가 완전 랭크이므로, QH는 크기가 같습니다.

Q = orth(H)
Q = 7×7

   -0.7332    0.6232    0.2608   -0.0752    0.0160   -0.0025    0.0002
   -0.4364   -0.1631   -0.6706    0.5268   -0.2279    0.0618   -0.0098
   -0.3198   -0.3215   -0.2953   -0.4257    0.6288   -0.3487    0.0952
   -0.2549   -0.3574    0.0230   -0.4617   -0.2004    0.6447   -0.3713
   -0.2128   -0.3571    0.2337   -0.1712   -0.4970   -0.1744    0.6825
   -0.1831   -0.3446    0.3679    0.1827   -0.1849   -0.5436   -0.5910
   -0.1609   -0.3281    0.4523    0.5098    0.4808    0.3647    0.1944

이제 정규 직교 기저 벡터를 다시 계산하되 허용오차를 1e-4로 지정합니다. 이 허용오차로 인해 orth가 3개의 특이값을 0으로 처리하므로 정규 직교 기저는 열을 4개만 갖습니다.

Qtol = orth(H,1e-4)
Qtol = 7×4

   -0.7332    0.6232    0.2608   -0.0752
   -0.4364   -0.1631   -0.6706    0.5268
   -0.3198   -0.3215   -0.2953   -0.4257
   -0.2549   -0.3574    0.0230   -0.4617
   -0.2128   -0.3571    0.2337   -0.1712
   -0.1831   -0.3446    0.3679    0.1827
   -0.1609   -0.3281    0.4523    0.5098

입력 인수

모두 축소

입력 행렬입니다.

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

특이값 허용오차로, 실수 숫자형 스칼라로 지정됩니다. 허용오차보다 작은 A의 특이값은 0으로 처리되어 orth가 반환하는 열 공간 벡터의 개수에 영향을 줍니다. 디폴트 허용오차는 max(size(A)) * eps(norm(A))입니다.

세부 정보

모두 축소

치역

행렬 A의 열 공간, 즉 치역A에 있는 열들의 모든 일차 결합의 모음입니다. 일차 방정식 A*x = b의 해인 임의의 벡터 bA에 있는 열들의 일차 결합으로도 나타낼 수 있기 때문에 벡터 b는 A의 치역에 포함됩니다.

랭크

행렬의 rank는 치역의 차원과 동일하고 0이 아닌 특이값의 개수와 같습니다.

알고리즘

A의 치역에 대한 정규 직교 기저는 특이값 분해 [U,S] = svd(A,"econ")U에서 얻습니다. r = rank(A,tol)의 경우, U의 처음 r개 열은 A의 치역에 대한 정규 직교 기저를 형성합니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| |