이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

qr

직교 삼각 분해

구문

[Q,R] = qr(A)
[Q,R] = qr(A,0)
[Q,R,E] = qr(A)
[Q,R,E] = qr(A,'matrix')
[Q,R,e] = qr(A,'vector')
[Q,R,e] = qr(A,0)
X = qr(A)
X = qr(A,0)
R = qr(A)
R = qr(A,0)
[C,R] = qr(A,B)
[C,R,E] = qr(A,B)
[C,R,E] = qr(A,B,'matrix')
[C,R,e] = qr(A,B,'vector')
[C,R] = qr(A,B,0)
[C,R,e] = qr(A,B,0)

설명

[Q,R] = qr(A)A = Q*R을 충족하는 mxn 상부 삼각 행렬 Rmxm 유니타리 행렬 Q를 생성합니다. 여기서 Amxn입니다.

[Q,R] = qr(A,0)은 효율적인 크기로 분해 연산을 수행합니다. m > n인 경우, Q의 처음 n개 열과 R의 처음 n개 행만 계산됩니다. m<=n인 경우, 이는 [Q,R] = qr(A)와 동일합니다.

A가 비희소 행렬인 경우:

[Q,R,E] = qr(A) 또는 [Q,R,E] = qr(A,'matrix')A*E = Q*R을 충족하는 유니타리 행렬 Q와 상부 삼각 행렬 R과 치환 행렬 E를 생성합니다. abs(diag(R))이 감소하도록 열 치환 E가 선택됩니다.

[Q,R,e] = qr(A,'vector')는 치환 정보를 행렬이 아닌 벡터로 반환합니다. 즉, eA(:,e) = Q*R을 충족하는 행 벡터입니다.

[Q,R,e] = qr(A,0)A(:,e) = Q*R을 충족하는, e가 치환 벡터인 효율적인 크기로 분해 연산을 수행합니다.

X = qr(A)X = qr(A,0)triu(X)가 상부 삼각 인자 R이 되도록 하는 행렬 X를 반환합니다.

A가 희소 행렬인 경우:

R = qr(A)Q가 없는 QR 분해를 계산하고 상부 삼각 인자 R을 반환합니다. 참고로, R = chol(A'*A)입니다. Q는 종종 거의 비희소 행렬에 가까우므로, [Q,R] = QR(A)보다 더 선호됩니다.

R = qr(A,0)은 효율적인 크기의 R을 생성합니다. m>n인 경우, R에는 n개 행만 있습니다. m<=n인 경우, 이는 R = qr(A)와 동일합니다.

[Q,R,E] = qr(A) 또는 [Q,R,E] = qr(A,'matrix')A*E = Q*R을 충족하는 유니타리 행렬 Q와 상부 삼각 행렬 R과 치환 행렬 E를 생성합니다. R에서 필인(fill-in)이 감소하도록 열 치환 E가 선택됩니다.

[Q,R,e] = qr(A,'vector')는 치환 정보를 행렬이 아닌 벡터로 반환합니다. 즉, eA(:,e) = Q*R을 충족하는 행 벡터입니다.

[Q,R,e] = qr(A,0)A(:,e) = Q*R을 충족하는, e가 치환 벡터인 효율적인 크기로 분해 연산을 수행합니다.

[C,R] = qr(A,B)C = Q'*B를 반환하며, 여기서 B의 행 개수는 A의 행 개수와 같습니다. A*X = B에 대한 최소제곱해는 X = R\C입니다.

[C,R,E] = qr(A,B) 또는 [C,R,E] = qr(A,B,'matrix')는 필인을 감소시키는 정렬을 반환합니다. A*X = B에 대한 최소제곱해는 X = E*(R\C)입니다.

[C,R,e] = qr(A,B,'vector')는 치환 정보를 행렬이 아닌 벡터로 반환합니다. 즉, A*X = B에 대한 최소제곱해는 X(e,:) = R\C입니다.

[C,R] = qr(A,B,0)은 효율적인 크기로 결과를 생성합니다. m>n인 경우, CR에는 n개 행만 있습니다. m<=n인 경우, 이는 [C,R] = qr(A,B)와 동일합니다.

[C,R,e] = qr(A,B,0)은 필인을 감소시키는 치환 벡터 e를 추가로 생성합니다. 이 경우, A*X = B에 대한 최소제곱해는 X(e,:) = R\C입니다.

예제

Q가 없는 QR 분해와 반복적인 세분화 단계 하나를 사용하여 A*x = b에 대한 최소제곱 근사해를 구합니다.

if issparse(A), R = qr(A); 
else R = triu(qr(A)); end
x = R\(R'\(A'*b));
r = b - A*x;
err = R\(R'\(A'*r));
x = x + err;

확장 기능

참고 항목

| | | | | |

R2006a 이전에 개발됨