Main Content

orth

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

설명

예제

orth(A)A의 치역에 대한 정규 직교 기저를 계산합니다.

예제

orth(A,'real')은 직교화 과정에서 실수형 스칼라 곱을 사용하여 정규 직교 기저를 계산합니다.

예제

orth(A,'skipnormalization')은 정규화되지 않은 직교 기저를 계산합니다. 이 경우 B의 열을 구성하는 벡터의 길이가 반드시 1일 필요는 없습니다.

예제

orth(A,'real','skipnormalization')은 직교화 과정에서 실수형 스칼라 곱을 사용하여 정규화되지 않은 직교 기저를 계산합니다.

예제

정규 직교 기저 계산하기

다음 행렬의 치역에 대한 정규 직교 기저를 계산합니다. 이러한 숫자는 기호 객체가 아니므로 부동소수점 결과를 얻게 됩니다.

A = [2 -3 -1; 1 1 -1; 0 1 -1];
B = orth(A)
B =
   -0.9859   -0.1195    0.1168
    0.0290   -0.8108   -0.5846
    0.1646   -0.5729    0.8029

이번에는 이 행렬을 기호 객체로 변환하고 정규 직교 기저를 계산합니다.

A = sym([2 -3 -1; 1 1 -1; 0 1 -1]);
B = orth(A)
B =
[ (2*5^(1/2))/5, -6^(1/2)/6, -(2^(1/2)*15^(1/2))/30]
[     5^(1/2)/5,  6^(1/2)/3,  (2^(1/2)*15^(1/2))/15]
[             0,  6^(1/2)/6,  -(2^(1/2)*15^(1/2))/6]

double을 사용하여 이 결과를 배정밀도 수치 형식으로 변환할 수 있습니다. 결과로 반환되는 행렬은 MATLAB® orth 함수가 반환하는 행렬과 다릅니다. 이 함수들이 여러 다른 버전의 그람-슈미트(Gram-Schmidt) 직교화 알고리즘을 사용하기 때문입니다.

double(B)
ans =
    0.8944   -0.4082   -0.1826
    0.4472    0.8165    0.3651
         0    0.4082   -0.9129

B'*B = I를 확인합니다. 여기서 I는 단위 행렬입니다.

B'*B
ans =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]

이제 B의 각 열의 2-노름이 1인지 확인합니다.

norm(B(:, 1))
norm(B(:, 2))
norm(B(:, 3))
ans =
1
 
ans =
1
 
ans =
1

실수 정규 직교 기저 계산하기

켤레 복소수를 방지하려면 'real'을 사용하여 이 행렬의 정규 직교 기저를 계산합니다.

syms a
A = [a 1; 1 a];
B = orth(A,'real')
B =
[ a/(a^2 + 1)^(1/2),    -(a^2 - 1)/((a^2 + 1)*((a^2 -...
 1)^2/(a^2 + 1)^2 + (a^2*(a^2 - 1)^2)/(a^2 + 1)^2)^(1/2))]
[ 1/(a^2 + 1)^(1/2), (a*(a^2 - 1))/((a^2 + 1)*((a^2 -...
 1)^2/(a^2 + 1)^2 + (a^2*(a^2 - 1)^2)/(a^2 + 1)^2)^(1/2))]

정규화를 건너뛰어 직교 기저 계산하기

'skipnormalization'을 사용하여 이 행렬의 직교 기저를 계산합니다. 결과 벡터(행렬 B의 열)의 길이는 1일 필요가 없습니다.

syms a
A = [a 1; 1 a];
B = orth(A,'skipnormalization')
B =
[ a,               -(a^2 - 1)/(a*conj(a) + 1)]
[ 1, -(conj(a) - a^2*conj(a))/(a*conj(a) + 1)]

실수 직교 기저 계산하기

'skipnormalization''real'을 사용하여 이 행렬의 직교 기저를 계산합니다.

syms a
A = [a 1; 1 a];
B = orth(A,'skipnormalization','real')
B =
[ a,    -(a^2 - 1)/(a^2 + 1)]
[ 1, (a*(a^2 - 1))/(a^2 + 1)]

입력 인수

모두 축소

입력값으로, 기호 행렬로 지정됩니다.

세부 정보

모두 축소

정규 직교 기저

행렬 A의 치역에 대한 정규 직교 기저는 다음을 충족하는 행렬 B입니다.

  • B'*B = I, 여기서 I는 단위 행렬입니다.

  • B의 열은 A의 열과 같은 공간을 생성합니다.

  • B의 열의 개수는 A의 랭크입니다.

  • 기호 객체가 아닌 숫자형 인수에 대해 orth를 호출하면 MATLAB orth 함수가 호출됩니다. MATLAB orth가 반환한 결과는 orth가 반환한 결과와 다를 수 있습니다. 이는 이 두 함수가 서로 다른 알고리즘을 사용하여 정규 직교 기저를 계산하기 때문입니다. Symbolic Math Toolbox™ orth 함수는 고전적 그람-슈미트 직교화 알고리즘을 사용합니다. MATLAB orth 함수는 고전적 알고리즘이 수치적으로 불안정하기 때문에 수정된 그람-슈미트 알고리즘을 사용합니다.

  • 정규 직교 기저 대신 'skipnormalization'을 사용하여 직교 기저를 계산하면 계산 속도를 높일 수 있습니다.

알고리즘

orth는 고전적 그람-슈미트 직교화 알고리즘을 사용합니다.

버전 내역

R2013a에 개발됨

참고 항목

| | | |