R (3) 역행렬(inverse of a matrix, invertible matrix) : ginv(), 가우스 소거법(Gauss-Jordan elimination method)
R 분석과 프로그래밍/R 선형대수 2015. 12. 1. 00:49지난번 포스팅에서는 특수한 형태의 행렬, 제로행렬(zero matrix), 전치행렬 (transpose matrix), 대칭행렬 (symmetric matrix), 상삼각행렬 (upper triangular matrix), 하삼각행렬 (lower triangular matrix), 대각행렬 (diagonal matrix), 항등행렬 또는 단위행렬 (identity matrix, I, or unit matrix, U) 등에 대해서 알아보았습니다.
이번 포스팅에서는 역행렬(the inverse of a matrix, invertible matrix)에 대해서 소개하겠습니다. 역행렬은 사용처가 많은 중요한 개념이므로, 아래의 정의, 계산 방법, 존재 여부 확인하는 방벙을 숙지하면 좋겠습니다.
- 역행렬 (the inverse of a matrix, invertible matrix)
역행렬은 n차정방행렬 Amn과의 곱이 항등행렬 또는 단위행렬 In이 되는 n차정방행렬을 말합니다. A*B 와 B*A 모두 순서에 상관없이 곱했을 때 단위행렬이 나오는 n차정방행렬이 있다면 역행렬이 존재하는 것입니다.
아래에 예를 하나 들어봤습니다.
역행렬은 (1) 가우스 소거법(Gauss-Jordan elimination method), (2) 여인수(cofactor)를 이용해서 풀 수 있습니다. 여인수를 이용한 방법은 복잡해서 보통 가우스 소거법을 주로 사용하는데요, 이번 포스팅에서는 먼저 가우스 소거법을 소개하고, 다음번 포스팅에서 여인수(cofactor)를 이용한 역행렬 구하는 방법을 알아보겠습니다.
가우스 소거법은 기본행연산(elementary row operation)을 이용하여 위의 행렬의 곱의 왼쪽 행렬을 단위행렬로 바꾸어가는 과정이라고 보면 되겠습니다.
[참고] 기본 행연산 (elementary row operation) 1. 행렬의 한 행을 상수배한다. 2. 행렬의 두 행을 맞바꾼다. 3. 한 행을 상수배하여 다른 행에 더한다. |
[ 가우스 소거법 예시 (Gauss-Jordan elimination method) ]
R로 역행렬을 풀때는 MASS 패키지의 ginv() 함수를 사용합니다.
> # the inverse of a matrix, invertible matrix > raw_data <- c(1, 2, 3, 4) > A_1 <- matrix(raw_data, byrow=TRUE, nrow=2) > A_1 [,1] [,2] [1,] 1 2 [2,] 3 4 > library(MASS) > ginv(A_1) [,1] [,2] [1,] -2.0 1.0 [2,] 1.5 -0.5 > A_1%*%ginv(A_1) [,1] [,2] [1,] 1.000000e+00 -6.661338e-16 [2,] 8.881784e-16 1.000000e+00
|
base 패키지의 solve() 함수를 사용해도 동일합니다.
> solve(A_1) [,1] [,2] [1,] -2.0 1.0 [2,] 1.5 -0.5 |
역행렬이 존재하는 n차정방행렬을 정칙행렬(nonsingular matrix)라고 하며, 역행렬이 존재하지 않는 행렬을 특이행렬(singular matrix)라고 합니다.
역행렬이 존재하는지 여부를 확인하는 방법으로 행렬식(determinant, 줄여서 det)이라는 지표를 사용하는데요, 이 행렬식이 '0'이 아니면 역행렬이 존재하고, 이 행렬식이 '0'이면 역행렬이 존재하지 않습니다.
[ 역행렬이 존재하는 조건 : det(A) ≠ 0 ]
행렬식의 값은 n값에 따라서 달라지는데요, 2차와 3차정방행렬의 행렬식 구하는 공식만 아래에 소개하도록 하겠습니다.
[ 2차, 3차정방행렬의 행렬식 공식, SARRUS method ]
2차정방행렬의 경우 역행렬이 존재하는지를 확인하고 역행렬을 구하는 간단한 공식이 있는데요, 아래 식을 참고하시기 바랍니다. 아래와 같은 공식은 2차정방행렬에만 존재하므로, 3차 이상의 연립방정식을 풀려면 위에서 소개한 가우스 소거법은 알아두시는게 좋겠습니다.
다음번 포스팅에서는 여인수(cofactor)를 이용한 역행렬 계산 방법(☞ 바로가기) 에 대해서 소개하겠습니다.
많은 도움이 되었기를 바랍니다.
행렬, 벡터 관련 포스팅은 아래 링크를 걸어놓았습니다.
☞ 행렬 기본 이해
☞ 행렬의 기본 연산 (+, -, *, /, ^, %*%, colMeans(), rowMeans(), colSums(), rowSums())
☞ 벡터의 기본 이해와 연산 (vector: addition, subtraction, multiplication by scalar)
☞ 벡터의 곱 (1) 내적 (inner product, dot product, scalar product, projection product)
☞ 벡터의 곱 (2) 외적 (outer product, cross product, vector product, tensor product)
이번 포스팅이 도움이 되었다면 아래의 공감 ♡ 꾸욱~ 눌러주세요. ^^
'R 분석과 프로그래밍 > R 선형대수' 카테고리의 다른 글
R (6) 벡터의 곱 - [1] 내적 (inner product, dot product, scalar product, projection product) (4) | 2015.12.08 |
---|---|
R (5) 벡터(Vector)의 기본 이해와 연산 (합, 차, 스칼라배) (1) | 2015.12.05 |
R (4) 역행렬(inverse of a matrix, invertible matrix) : ginv(), 여인수(cofactor) (1) | 2015.12.02 |
R (2) 특수한 형태의 행렬 (0) | 2015.11.30 |
R (1) 행렬의 기본 개념 (2) | 2015.11.27 |