가우스 소거

Gaussian elimination

수학에서, 감소라고도 알려진 가우스 제거선형 방정식의 시스템을 풀기 위한 알고리즘입니다.이는 해당 계수 행렬에 대해 수행되는 일련의 연산으로 구성됩니다.이 방법은 행렬의 순위, 정사각형 행렬의 행렬식역행렬의 역행렬을 계산하는 데도 사용할 수 있습니다.이 방법은 비록 증거 없이 제시되었지만, 중국의 수학자들에게는 [1]179년 경에 이미 알려져 있었지만, 칼 프리드리히 가우스(1777–1855)의 이름을 따서 명명되었다.

행렬에서 행 축소를 수행하려면 행렬의 왼쪽 하단 모서리가 가능한 한 0으로 채워질 때까지 일련의 기본연산을 사용하여 행렬을 수정합니다.기본 행 연산에는 다음 세 가지 유형이 있습니다.

  • 두 행을 바꿉니다.
  • 행에 0이 아닌 숫자를 곱하면
  • 한 행의 배수를 다른 행에 추가(한 행에 -1을 곱한 후 결과를 다른 행에 추가하면 감산 가능)

이러한 연산을 사용하면 행렬은 항상 위쪽 삼각 행렬로 변환될 수 있으며, 실제로는 행 형태로 변환됩니다.모든 선행 계수(각 행에서 가장 왼쪽이 0이 아닌 항목)가 1이고 선행 계수가 들어 있는 모든 열에 0이 있으면 행렬이 축소된 행 형식이라고 합니다.이 최종 형식은 고유합니다.즉, 사용되는 행 연산 순서와는 무관합니다.예를 들어 다음 행 연산 시퀀스(다른 행의 두 기본 연산이 첫 번째 및 세 번째 단계에서 수행됨)에서 세 번째 및 네 번째 행렬은 행 echelon 형식의 행렬이며, 마지막 행렬은 고유한 축소 행 echelon 형식입니다.

행 연산을 사용하여 행렬을 축소행 echelon 형식으로 변환하는 것을 가우스-요르단 제거라고 부르기도 합니다.이 경우, 가우스 제거라는 용어는 상부 삼각형 또는 (감소되지 않은) 행 에켈론 형태에 도달할 때까지의 프로세스를 말합니다.계산상의 이유로 선형 방정식의 시스템을 풀 때 행렬이 완전히 감소하기 전에 행 연산을 중지하는 것이 더 바람직할 수 있습니다.

알고리즘의 정의와 예시

행 축소 프로세스는 기본 행 연산을 사용하며 두 부분으로 나눌 수 있습니다.첫 번째 부분(전진 제거라고도 함)은 주어진 시스템을 로우 echelon 형식으로 축소하여 솔루션이 없는지, 고유한 솔루션이 없는지, 무한히 많은지 구분할 수 있습니다.두 번째 부분( 치환이라고도 함)은 솔루션을 찾을 때까지 행 연산을 계속 사용합니다. 즉, 행렬을 축소된 행 echelon 형식으로 만듭니다.

알고리즘 분석에 매우 유용한 또 다른 관점은 행 축소가 원래 행렬의 행렬 분해를 발생시킨다는 것입니다.기본행 연산은 기본행렬에 의한 원래 행렬의 왼쪽에 있는 곱셈으로 볼 수 있습니다.또는 단일 행을 감소시키는 일련의 기본 연산은 프로베니우스 행렬에 의해 곱셈으로 간주될 수 있다.다음으로 알고리즘의 첫 번째 부분은 LU 분해를 계산하고 두 번째 부분은 고유하게 결정된 가역행렬과 고유하게 결정된 환원행렬 행렬의 곱으로 원래의 행렬을 쓴다.

행 조작

행렬의 행에 대해 수행할 수 있는 세 가지 유형의 기본 행 연산이 있습니다.

  1. 두 줄의 위치를 바꿉니다.
  2. 행에 0이 아닌 스칼라를 곱합니다.
  3. 한 행에 다른 행의 스칼라 배수를 추가합니다.

행렬이 선형 방정식 시스템에 연결되어 있는 경우 이러한 연산을 수행해도 솔루션 집합은 변경되지 않습니다.따라서 선형 방정식의 시스템을 푸는 것이 목표라면 이러한 행 연산을 사용하면 문제를 더 쉽게 만들 수 있습니다.

에셜론 형식

행렬의 각 행에 대해 행이 0으로만 구성되어 있지 않은 경우 맨 왼쪽에 있는 비제로 엔트리를 해당 행의 선행 계수(또는 피벗)라고 합니다.따라서 두 선행 계수가 동일한 열에 있으면 유형 3의 행 연산을 사용하여 계수 중 하나를 0으로 만들 수 있습니다.그런 다음 행 스왑 작업을 사용하면 0이 아닌 모든 행에 대해 선행 계수가 위의 행의 선행 계수의 오른쪽에 오도록 항상 행 순서를 지정할 수 있습니다.이 경우 행렬은 행 형식이라고 합니다.따라서 행렬의 왼쪽 하단에는 0만 포함되며 모든 0 행은 0이 아닌 행 아래에 있습니다.여기서 "에셜론"이라는 단어를 사용하는 이유는 가장 큰 행은 맨 위에 있고 가장 작은 행은 맨 아래에 있는 행의 크기에 따라 순위가 매겨진다고 대략적으로 생각할 수 있기 때문입니다.

예를 들어, 다음 행렬은 행 echelon 형식이며 선행 계수는 빨간색으로 표시됩니다.

이 값은 0 행이 맨 아래에 있고 두 번째 행(세 번째 열)의 선행 계수가 첫 번째 행(두 번째 열)의 선행 계수의 오른쪽에 있으므로 echelon 형식입니다.

행렬은 더 나아가 모든 선행 계수가 1과 같고(타입 2의 초등 행 연산을 사용하여 달성될 수 있음), 그리고 선행 계수를 포함하는 모든 열에서, 그 열의 다른 모든 엔트리는 0이다(이것은 다음의 초등 행 연산을 사용하여 달성될 수 있음).타입 3)을 선택합니다.

알고리즘의 예

다음과 같은 선형 방정식 시스템에 대한 해 집합을 찾아 설명하는 것이 목표라고 가정합니다.

아래 표는 방정식 체계와 그와 관련된 증강 행렬에 동시에 적용되는 행 축소 공정이다.실제로는 방정식의 관점에서 시스템을 다루는 것이 아니라 컴퓨터 조작에 더 적합한 증강 행렬을 사용합니다.행 축소 절차는 다음과 같이 요약할 수 있습니다. L 아래1 모든 방정식에서 x를 제거하고 L 아래2 모든 방정식에서 y를 제거합니다.이렇게 하면 시스템이 삼각형 형태가 됩니다.그 후, 백 치환을 사용하면, 불명확한 각각의 문제를 해결할 수 있습니다.

방정식 체계 행 조작 증강 매트릭스
행렬이 이제 에켈론 형식(삼각형 형식이라고도 함)입니다.

두 번째 열에는 방금 수행된 행 작업이 설명되어 있습니다.그래서 첫번째 단계에서, xL2에서.mw-parser-output .sfrac{white-space:nowrap}.mw-parser-output.sfrac.tion,.mw-parser-output.sfrac .tion{디스플레이:inline-block, vertical-align:-0.5em, font-size:85%;text-align:센터}.mw-parser-output.sfrac .num,.mw-parser-output.sfrac .den{디스플레이:블록, line-height:1em, 마진:00.1em}.mw-를 첨가하여 제거된다.L2에 Parser-output.sfrac .den{border-top:1px 고체}.mw-parser-output .sr-only{국경:0;클립:rect(0,0,0,0), 높이:1px, 마진:-1px, 오버 플로: 숨어 있었다. 패딩:0;위치:절대, 너비:1px}3/2L1.다음으로,)L3에서 L3에 L1를 추가함으로써 제거된다.이러한 행 조작은 표에서 다음과 같이 라벨이 붙어 있습니다.

번째 행에서 y를 제거하면 삼각형 형태의 선형 방정식 시스템이 생성되므로 알고리즘의 첫 번째 부분이 완성됩니다.계산의 관점에서 보면 역순으로 변수를 해결하는 것이 더 빠릅니다. 역치환이라고 하는 프로세스입니다.해답은 z = -1, y = 3, x = 2입니다.그래서 원래의 방정식 체계에 대한 독특한 해법이 있습니다.

행렬이 일단 echelon 형식이 되면 중단하는 대신 행렬이 표에서와 같이 축소된 행 echelon 형식이 될 때까지 계속할 수 있습니다.행렬이 축소될 때까지 행이 축소되는 과정을 가우스-요르단 제거라고 부르기도 하는데, 이는 행렬이 에켈론 형태에 도달한 후 멈추는 것과 구별하기 위해서이다.

역사

가우스 제거 방법은 비록 증거는 없지만 중국 수학 텍스트 8장: 수학 예술에 관한 9장직사각형 배열에 나타난다.18개의 문제에서 2-5개의 방정식을 사용하여 이 방법의 용도를 설명하고 있습니다.이 제목으로 이 책에 대한 첫 번째 언급은 서기 179년으로 거슬러 올라가지만, 그것의 일부는 기원전 [2][3]150년경에 쓰여졌다.그것은 3세기에 유희에 의해 언급되었다.

유럽에서의 방법은 아이작 [4][5]뉴턴의 주석에서 유래했다.1670년, 그는 그에게 알려진 모든 대수학 책에는 연립 방정식을 푸는 교훈이 부족하다고 썼고, 뉴튼은 그것을 제공했다.캠브리지 대학교는 결국 뉴턴이 학업을 떠난 지 한참 지난 1707년에 이 노트를 산술적 유니버설리스로 출판했다.음표들은 널리 모방되었고, 이것은 18세기 말까지 가우스 제거를 대수 교과서에서 표준 수업으로 만들었다.1810년프리드리히 가우스는 최소 제곱 [6]문제의 정규 방정식을 풀기 위해 19세기에 전문적인 핸드 컴퓨터에 의해 채택된 대칭 제거 표기법을 고안했다.고등학교에서 가르치는 알고리즘은 1950년대에만 [7]과목의 역사에 대한 혼란의 결과로 가우스를 위해 명명되었다.

일부 저자는 행렬이 에켈론 형식이 될 때까지 절차만을 참조하기 위해 가우스 제거라는 용어를 사용하고, 환원된 에켈론 형식으로 끝나는 절차를 참조하기 위해 가우스-요르단 제거라는 용어를 사용한다.이 이름은 1888년 빌헬름 조던에 의해 기술된 가우스 제거의 변형이기 때문에 사용됩니다.그러나 이 방법은 같은 해에 발표된 Clasen의 기사에도 나와 있다.요르단과 클라센은 [8]아마도 독립적으로 가우스-요르단 소거를 발견했을 것이다.

적용들

역사적으로 행 축소법의 첫 번째 적용은 선형 방정식의 시스템을 푸는 것이다.다음은 알고리즘의 기타 중요한 응용 프로그램입니다.

컴퓨팅 결정 요인

가우스 제거가 정사각형 행렬의 행렬식 계산을 가능하게 하는 방법을 설명하기 위해, 우리는 초등 행 연산이 행렬식을 어떻게 변화시키는지 기억해야 한다.

  • 두 행을 바꾸면 행렬식에 -1을 곱합니다.
  • 행에 0이 아닌 스칼라를 곱하면 행렬식에 동일한 스칼라가 곱됩니다.
  • 한 행에 다른 행의 스칼라 배수를 추가해도 행렬식은 변경되지 않습니다.

정사각형 행렬 A에 가우스 소거가 행 에켈론 행렬 B를 생성하는 경우 위의 규칙을 사용하여 d를 행렬식에 곱한 스칼라의 곱으로 하자.A의 행렬식은 B의 대각선 원소의 곱에 대한 d의 몫이다.

계산적으로, n × n 행렬의 경우, 이 방법3 O(n) 산술 연산만 필요로 하는 반면, 라이프니츠 공식을 행렬에 사용하는O(n!) 연산(공식에서의 총합 수)이 필요하며, 재귀적 라플라스 확장n O(2) 연산(두 번 계산하지 않는 경우)이 필요하다.가장 빠른 컴퓨터에서도 이 두 가지 방법은 n이 20보다 크면 실용적이지 않거나 거의 실용적이지 않습니다.

행렬의 역행렬 찾기

가우스-요르단 제거라고 불리는 가우스 제거의 변형은 행렬의 역행렬이 존재한다면 그것을 찾기 위해 사용될 수 있다.A가 n × n 정사각형 행렬인 경우 행 축소를 사용하여 역행렬을 계산할 수 있습니다.우선, n×n의 항등 행렬을 A의 오른쪽으로 증강해, n×2n의 블록 행렬[AI]을 형성한다.이제 기본 행 연산을 적용하여 이 n x 2n 행렬의 축소된 echelon 형식을 찾습니다.행렬 A는 왼쪽 블록을 항등 행렬 I로 줄일 수 있는 경우에만 반전할 수 있습니다. 이 경우 최종 행렬의 오른쪽 블록은 A입니다−1.알고리즘이 왼쪽 블록을 I로 줄일 수 없는 경우 A는 반전할 수 없습니다.

예를 들어 다음 매트릭스를 생각해 보겠습니다.

이 행렬의 역행렬을 구하려면 항등식에 의해 증가된 다음 행렬을 3 × 6 행렬로 행 축소합니다.

행 연산을 수행함으로써 이 증강 매트릭스의 축소 행 echelon 형식이

각 행 연산은 기본 행렬의 왼쪽 곱이라고 생각할 수 있습니다.B는 이들 기본행렬의 곱을 B로 나타내어 왼쪽에는 BA = I, 즉 B−1 = A로 표시했다.오른쪽에는 BI = B의 기록을 유지했는데, 이는 우리가 원하는 역수이다.이 절차에서는 모든 크기의 정사각형 행렬에 대해 역행렬을 찾습니다.

랭크와 베이스 계산

가우스 제거 알고리즘은 모든 m × n 행렬 A에 적용할 수 있습니다.예를 들어, 일부 6 × 9 행렬은 다음과 같은 행 형식을 가진 행렬로 변환할 수 있습니다.

여기서 별은 임의의 엔트리, a, b, c, d, e는 제로 이외의 엔트리입니다.이 에셜론 행렬 T는 A에 대한 풍부한 정보를 포함하고 있다: T에는 0이 아닌 행이 5개 있기 때문에 A의 순위는 5이다. A의 에 의해 스팬된 벡터 공간은 1, 3, 4, 7 및 9(a, b, c, d, E가 T에 있는 열)로 구성되며, 별들은 A의 다른 조합이 어떻게 선형으로 기록될 수 있는지를 보여준다.e basis 열.이것은 행렬로서의 선형 맵의 표현에서 점곱의 분포성의 결과입니다.

이 모든 것은 특정 행 echelon 형식인 축소 행 echelon 형식에도 적용됩니다.

계산 효율

행 축소를 실행하는 데 필요한 산술 연산의 수는 알고리즘의 계산 효율을 측정하는 한 가지 방법입니다.예를 들어 행렬에서 행 연산을 실행해 n개의 미지 방정식을 echelon 형식으로 한 후 역순으로 풀려면 n(n + 1)/2의 나눗셈, (2n323 + 3n - 5n)/6의 곱셈, (2n2 + 3n - 5n)/6의 [9]곱셈이 필요하며, 총 23/3n의 연산이 필요하다.따라서 O(n3)산술 복잡도를 갖습니다. 빅 O 표기법을 참조하십시오.

이 산술 복잡도는 각 산술 연산의 시간이 거의 일정할 때 전체 계산에 필요한 시간을 측정하는 좋은 척도입니다.이는 계수가 부동소수점 숫자로 표현되거나 계수가 유한 필드에 속하는 경우입니다.계수가 정확히 표현되는 정수 또는 유리수일 경우 중간 엔트리가 기하급수적으로 커질 수 있으므로 비트 복잡도[10]기하급수적으로 증가합니다.단, 중간 엔트리의 지수 증가를 피하고 O3(n)의 산술 복잡도와 동일한 O(n5)의 비트 복잡도를 갖는 Bareiss 알고리즘이라고 불리는 가우스 제거의 변형이 있습니다.

이 알고리즘은 수천 개의 방정식과 미지수가 있는 시스템에 사용할 수 있습니다.그러나 수백만 개의 방정식이 있는 시스템에서는 비용이 만만치 않습니다.이러한 대규모 시스템은 일반적으로 반복적인 방법을 사용하여 해결됩니다.계수가 규칙 패턴을 따르는 시스템에 대한 구체적인 방법이 있습니다(선형 방정식 시스템 참조).

n × n 행렬을 행 연산에 의해 감소된 echelon 형태로 만들려면 n개의 산술 연산이 필요하며3, 이는 계산 단계가 [11]약 50% 더 많은 것입니다.

한 가지 가능한 문제는 아주 작은 숫자로 나눌 수 있는 가능성으로 인한 수치 불안정이다.예를 들어 행 중 하나의 선행 계수가 0에 매우 가깝다면 행렬을 행 감소시키려면 해당 수로 나누어야 합니다.즉, 0에 가까운 숫자에 존재하는 오차는 증폭됩니다.가우스 제거는 대각선 우세 행렬 또는 의 정의 행렬에 대해 수치적으로 안정적입니다.일반 행렬의 경우 [12]가우스 제거는 불안정한 안정적인 행렬의 예가 있음에도 불구하고 부분 피벗을 사용할 때 일반적으로 안정적인 것으로 간주됩니다.

일반화

가우스 소거는 실수뿐만 아니라 모든 필드에 걸쳐 수행할 수 있습니다.

Buckberger알고리즘은 다항식 시스템에 대한 가우스 제거의 일반화이다.이 일반화는 단항 순서의 개념에 크게 의존한다.변수에 대한 순서 선택은 이미 가우스 제거에 내포되어 있으며, 피벗 위치를 선택할 때 왼쪽에서 오른쪽으로 작업하는 선택으로 나타납니다.

2보다 큰 순서의 텐서의 순위를 계산하는 것은 [13]NP-hard이다.따라서 P np NP일 경우 고차 텐서의 가우스 소거 다항식 시간 아날로그가 존재할 수 없습니다(행렬은 2차 텐서의 배열 표현입니다).

유사 코드

위에서 설명한 바와 같이, 가우스 제거는 주어진 m × n 행렬 A를 행-에켈론 형태의 행렬로 변환합니다.

다음 의사 코드에서는A[i, j]행렬 A가 i행j열의 1부터 시작하는 인덱스를 포함하는 엔트리를 나타냅니다.변환이 제자리걸음으로 수행됩니다.즉, 원래의 행렬이 행-에켈론 형식으로 대체되기 때문에 손실됩니다.

h : = 1 /* 피벗초기화 * / k : = 1 /* 피벗초기화 */ 동안 피벗 초기화 * / i _ max : = argmax ( i = h ... m , abs ( A [ i , k ) = 0 /* 이 피벗 열에 통과하지 않는 경우피벗 아래의 ws: */ i = h + 1 ... m : f : = A [ i , k ] /* 피벗 열의 아래쪽을 0으로 채웁니다. * / A [ i , k ] : = 0 / * 현재 행의 나머지 모든 요소에 대해: */ j = k + 1...n: A[i, j] := A[i, j] - A[h, j] * f /* 피벗 행 및 열 증가 */h := h + 1 k := k + 1

이 알고리즘은 절대값이 가장 큰 피벗을 선택한다는 점에서 앞에서 설명한 알고리즘과는 약간 다릅니다.이러한 부분 피벗은 피벗 위치에서 행렬의 엔트리가 0인 경우 필요할 수 있습니다.어떤 경우에도 피벗의 가능한 가장 큰 절대값을 선택하면 부동 소수점이 숫자 표현에 사용될 때 알고리즘의 수치 안정성이 향상됩니다.

이 절차를 완료하면 매트릭스가 열 형태로 되며, 대응하는 시스템은 백 치환으로 해결할 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Grcar, Joseph F. (2011-05-01). "How ordinary elimination became Gaussian elimination". Historia Mathematica. 38 (2): 163–218. doi:10.1016/j.hm.2010.06.003. ISSN 0315-0860. S2CID 14259511.
  2. ^ 캘린저(1999), 페이지 234–236
  3. ^ Timothy Gowers; June Barrow-Green; Imre Leader (8 September 2008). The Princeton Companion to Mathematics. Princeton University Press. p. 607. ISBN 978-0-691-11880-2.
  4. ^ Grcar (2011a), 169-172페이지
  5. ^ Grcar (2011b), 페이지 783-785
  6. ^ 로리첸, 3페이지
  7. ^ Grcar (2011b), 페이지 789
  8. ^ Althoen, Steven C.; McLaughlin, Renate (1987), "Gauss–Jordan reduction: a brief history", The American Mathematical Monthly, Mathematical Association of America, 94 (2): 130–142, doi:10.2307/2322413, ISSN 0002-9890, JSTOR 2322413
  9. ^ Fare brother(1988), 12페이지.
  10. ^ Fang, Xin Gui; Havas, George (1997). "On the worst-case complexity of integer Gaussian elimination" (PDF). Proceedings of the 1997 international symposium on Symbolic and algebraic computation. ISSAC '97. Kihei, Maui, Hawaii, United States: ACM. pp. 28–31. doi:10.1145/258726.258740. ISBN 0-89791-875-4.[영구 데드링크]
  11. ^ J. B. 프레일리와 R. A. 보레가드, 선형 대수학.애디슨 웨슬리 출판사, 1995년, 10장
  12. ^ Golub & Van Loan(1996), § 3.4.6.
  13. ^ Hillar, Christopher; Lim, Lek-Heng (2009-11-07). "Most tensor problems are NP-hard". arXiv:0911.1393 [cs.CC].

인용된 작품

외부 링크