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

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

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

이제 4x4 마방진 행렬의 기약행 사다리꼴을 계산합니다. 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

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

3x3 마방진 행렬을 생성합니다. 행렬의 끝에 추가 열을 추가합니다. 이 첨가 행렬은 선형 시스템 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의 기약행 사다리꼴을 계산합니다. 이 형태에서 추가 열에는 3x3 마방진 행렬에 대한 역행렬이 포함되어 있습니다.

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)rxr 단위 행렬이며, 여기에서 r = length(p)입니다.

제한 사항

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

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

세부 정보

모두 축소

부분 피벗 연산

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

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

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

기약행 사다리꼴

다음의 경우 행렬은 행 사다리꼴입니다.

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

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

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

A=(123041002).

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

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

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

A=(1001010300130000).

알고리즘

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

참고 항목

| | |

R2006a 이전에 개발됨