orth
R2026b기호 행렬의 치역에 대한 정규 직교 기저
설명
예제
정규 직교 기저 계산하기
다음 행렬의 치역에 대한 정규 직교 기저를 계산합니다. 이러한 숫자는 기호 객체가 아니므로 부동소수점 결과를 얻게 됩니다.
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.9129B'*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)]
입력 인수
세부 정보
팁
기호 객체가 아닌 숫자형 인수를 사용하여
orth를 호출하면 MATLABorth함수가 호출됩니다. MATLABorth함수에서 반환된 결과는 Symbolic Math Toolbox™orth함수에서 반환된 결과와 다를 수 있습니다. 그 이유는 직교화가 일반적으로 고유하지 않고, 이 두 함수가 서로 다른 알고리즘을 사용하여 정규 직교 기저를 계산하기 때문입니다.정규 직교 기저 대신
"skipnormalization"을 사용하여 직교 기저를 계산하면 계산 속도를 높일 수 있습니다.
버전 내역
R2013a에 개발됨