주요 콘텐츠

rref

기약행 사다리꼴(가우스-조르당 소거법)

설명

R = rref(A)부분 피벗 연산과 함께 가우스-조르당 소거법을 사용하여 A기약행 사다리꼴을 반환합니다.

예제

R = rref(A,tol)는 무시 가능한 열을 파악하는 데 알고리즘이 사용하는 피벗 허용오차를 지정합니다.

[R,p] = rref(A)는 0이 아닌 피벗 p도 반환합니다.

예제

예제

모두 축소

행렬을 생성하고 기약행 사다리꼴을 계산합니다. 이 형태에서 행렬은 각 열의 피벗 위치에서 선행하는 1을 갖습니다.

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

RA = rref(A)
RA = 3×3

     1     0     0
     0     1     0
     0     0     1

3×3 마방진 행렬은 완전 랭크 행렬이며, 따라서 기약행 사다리꼴은 단위 행렬입니다.

이제 4×4 마방진 행렬의 기약행 사다리꼴을 계산합니다. 0이 아닌 피벗 열을 반환하려면 출력값을 2개 지정하십시오. 이 행렬은 랭크 부족 행렬이므로 결과로 나오는 행렬은 단위 행렬이 아닙니다.

B = magic(4)
B = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

[RB,p] = rref(B)
RB = 4×4

     1     0     0     1
     0     1     0     3
     0     0     1    -3
     0     0     0     0

p = 1×3

     1     2     3

첨가 행렬에 가우스-조르당 소거법을 사용하여 선형 시스템을 풀고 역행렬을 계산합니다. 이러한 값을 계산하는 더 효율적이고 수치적으로 안정적인 방법이 있기 때문에 이 기법은 주로 학술적인 목적으로만 쓰입니다.

3×3 마방진 행렬을 생성합니다. 행렬의 끝에 추가 열을 추가합니다. 이 첨가 행렬은 선형 시스템 Ax=b를 나타내며, 추가 열은 b에 해당합니다.

A = magic(3);
A(:,4) = [1; 1; 1]
A = 3×4

     8     1     6     1
     3     5     7     1
     4     9     2     1

A의 기약행 사다리꼴을 계산합니다. R의 요소를 참조하여, (첨가된) 추가 열에 있는 선형 시스템의 해가 담긴 항목을 추출합니다.

R = rref(A)
R = 3×4

    1.0000         0         0    0.0667
         0    1.0000         0    0.0667
         0         0    1.0000    0.0667

x = R(:,end)
x = 3×1

    0.0667
    0.0667
    0.0667

이 선형 시스템을 푸는 더 효율적인 방법은 백슬래시 연산자를 사용하는 것입니다(x = A\b).

비슷한 마방진 행렬을 생성합니다만 이때 같은 크기의 단위 행렬을 마지막 열에 추가합니다.

A = [magic(3) eye(3)]
A = 3×6

     8     1     6     1     0     0
     3     5     7     0     1     0
     4     9     2     0     0     1

A의 기약행 사다리꼴을 계산합니다. 이 형태에서 추가 열에는 3×3 마방진 행렬에 대한 역행렬이 포함되어 있습니다.

R = rref(A)
R = 3×6

    1.0000         0         0    0.1472   -0.1444    0.0639
         0    1.0000         0   -0.0611    0.0222    0.1056
         0         0    1.0000   -0.0194    0.1889   -0.1028

inv_A = R(:,4:end)
inv_A = 3×3

    0.1472   -0.1444    0.0639
   -0.0611    0.0222    0.1056
   -0.0194    0.1889   -0.1028

역행렬을 계산하는 더 효율적인 방법은 inv(A)를 사용하는 것입니다.

방정식 4개와 미지수 3개가 있는 선형 연립방정식이 있다고 가정하겠습니다.

x1+x2+5x3=62x1+x2+8x3=8x1+2x2+7x3=10-x1+x2-x3=2.

연립방정식을 나타내는 첨가 행렬을 생성합니다.

A = [1  1  5;
     2  1  8;
     1  2  7;
    -1  1 -1];
b = [6 8 10 2]';
M = [A b];

rref를 사용하여 기약행 사다리꼴로 연립방정식을 표현합니다.

R = rref(M)
R = 4×4

     1     0     3     2
     0     1     2     4
     0     0     0     0
     0     0     0     0

R의 처음 두 행에는 x3으로 x1x2를 표현하는 방정식이 포함되어 있습니다. 두 번째 두 행은 우변 벡터에 맞는 최소한 하나의 해가 존재함을 암시하고 있습니다(그렇지 않을 경우, 방정식 하나는 1=0이 됨). 세 번째 열은 피벗이 없습니다. 그러므로 x3은 독립 변수입니다. 따라서 x1x2에는 무수히 많은 해가 있고, x3은 자유롭게 선택될 수 있습니다.

x1=2-3x3x2=4-2x3.

예를 들어, x3=1인 경우 x1=-1이 되고 x2=2가 됩니다.

수치적으로 보면, 이 연립방정식을 푸는 더 효율적인 방법은 (사각 행렬 A의) 최소제곱해를 계산하는 x0 = A\b를 사용하는 방법입니다. 이 경우에 norm(A*x0-b)/norm(b)를 사용하여 해의 정확도를 검사할 수 있고, rank(A)가 미지수의 개수와 같은지 검사하여, 해의 유일성을 검사할 수 있습니다. 해가 2개 이상 존재한다면 모두 x=x0+nt의 형태를 가지며, 여기서 n은 영공간 null(A)이고 t는 자유롭게 선택될 수 있습니다.

입력 인수

모두 축소

입력 행렬입니다.

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

피벗 허용오차로, 스칼라로 지정됩니다. 피벗 열에서 (절댓값으로) 가장 큰 요소가 허용오차 미만인 경우 해당 열은 0으로 됩니다. 따라서 허용오차보다 작은 0이 아닌 피벗 요소를 이용한 나눗셈과 곱셈이 불가능하게 됩니다.

데이터형: single | double

출력 인수

모두 축소

A기약행 사다리꼴로, 행렬로 반환됩니다.

0이 아닌 피벗 열로, 벡터로 반환됩니다. p의 각 요소는 A의 열 인덱스입니다. p를 사용하여 다음의 값을 추정할 수 있습니다.

  • length(p)A의 랭크에 대한 추정치입니다.

  • x(p)는 선형 시스템 Ax = b의 피벗 변수를 포함합니다.

  • A(:,p)A의 치역에 대한 기저입니다.

  • R(1:r,p)r×r 단위 행렬이며, 여기서 r = length(p)입니다.

제한 사항

  • rank, orthnull은 통상적으로 더 빠르고 정확하게 행렬의 랭크와 기저 벡터를 계산합니다.

  • 선형 시스템을 푸는 데에는 mldivide를 권장합니다.

세부 정보

모두 축소

알고리즘

rref는 부분 피벗 연산을 사용하여 가우스-조르당 소거법을 수행합니다. max(size(A))*eps*norm(A,inf)의 디폴트 허용오차는 반올림 오차를 줄이기 위해 0으로 만들 수 있는 무시 가능한 열 요소인지를 검사합니다.

확장 기능

모두 확장

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |