일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 하이브
- 주식분석
- codingthematrix
- 파이썬
- 코딩더매트릭스
- 하둡2
- GRU
- hadoop2
- NumPy
- 텐서플로
- 알고리즘
- recursion
- scrapy
- yarn
- collections
- 그래프이론
- C언어
- 딥러닝
- HelloWorld
- python
- Sort
- RNN
- C
- Java
- tensorflow
- hive
- graph
- LSTM
- effective python
- 선형대수
- Today
- Total
EXCELSIOR
[코딩더매트릭스]Chap05 - 행렬 The Matrix 본문
Chap 05 - 행렬(The Matrix)
5.1 행렬이란 무엇인가?
5.1.1 전통적인 행렬
일반적으로, 개의 행과 개의 열을 가진 행렬은 행렬이라 한다. 행렬 에 대해 원소 는 번쨰 행과 번째 열에 있는 원소로 정의되며, 전통적으로 또는 로 나타낸다. 따라서, 상의 모든 과 에 대하여 일 때,
을 -위의 ()-행렬(()-matrix over )이라고 한다.
5.1.2 행렬에 대해 알아보기
상의 -벡터를 집합 에서 로의 함수로 정의한거 처럼, 상의 행렬을 카테시안 곱 로의 함수로 정의한다. 의 원소를 행 라벨 (row label) 이라 하고 의 원소를 열 라벨 (column label)이라 한다.
Example 5.1.3 아래는 {'a', 'b'}
이고 {'#', '@', '?'}
인 예이다.
@ | # | ? | |
---|---|---|---|
a | 1 | 2 | 3 |
b | 10 | 20 | 30 |
5.1.3 행, 열, 엔트리
행렬의 유용한 점은 행과 열을 벡터로 해석할 수 있다. 위의 Example 5.1.3의 행렬을 아래와 같이 벡터로 나타낼 수 있다.
행
a
는 벡터 [1, 2, 3] 이다.행
b
는 벡터 [10, 20, 30] 이다.열
@
는 벡터 [1, 10] 이다.열
#
은 벡터 [2, 20] 이다.열
?
는 벡터 [3, 30] 이다.
이번 5장에서는 행렬 구현 및 예제들을 파이썬의 고성능 수치 계산을 위한 모듈인 NumPy를 사용한다. numpy모듈을 이용하여 위의 Example 5.1.3을 다음과 같이 코드로 나타낼 수 있다.
위와 같이 행렬 에 대해, 의 원소는 쌍이 매핑하는 것으로 정의 되며 또는 로 나타내고, 행과 열은 아래와 같이 정의된다.
에 대해, 행 은 각 원소 에 대해 엔트리 가 인 -벡터 이다.
에 대해, 열 는 각 원소 에 대해 엔트리 이 인 -벡터 이다.
이를 numpy를 이용한 파이썬 코드로 나타내면 아래와 같다.
5.1.4 행렬의 파이썬 구현
교재에서는 Mat
이라는 클래스를 별도로 구현하지만, 여기서는 위에서도 언급 했듯이 numpy 모듈을 이용해서 행렬을 구현하도록 한다. 다음 행렬을 numpy 모듈을 이용해서 구현해보자.
5.1.5 단위행렬 - Identity matrix
Definition : 유한 집합 에 대해 단위행렬은 행-라벨 집합과 열-라벨 집합이 둘다 이고 모든 에 대해 엔트리 ()는 (다른 모든 엔트리는 0)인 행렬이다. 단위행렬은 로 나타낸다.
numpy에서는 identity()
를 이용해 단위행렬을 생성할 수 있다.
5.2 열공간(Column space)과 행공간(Row space)
행렬은 여러가지 목적을 위해 사용되며 그 중 한 가지는 벡터들의 묶음을 만드는 데 사용된다. 행렬을 벡터들의 묶음으로 해석하는 두 가지 방법이 있다. 바로, 열들의 묶음과 행들의 묶음이다. 따라서, 행렬과 연관된 벡터공간은 두 개가 있게 된다.
Definition : 행렬 에 대해,
의 열공간(Column space) 은 Col 으로 나타내며 의 열들에 의해 생성된 벡터공간이다.
의 행공간(Row space)은 Row 으로 나타내며 의 행들에 의해 생성된 벡터공간이다.
Example 5.2.2 : 의 열공간은 이다. 이 경우 은 의 스칼라배이므로 열공간은 과 동일하다. 행공간은 이다.
5.3 벡터로서의 행렬
위의 5.3에서 처럼 행렬은 벡터로 해석될 수 있다. 상의 행렬은 에서 로의 함수이다. 따라서 상의 -벡터로 해석될 수 있다. 이 해석을 이용하면 벡터 연산인 스칼라-벡터 곱셈 와 벡터 덧셈 을 행렬에 대해 사용할 수 있다.
5.4 전치(Transpose)
행렬의 전치 는 행과 열을 바꾸는 것을 의미한다.
Definition : 행렬의 전치는 로 나타내며, 모든 에 대해 를 만족하는 행렬이다.
다음 행렬 M에 대한 전치행렬은 아래와 같다.
numpy 모듈에서는 numpy.matrix.transpose()
또는 numpy.matrix.T
로 전치행렬을 구할 수 있다.
만약 이면, 행렬 은 대칭행렬(Symmetric Matrix)이라 한다.
5.5 선형결합의 행렬-벡터 곱셈과 벡터-행렬 곱셈
5.5.1 선형결합의 행렬-벡터 곱셈
Definition(행렬-벡터 곱셈의 선형결합 정의) : 을 상의 행렬이라고 하고, 는 상의 -벡터라고 하면, 는 선형결합이다.
만약 행렬 이 이지만 는 -벡터가 아니면, 는 성립하지 않는다. 행렬의 열(column) 수는 벡터의 원소 개수와 일치해야 한다. 우리가 중, 고등학교 수학해서 행렬을 배울때 행렬의 곱셈이 성립 되는 규칙을 생각하면 된다. 아래의 예제를 보자. <br />
Example 5.5.2 :
numpy.dot
을 이용하여 벡터-행렬 곱셈을 구현할 수 있다.
5.5.2 선형결합의 벡터-행렬 곱셈
Definition(벡터-행렬 곱셈의 선형결합 정의) : 을 행렬이라 하고, 는 -벡터라고 하면 은 선형결합이다.
행렬과 벡터의 곱은 교환법칙이 성립되지 않는다. 는 성립하지만, 은 성립하지 않는 경우가 거의 대부분이다.
Example 5.5.7 :
5.5.3 생략
5.5.4 행렬-벡터 방정식의 해 구하기
input: 행렬 와 -벡터
output: 를 만족하는 -벡터
Example 5.5.14 : Example 4.4.13 에서 를 고려하였다. 이때, 이다.
가 에 있지 않으면 이다.
이 경우, 의 모든 벡터 에 대해 다음을 만족하는 계수 가 있다.
라고 하면, 아래와 같이 쓸 수 있다.
numpy.linalg.solve()
를 이용해 행렬-벡터 방정식의 해를 구할 수 있다. 예를 들어 , 행렬방정식 에서 를 구한다고 할때, 아래와 같이 구할 수 있다.
5.6 도트곱(dot-product)의 행렬-벡터 곱셈
5.6.1 정의
Definition(행렬 -벡터 곱셈의 도트곱 정의) : 이 행렬이고 는 -벡터 이면, 는 -벡터 이다. 이때, 은 의 행 과 의 도트곱이다.
Definition(벡터-행렬 곱셈의 도트곱 정의) : 이 행렬이고 는 -벡터 이면, 은 -벡터 이다. 이때, 은 와 의 열 의 도트곱이다.
Example 5.6.2 : 행렬-벡터 곱셈을 고려해 보자.
5.6.2 응용 예
Example 5.6.4 : 고해상도 이미지가 있다고 해 보자. 이 이미지의 해상도를 줄여 다운샘플링(downsampling)을 한다고 해보자.
아래의 그림처럼 원래의 이미지를 () 크기 만큼 그룹을 지어 그 그룹의 평균을 저해상도의 이미지 픽셀값으로 설정한다.
아래의 코드는 파이썬에서 pillow
라는 모듈을 이용하여 이미지 파일을 불러오고 Image.resize()
메소드를 이용해 사이즈를 4배 축소해준 예제 및 for
문을 순회 하면서 위의 설명 처럼 () 크기 만큼 그룹을 만들어 그 값의 평균을 픽셀값으로 지정하여 img_r
이라는 이미지 행렬을 만들어 준 예제이다.
5.6.3 선형방정식들의 시스템을 행렬-벡터 방정식으로 구성하기
3.9.2 선형방정식에서 선형방정식은 형태의 방정식으로 정의하였고 선형방정식들의 시스템(일차 연립방정식)을 이러한 방정식들의 컬렉션으로 정의했다.
이를 행렬-벡터 곱셈의 도트곱 정의를 사용하여 행렬-벡터 방정식으로 나타낼 수 있다. 를 행들이 인 행렬이라 하고, 는 벡터 라고 하면, 선형방정식들의 시스템은 행렬-벡터 방정식 와 동일하다. 따라서 선형시스템의 해를 구하는 것은 곧 행렬방정식의 해 를 구하는 것과 같은 의미다.
5.6.4 삼각시스템(Triangular system)과 삼각행렬(Triangular matrix)
3.11에서 선형방정식들의 삼각시스템에 대한 해를 구하는 알고리즘을 알아보았다. 아래의 삼각시스템을 행렬-벡터 방정식으로 나타내면 다음과 같다.
Definition : 상삼각 (Upper-triangular) 행렬 는 에 대해 행렬이다.
삼각형을 형성하는 즉, Upper-traingular 부분의 원소들은 0일 수도 있고 아닐 수도 있다.
numpy에서는 numpy.triu
를 이용해 Upper-triangular를 구할 수 있다.
5.6.5 행렬-벡터 곱셈의 산술적 성질
행렬-벡터 곱셈의 도트곱 해석을 사용하여 두 개의 중요한 성질을 유도해 보자.
Proposition : 을 행렬이라 하면,
임의의 -벡터 와 임의의 스칼라 에 대해,
임의의 -벡터 와 에 대해,
5.7 영공간 - Null space
5.7.1 동차 선형시스템과 행렬방정식
4.6에서 동차 선형시스템에 대해 알아보았다. 동차 선형 시스템은 우변의 값들이 모두 영(0)인 선형 방정식들의 시스템이다. 이러한 시스템은 우변이 영벡터인 행렬-벡터 방정식 으로 나타낼 수 있다.
Definition : 행렬 의 영공간(Null space) 은 집합 이다. 이를 Null 로 나타낸다. Null 는 동차 선형시스템의 해집합이므로 벡터공간(4.4 참고)이다.
Example 5.7.2 : 이면, 첫 번째, 두번째 열의 합은 세 번째 열과 동일하므로 은 영벡터이다. 따라서, 벡터 [1, 1, -1]은 Null 에 속한다. 또한 임의의 스칼라 에 대해 도 영벡터이다. 그러므로 도 Null 에 속한다.
Lemma : 임의의 행렬 와 -벡터 에 대해 벡터 가 의 영공간(Null space)에 있을 필요충분조건은 이다.
5.7.2 행렬-벡터 방정식의 해공간
Corollary : 은 행렬-벡터 방정식 의 해라고 하면, 또한 해가 될 필요충분조건은 가 의 영공간(Null space)에 속하는 것이다.
Corollary : 행렬-벡터 방정식 가 해를 가진다면, 이 해가 유일한 해가 될 필요충분조건은 의 영공간이 영벡터로만 구성 되는 것이다.
5.8 스파스(Sparse) 행렬-벡터 곱 계산
Sparse Matrix(희소행렬)은 아래의 행렬과 같이 행렬의 원소(엔트리) 대부분이 인 행렬을 의미한다.
Definition(행렬-벡터 곱셈의 일반적 정의) : 이 행렬이고 가 -벡터이면, 은 각 에 대해 다음을 만족하는 -벡터 이다.
위의 정의대로 행렬-벡터 곱셈을 구현한다고 하면 다음과 같이 작성할 수 있다.
for in :
하지만, 희소행렬을 위의 방식대로 구현하면 효율적이지 않다. 희소행렬을 구현하는 방법 중 하나는 출력 벡터 를 영벡터로 초기화하고, 그다음에 의 영이 아닌 엔트리들에 대해 이터레이션하는 것이다.
initialize to zero vector
5.9 행렬과 함수의 만남
5.9.1 행렬에서 함수로
모든 행렬 에 대해 행렬-벡터 곱셈을 사용하여 함수 를 정의할 수 있다. <br />
Definition : 행렬 이 필드 상의 행렬이면 함수 은 로 정의 할 수 있다. <br />
위의 Definition은 선형 대수학에서 사용되는 전통적인 정의는 아니며, 교재에서 별도로 정의한 것이다. <br />
Example 5.9.1 : 은 아래의 행렬이라고 하자.
# | @ | ? | |
---|---|---|---|
a | 1 | 2 | 3 |
b | 10 | 20 | 30 |
그러면, 함수 의 정의역은 , 공역은 이다. 예를 들어, 벡터 의 치역은 벡터 이다.
5.9.2 함수에서 행렬로
어떤 행렬 에 대응하는 함수 가 있다고 하고, 인 행렬 을 계산하고자 한다.
먼저, M에 대한 열-레이블(Column-label) 집합을 알아보면 의 정의역은 이므로, 는 -벡터이다. 곱 가 성립하려면 의 열-레이블 집합은 가 되어야 한다. 그다음으로, 의 공역은 이므로, 을 에 곱한 결과는 -벡터여야 한다. 이것이 성립하려면 의 행-레이블(Row-label) 집합은 가 되어야 한다.
은 라는 것을 알았으므로, 이제 행렬 의 원소들을 구하면 된다. 원소들을 구하기 위해 행렬-벡터 곱의 선형결합 정의를 이용한다. 에 대한 표준 생성자(4.2.5 참고)를 기억해 보자. 각 원소 에 대해 는 1에 매핑하고 의 다른 모든 원소는 0에 매핑하는 생성자 가 있다. 선형결합 정의에 의하면 는 의 열 이다. 즉, 의 열 는 와 동일해야 한다.
5.9.3 행렬을 유도하는 예
Example 5.9.3 : 은 -좌표를 2만큼 스케일링하는 로의 함수라고 하고, 어떤 행렬 에 대해 라고 가정하자. 정의역 에 대한 상(치역)은 이고, 이 상은 이다. 따라서 이다.
numpy와 matplotlib을 이용해 그래프로 확인 해보자.
Example 5.9.4 : 은 로의 함수라고 하자. 이 함수는 2D 상의 점들을 원점에 대해 반시계 방향으로 90도 회전하는 것이다. 어떤 행렬 에 대해 라고 가정하자. 을 찾기 위해 두 표준 생성자 과 의 함수값을 구하면 이고, 이 된다. 행렬 을 구하게 되면 이다.
Example 5.9.5 : 임의의 각도 에 대해, 은 로의 함수라 하자. 이 함수는 원점에 대해 만큼 반시계 방향으로 점들을 회전하는 것이다. 행렬 에 대해 라고 가정하자. 점 을 만큼 회전하면 점 가 얻어진다. 그리고 점 을 만큼 회전하면 점 가 얻어진다. 그 이유는 아래의 그림과 같다.
따라서, 이다.
5.10 선형함수 - Linear functions
5.10.1 행렬-벡터 곱으로 표현될 수 있는 함수
4.4 벡터공간 에서 벡테공간에 대한 세 가지 성질에 대해 살펴보았다. 또한 5.6.5에서 행렬-벡터 곱셈의 두 가지 대수적 성질을 알아보았다. 이제 이러한 대수적 성질을 사용하여 특수한 종류의 함수인 선형함수 를 정의해 보자.
5.10.2 정의와 간단한 예제
Definition : 와 는 필드 상의 벡터공간이라 하자. 함수 은 다음 두 성질을 만족할 경우 선형함수(또는, 선형변환) 라고 한다.
Property L1 : 의 정의역 내 임의의 벡터 와 내 임의의 스칼라 에 대해,
Property L2 : 의 정의역 내 임의의 두 벡터 와 에 대해,
은 필드 상의 행렬 라 하고, 아래 함수를 로 정의해 보자.
정의역과 공역은 벡터공간이다. 5.6.5의 성질에 의하면 아래와 같이 함수 는 Property L1과 L2를 만족한다.
따라서, 는 선형함수이다.
Proposition : 임의의 행렬 데 대해 함수 는 선형함수 이다.
아래의 경우는 특수한 경우를 보여준다.
Lemma : 상의 임의의 -벡터 에 대해, 에 의해 정의된 함수 는 선형함수 이다.
Proof : 는 행렬이라 하고, 이행렬의 유일한 행은 라 하면, 이고 위의 Lemma 는 5.6.5의 성질에 의해 성립한다.
5.10.3 선형함수와 영벡터
Lemma : 와 는 필드 상의 벡터공간이라 하고, 가 선형함수이면, 는 의 영벡터를 의 영벡터에 매핑한다.
Proof : 을 의 영벡터, 를 의 영벡터라 하면,
양번에 을 빼면 다음과 같다.
Definition : 행렬의 영공간(Null space)와 마찬가지로 선형함수의 의 커널(kernel) 을 라고 정의하고, 의 커널을 Ker 로 나타낸다.
Lemma : 선형함수의 커널은 벡터공간이다.
5.10.4 선형함수와 직선의 관계는 무엇인가?
함수 는 선형함수라 가정하고, 과 는 내 두 개의 벡터라 하자. 선형결합 와 의 상(함수값)을 고려해 보자. 함수 를 선형함수라고 가정하였으니, 위의 Property L1과 L2 를 만족한다.
과 의 선형결합의 상(함수값)은 과 의 선형결합에 대응한다고 할 수 있다.
이것이 기하학적으로 무엇을 의미할까? 정의역 가 인 경우에 대해 고려해 보자. 점 과 를 지나는 직선은 과 의 아핀 hull(Affine hull, 4.5.2 참고) 즉, 아핀결합들로 구성된 집합니다.
이러한 모든 아핀결합들에 대한 의 상들의 집합은 아래와 같다.
또한, 위의 식은 다음과 같이 쓸 수 있다.
즉 .과 의 모든 아핀결합들의 집합이다. 따라서, 다음과 같이 나타낼 수 있다.
과 를 지나는 직선에 대한 의 상은 과 를 지나는 "직선 " 이다.
Proposition : 선형함수 , 의 정의역 내 임의의 벡터 과 임의의 스칼라 에 대해, 다음이 성립한다.
즉, 임의의 flat의 선형함수에 대한 상(함수값)은 또 다른 flat이다.
아래의 예제는 행렬 에 대해 선형함수 에대해 그래프를 그려본 것이다. 아래의 그래프와 같이 라는 선형함수에 대한 상(함수값)은 또 다른 이라는 것을 알 수 있다.
5.10.5 단사함수인 선형함수
커널(kernel)의 개념을 사용하여 선형함수가 단사함수인지 아닌지를 알아보는 기준을 제시할 수 있다.
Lemma (One-to-One Lemma) : 선형함수가 단사함수일 필요충분조건은 함수의 커널이 자명한 벡터공간이 되는 것이다.
Proof : 는 선형함수라고 하면 증명은 두 가지 방법으로 할 수 있다.
Ker 가 어떤 영이 아닌 벡터 를 포함한다고 하자. 그리고 이며, 또한 일 경우 는 단사함수가 아니다.
Ker 라고 하자. 는 를 만족하는 임의의 벡터라고 하면 이다. 선형성(linearity)에 의해 이고, Ker 이다. Ker 는 으로만 구성되므로 이고, 따라서 이다.
위의 증명을 그림으로 나타내면 아래와 같다. (출처 : ratsgo's blog)
위의 Lemma 는 선형시스템의 해가 유일한가? 란 물음에 대해 새로운 관점을 제공한다. 선형시스템 의 해를 구하는 것은 함수 에 대한 의 원상(pre-image) 즉, 를 구하는 것으로 해석할 수 있다. 만약 원상이 존재하고, 그것이 가 단사함 수일 경우 선형시스템의 해는 유일하다.
5.10.6 전사함수인 선형함수
정의역 를 가진 함수 의 상 은 집합 라 하고, 함수 가 전사함수(onto) 라는 것은 함수의 치역(Image)과 공역(codomain)이 일치해야 한다.
가 선형함수일 때 의 상을 Im 로 나타낸다. 따라서 가 전사인지를 판단하는 것은 Im 와 같다.
아래의 그림은 전사함수가 아닌 경우와 전사함수인 경우를 나타낸다. (출처 : ratsgo's blog)
Lemma : 선형함수의 상은 그 함수의 공역의 부분공간 이다.
Proof : 는 선형함수라고 하면, Im 는 의 부분집합이다. Im 는 의 부분 공간임을 보이기 위해, Im 는 벡터공간의 성질 (4.4 벡터공간 참고) Property V1, V2, V3 을 만족해야 한다는 것을 보여야 한다.
V1 : 5.10.3 에서 보았듯이 는 의 영벡터를 의 영벡터로 매핑한다. 따라서, 의 영벡터는 Im 에 속한다.
V2 : 는 Im 내의 벡터라고 하면, Im 의 정의에 의하면, 를 만족하는 벡터 가 내에 있어야 한다. 임의의 스칼라 에 대해, 다음이 성립한다. 따라서 는 Im 내에 있다.
V3 : 과 는 Im 내에 있는 벡터라고 하면, Im 의 정의에 의해, 과 를 만족하는 벡터 과 가 내에 있어야 한다. 5.10.2 에서 선형함수의 Property L1에 의하면 이다. 따라서, 는 Im 내에 있다.
5.10.7 행렬에 의해 표현될 수 있는 에서 로의 선형함수
Lemma : 이 선형함수이면, 모든 벡터 에 대해 을 만족하는 상의 행렬 이 있다.
5.10.8 대각행렬 - Diagonal Matrix
을 실수라고 하고, 은 을 만족하는 함수라고 하면, 이 함수에 대응하는 행렬은 다음과 같다.
이러한 행렬을 대각 행렬이라 한다.
Definition : 정의역 에 대해, 행렬 은 인 모든 쌍 에 대해 이면 대각행렬 이다.
numpy 모듈에서 numpy.diag()
를 이용해 대각행렬을 구현할 수 있다.
5.11 행렬-행렬 곱셈
5.11.1 행렬-벡터 및 벡터-행렬 곱셈으로 표현한 행렬-행렬 곱셈
Definition :
행렬-행렬 곱셈의 벡터-행렬 정의 : 의 각 행-라벨 에 대해,
행렬-행렬 곱셈의 행렬-벡터 정의 : 의 각 열-라벨 에 대해,
5.11.2 생략
5.11.3 행렬-행렬 곱셈과 함수 합성
행렬 와 는 행렬-벡터 곱셈 와 를 통해 함수를 정의 한다. 두 행렬을 곱한 결과인 행렬 를 라고 하면,
Lemma :
proof : 행렬 를 열 벡터로 나타내면 아래와 같다.
행렬-행렬 곱셈의 행렬-벡터 정의에 의해, 의 열 는 ( 의 열 ) 이다. 임의의 -벡터 에대해,
Definition : 행렬 를 번 곱한 것은 (k 번 곱함) 이다. 이를 " 의 제곱 "이라 한다.
5.11.4 행렬-행렬 곱의 전치
Proposition : 행렬 와 에 대해 다음이 성립한다.
Example 5.11.15
5.11.5 열벡터와 행벡터
열벡터 : 행렬은 행렬-벡터 곱셈에서 벡터 처럼 동작하므로 열벡터 라고 한다. 아래의 행렬-행렬곱을 고려해 보자.
위의 행렬-행렬 곱셈에서 ()-행렬 에 열이 하나밖에 없는 행렬 를 곱한 결과는 열이 하나인 행렬이 된다. 위의 식에서 를 벡터 로 해석하고, 를 벡터 로 해석하면 위의 식은 행렬-벡터 식 로 해석할 수 있다.
행벡터 : 벡터를 행렬로 해석하는 또 다른 방법은 행이 하나 밖에 없는 행렬로 해석할 수 있다. 이러한 행렬을 행벡터 라고 한다. 이러한 행벡터의 오른쪽에 행렬 을 곱하는 것은 벡터-행렬 곱셈과 같다.
5.11.6 모든 벡터는 열벡터로 해석된다.
선형 대수학의 관례에 따르면, 행렬과 벡터가 관련된 것을 표현할 때 모든 벡터는 열벡터로 해석된다. 벡터를 행벡터 대신 열벡터로 해석하는 이유는 행렬-벡터 곱셈이 벡터-행렬 곱셈보다 더 흔하기 때문이다.
Example 5.11.17 : 아래의 행렬-벡터 곱을 행렬-행렬(열벡터)로 나타낸다.
Example 5.11.18 : 벡터-행렬 곱은 아래와 같이 나타낸다.
5.12 내적(Inner product)과 외적(Outer product)
5.12.1 내적 (Inner product)
와 는 두 개의 -벡터라고 하고, "행렬-행렬" 곱 를 고려해 보자. 첫 번째 행렬은 하나의 행만 있고, 두 번째 행렬은 하나의 열만 가진다. 행렬-행렬 곱셈의 도트곱 정의 의하면 이 곱의 결과는 인 하나의 원소(엔트리)로 구성된다. 아래의 예제를 보자. <br />
Example 5.12.1 :
위와 같이 와 의 도트곱은 흔히 로 나타내고, 내적 이라고 한다. (내적에 대한 자세한 내용은 Chap09.내적 에서 자세히 다룬다.) 파이썬에서 numpy 모듈의 numpy.inner()
를 이용하여 벡터의 내적을 구할 수 있다. 위의 예제를 아래의 코드로 나타낼 수 있다.
5.12.2 외적 (Outer product)
이번에는 벡터 에 대해 를 고려해 보자. 의 정의역 의 각 원소 와 의 정의역의 각 원소 에 대해, 의 원소는 이다. 이러한 곱셉을 벡터 와 의 외적 이라고 한다.
Example 5.12.2 :
마찬가지로 numpy.outer()
를 이용하여 벡터의 외적을 구할 수 있다.
5.13 역함수와 역행렬
5.13.1 선형함수의 역함수는 선형함수이다.
Lemma : 가 선형함수이고 는 의 역함수이면, 도 또한 선형함수이다.
Proof : 다음 두 가지를 증명하면 된다.
의 정의역 내 모든 벡터 쌍 에 대해,
의 정의역 내 모든 스칼라 와 벡터 에 대해,
5.13.2 역행렬
Definition : 는 상의 행렬이라 하고 , 는 상의 행렬이라 하자. 함수 은 라 정의 하고, 함수 는 라고 정의하자. 와 가 서로의 역함수이면, 행렬 와 는 서로의 역행렬이라고 한다. 가 역행렬을 가지면 는 가역행렬(Invertible matrix) 라고 한다. 역함수의 유일성을 이용하여 행렬 또한 역행렬이 존재할 경우 오직 하나의 역행렬을 가진다는 것을 보여줄 수 있다. 가역행렬 의 역행렬은 로 나타낸다.
가역적이지 않은 행렬은 특이행렬(singular matrix) 이라한다.
파이썬의 numpy 모듈에서 numpy.linalg.inv()
를 이용하여 행렬의 역행렬을 구할 수 있다. 아래의 예제 Example 5.13.9 의 의 역행렬을 구해보자.
5.13.3 역행렬의 사용
Lemma : 행렬 가 역행렬 을 가지면, 은 단위행렬(Identity Matrix) 이다.
Proof : 라고 하고, 라고 하면, 는 모든 -벡터 에 대해 를 만족한다. 는 항등함수이고, 따라서 는 단위행렬이다.
Proposition : 행렬 가 가역적이면, 의 행-라벨 집합과 동일한 정의역을 가지는 임의의 벡터 에 대해 행렬-벡터 식 는 정확하게 하나의 해를 가지며 그 해는 이다.
Lemma : 는 상삼각행렬(Upper triangular)이라고 하면, 가 가역적(invertible)이 될 필요충분조건은 의 대각 원소가 모두 영(0)이 아니어야 한다.
5.13.4 가역행렬의 곱은 가역행렬이다.
Proposition : 만약 와 는 가역행렬이고 행렬 곱 는 가역행렬이고, 이다.
Proof : 함수 와 를 와 라 하고, 와 는 가역행렬이라고 하면 그에 대응하는 함수인 와 는 가역적이다. 그러므로 g 는 가역적이고 그 가역 함수는 이다. 따라서, 에 대응하는 행렬 는 가역행렬이고, 역행렬은 이다.
Example 5.13.15 : 와 는 함수 와 에 대응한다.
함수 와 는 가역적이므로, 함수 가역적이다. 의 행렬-곱셈은 다음과 같으며 도 가역행렬이다.
'Linear Algebra > Coding the Matrix' 카테고리의 다른 글
[코딩더매트릭스]Chap07 - 차원 Dimension (0) | 2018.05.02 |
---|---|
[코딩더매트릭스]Chap06 - 기저 Basis (0) | 2018.04.19 |
[코딩더매트릭스]Chap04 - 벡터공간 Vector Space (0) | 2018.02.27 |
[코딩더매트릭스]Chap03 - 벡터 Vector (0) | 2018.02.05 |
[코딩더매트릭스]Chapter02 - 필드 Field (0) | 2018.02.01 |