Main Content

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를 권장합니다.

세부 정보

모두 축소

부분 피벗 연산

부분 피벗 연산은 피벗 열에서 절댓값이 가장 큰 열 요소를 선택하고, 행렬의 행을 상호교환하여 이 요소가 피벗 위치(행의 가장 왼쪽에 있는 0이 아닌 요소)에 있도록 하는 방법입니다.

예를 들어, 아래의 행렬에서 알고리즘은 먼저 첫 열의 가장 큰 값을 식별한 다음((2,1) 위치의 값은 1.1에 해당), 첫 번째 행과 두 번째 행 전체를 상호교환하여 이 값이 (1,1) 위치에 나타나도록 합니다.

3-by-3 matrix. The first row has values of 0.5, 1.4, and 2. The second row has values of 1.1, 0.3, and 0.1. The third row has values of 0.2, 5, and 0.5.

가우스 소거법에서 부분 피벗 연산을 사용하면 계산에서 반올림 오차를 (완전히 제거하지는 못하지만) 줄여줍니다.

기약행 사다리꼴

다음 조건이 충족되는 경우 행렬은 행 사다리꼴입니다.

  • 0이 아닌 요소가 하나라도 있는 행이 모든 요소가 0인 행보다 위에 있음

  • 각 행의 선행 계수가 그 위의 행에 있는 선행 계수보다 엄격히 오른쪽에 있음

행 사다리꼴 행렬의 예는 다음과 같습니다.

A=(123041002).

기약행 사다리꼴이 되기 위한 추가적인 요건은 다음과 같습니다.

  • 모든 선행 계수는 1이어야 하며, 그 열에서 유일하게 0이 아닌 요소여야 합니다.

보통 단위 행렬이 기약행 사다리꼴과 가장 관련이 깊지만, 다른 형태도 가능합니다. 기약행 사다리꼴인 행렬의 다른 예는 다음과 같습니다.

A=(1001010300130000).

알고리즘

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

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |