Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기
CS/이산수학

이산수학 - 행렬: 행렬의 연산, 종류, 정방행렬, 단위행렬, 역대칭행렬, 삼각행렬, 역행렬, 부울행렬

by Renechoi 2024. 5. 15.

 

1. 기본 사항 

행렬은 행과 열로 구성되는 사각형 형태로 수를 배열한 것 

 

[123456789025]

 

 

- 컴퓨터 분야의 활용

  • 프로그래밍 언어
  • 자료구조
  • 컴퓨터 그래픽스
  • 패턴인식
  • 로봇동작
  • 인공지능

행렬 

 

m과 n이 양의 정수일 때, m개의 행과 n개의 열로 구성된 직사각형의 수 배열 A를 m×n 행렬이라 한다.

행렬 A에서 i번째 행의 j번째 열의 수를 행렬 A의 (i,j) 원소라 하며, aij로 표시한다. 행렬 A를 간단히 A=[aij]로 표기하기도 한다.

- 행 벡터(row vector): 1×n 행렬
- 열 벡터(column vector): m×1 행렬


 

영행렬 

 

모든 원소가 0인 행렬을 영행렬이라고 한다. 행렬의 크기에 따라 다음과 같이 다양한 영행렬이 존재한다. 

[0000000000000000]

여기서 각 행과 열의 원소는 모두 0이다. 영행렬은 크기에 따라 다양하게 표현될 수 있다. 

 

 

 

2. 행렬의 연산 

 

(1) 기본 연산 

 

행렬에도 실수 집합에서의 사칙 연산과 유사한 다양한 연산이 존재한다. 행렬의 곱셉은 스칼라 곱과 행렬곱이 있는데, 스칼라 곱은 실수의 곱셈과 유사한 성질을 가지고 있어 쉽게 이해할 수 있다. 

 

행렬의 합, 차, 스칼라 곱 

 

- 행렬의 합: 𝑨 + 𝑩 는 같은 위치의 𝑨와 𝑩의 원소를 더해서 구해지는 행렬로서 (𝒊, 𝒋) 원소의 값은 𝒂𝒊𝒋 + 𝒃𝒊𝒋 이다.

- 행렬의 차: 𝑨 − 𝑩 는 같은 위치의 𝑨의 원소로부터 𝑩의 원소를 빼서 구해지는 행렬로서 (𝒊, 𝒋) 원소의 값은 𝒂𝒊𝒋 − 𝒃𝒊𝒋 이다.

- 스칼라 곱: 𝒌𝑨𝑨 의 각 원소에 𝒌 를 곱해서 구해지는 행렬로서 (𝒊, 𝒋) 원소의 값은 𝒌𝒂𝒊𝒋 이다.

 

 

다음과 같은 예시를 풀어보자. 

 

예시: 행렬 A와 B가 다음과 같을 때 

 

A = [110001100011]

B = [241314232316]

 

1)

B - A = [131313132305]

 

2) 

2A = [220002200022]

 

 

3) 

2A + (B - A) = [351315332327]
  

 

 

행렬의 합과 스칼라 곱의 연산법칙 

행렬의 합과 스칼라 곱은 같은 크기의 행렬𝑨,𝑩,𝑪에 대해 다음과 같은 연산법칙들을 만족한다.
(𝒂, 𝒃는 실수이고 𝑶은 모든 원소가 0인 영행렬을 의미한다.)\

 

(1) 합의 교환법칙: 𝑨+𝑩=𝑩+𝑨 

(2) 합의 결합법칙: 𝑨+ 𝑩+𝑪 = 𝑨+𝑩 +𝑪

(3) 합의 항등원: 𝑨+𝑶=𝑨
(4) 합의 역원:  𝑨+(−𝑨)=𝑶

(5) 스칼라 곱의 결합법칙: (𝒂𝒃)𝑨 = 𝒂(𝒃𝑨)

(6) 스칼라 곱의 분배법칙: (𝒂+𝒃)𝑨=𝒂𝑨+𝒃𝑨

(7) 스칼라 곱의 결합법칙: (𝒂−𝒃)𝑨=𝒂𝑨−𝒃𝑨

(8)스칼라 곱의 결합법칙:  𝒂(𝑨+𝑩) =𝒂𝑨+𝒂𝑩

(9)스칼라 곱의 결합법칙:  𝒂(𝑨−𝑩) =𝒂𝑨−𝒂𝑩

 

 

행렬의 곱 

𝑨𝒎×𝒏 행렬이고 𝑩𝒏×𝒍 행렬일 때행렬의 곱 𝑨𝑩(𝒊, 𝒋)원소가 다음과 같이  정의되는 𝒎 × 𝒍 행렬이다.

 

ABij=nk=1aikbkj=ai1b1j+ai2b2j++ainbnj

 

 

 

벡터의 내적 

A=(a1,a2,,an)와 B=(b1,b2,,bn)가 n 차원 벡터라고 할 때,
A와 B의 내적(inner product) AB는 다음과 같이 정의한다.
AB=a1b1+a2b2++anbn

 

예를 들어,A=(1,2,3),B=(1,0,2)이면AB=1(1)+20+32=1+0+6=5

 

 

 

예시: 행렬 A, B가 다음과 같을 때 AB를 계산하시오 

 

A = [412315]

B =  [7392]

 

 

풀이 : 

A=AB=[412315][7392]=[4×7+(1)×94×(3)+(1)×22×7+3×92×(3)+3×21×7+5×91×(3)+5×2]=[28912214+276+67+453+10]=[1914410527]

 

 

행렬 곱의 연산법칙 

 

행렬 𝑨,𝑩,𝑪가 각 연산에 적합한 크기의 행렬이라 할 때, 다음과 같은 연산법칙들을 만족한다.

 

(1) 곱의 결합법칙 : 𝑨(𝑩𝑪) = (𝑨𝑩)𝑪

(2) 곱의 분배법칙: 𝑨(𝑩+𝑪) = 𝑨𝑩+𝑨𝑪

(3) 곱의 분배법칙: (𝑨+𝑩 )𝑪 = 𝑨𝑪+𝑩𝑪

 

행렬 곱 연산에는 특이성질이 있는데  

1) 𝑨𝑩 ≠ 𝑩𝑨

2) ∃𝑨 ≠ 𝑶, ∃𝑩 ≠ 𝑶 𝑨𝑩 = 𝑶

 

주어진 행렬:
A=[126],B=[142]

AB를 계산하면:
AB=[126][142]=[19]

BA를 계산하면:
B=[142],A=[126]

따라서,
BA=[142][126]=[12648242412]

 

따라서 𝑨𝑩 ≠ 𝑩𝑨 임을 볼 수 있다. 

 

또한  두 행렬 AB가 영행렬이 아님에도 불구하고 그 곱이 영행렬이 될 수 있다. 

 

A=[0101],B=[1100]

AB를 계산하면:
AB=[0101][1100]=[0000]

A 와 B가 영행렬이 아님에도 곱은 영행렬로 나타날 수 있다. 

 

 

(2) 가우스 소거법

행렬은 일차연립방정식의 풀이에 사용된다. 행렬을 이용한 가우스 소거법을 소개한다.

 

일차연릭방정식 L -> 확대행렬 A -> 행제형 행렬 A' -> 소거 행제형 행렬 -> A''



예를 들어 다음과 같은 일차 연립방정식이 있다고 가정하자.

2x5y+2z=3
y+3z=6
x+3y=4

위 연립방정식을 행렬과 벡터를 이용해 나타내면 다음과 같다.

[252130013][xyz]=[364]

위에서 왼쪽의 3×3 크기의 행렬을 계수행렬이라고 부르고, (x,y,z)를 해(solution), (3,6,4)을 상수행렬(constant matrix)이라고 한다. 계수행렬과 상수 행렬 (3,6,4)을 다음과 같이 묶어서 하나의 행렬로 만들 수 있다.

[252313040136]

이 행렬을 확대행렬이라고 한다. 확대행렬은 계수와 상수가 주어졌을 때 해를 구하는 용도로 사용된다.

일차연립방정식에서 해를 구하기 위해 식을 변형하는 작업을 세 가지로 나눌 수 있는데 이것을 기본행연산이라고 한다.

 

기본행연산(elementary row operation) 

1. 어떤 두 개의 행 위치를 서로 바꾼다(행 교환 연산).
2. 어떤 하나의 행에 0이 아닌 상수를 곱한다( 행 스케일링 연산).
3. 하나의 행에 상수를 곱한 뒤 다른 행에 더한 식으로 대체한다(행 대체 연산). 

 

일차연립방정식에서 해를 구하기 위해 식을 변형하는 첫 번째 작업은 두 식의 위치를 서로 교환하는 것이다. 예를 들어 (1)과 (2)의 위치를 교환하면 다음과 같다. 


(2)x+3y=4(1)2x5y+2z=3(3)y+3z=6

 

 

이처럼 두 행의 위치를 바꾸는 작업을 행렬에서는 행교환 연산이라 한다. 연립방정식에서 식의 순서를 바꾸더라도 해는 변하지 않으므로 행 교환 연산을 수행하더라도 연립방정식의 해는 동일하게 유지된다. 

행 교환 연산을 통해 변경된 행렬은 다음과 같이 표현할 수 있다. 두 행렬 사이에 가 의미하는 것은 서로 다른 두 개의 연립방정식이 동일한 해를 가진다는 의미이다.

(130425230136)(252313040136)

일차연립방정식에서 해를 구하기 위해 식을 변형하는 두 번째 작업은 하나의 식에 0이 아닌 상수를 곱하는 것이다. 예를 들어 식 2에 상수 2를 곱하면 새로운 식 (4)를 구할 수 있다.

2x+6y=8(4)2x5y+2z=3(1)y+3z=6(3)

이처럼 하나의 행에 0이 아닌 스칼라 곱을 하는 작업을 행렬에서는 행 스케일링 연산이라 한다.

(130425230136)(260825230136)

일차연립방정식에서 해를 구하기 위해 식을 변형하는 세 번째 작업은 두 개의 식을 더해 새로운 식을 만드는 것이다. 식 (4)에 상수 1을 곱하여 식 (1)에 더하면 미지수 x가 없어진 새로운 식 (5)를 만들 수 있다.

2x+6y=8(4)y+2z=5(5)y+3z=6(3)

새로운 식을 만들기 위해 단순합이 아니라 하나의 행에 상수를 곱한 뒤에 다른 행에 더해도 된다. 식 (4)에 -1을 곱한 뒤에 식 (3)을 더하면 미지수 y가 없어진 새로운 식 (6)을 만들 수 있다.

2x+6y=8(4)y+2z=5(5)z=1(6)

이처럼 하나의 행에 스칼라 곱을 수행한 결과를 다른 행에 더하는 작업을 행렬에서는 행 대체 연산이라 한다.

(260825230136)(260801250011)

기존의 행렬을 변형해 새로운 확대행렬을 만든 뒤, 해를 구하기 위해서 앞에서 배운 행렬의 기본행연산을 이용하여 확대행렬을 먼저 행제형 행렬로 만들고, 그 다음 소거 행제형 행렬로 변환해야 한다. 이 과정을 가우스 소거법이라 한다.

 

 

행제형 행렬(row echelon matrix) 

다음 세 가지 조건을 만족하는 행렬을 행제형 행렬(행사다리꼴 행렬)이라고 한다. 

1. 영행이 아닌 행은 영행의 위에 있다. 
2. 행렬의 각 행에서 0이 아닌 가장 처음 나타나는 원소를 선도원소 라고 하는데, 모든 선도원소는 1이다.
3. 주어진 행의 선도원소는 그 아래 행의 선도원소보다 왼쪽에 있다. 

 


1) 
(400200023)

첫 번째 행 (400)의 선도원소는 4로서 1이 아니다. 따라서 행제형 행렬이 아니다.

2) 
(120501300001)

모든 선도원소가 1이고 연속된 두 행에서 위에 있는 행의 선도원소가 아래 행의 선도원소보다 왼쪽에 있으므로 행제형 행렬이다.

3) 
(140200130126)

두 번째 행의 선도원소는 세 번째 열에 있는데, 세 번째 행의 선도원소는 두 번째 열에 있어서 행제형 행렬이 아니다.

4) 
(000001000)

영행이 아닌 두 번째 행이 영행인 첫 번째 행보다 아래에 있으므로 행제형 행렬이 아니다.

 

 

 

 

소거행제형 행렬 

위 조건을 만족한 행제형 행렬에 다음의 네 번째 조건도 만족시키면 소거행제형 행렬이라고 한다. 

4. 선도원소가 포함된 열에서 선도원소를 제외한 모든 원소는 0이다. 

 


1)

(320104013)

행제형 행렬이 아니므로 소거행제형 행렬이 아니다.

2)

(100001240001)

세 번째 행의 선도원소가 위치한 네 번째 열의 다른 모든 원소는 0이어야 하는데, (2,4) 원소가 0이 아닌 4이다. 따라서 소거행제형 행렬이 아니다.

3)

(126300180000)

두 번째 행의 선도원소가 위치한 세 번째 열에서 (1,3) 원소가 6으로서 0이 아니므로 소거행제형 행렬이 아니다.

4)

(100001000)

모든 조건을 만족하므로 소거행제형 행렬이다.

 

 

 

 

 

3. 행렬의 종류 

정방행렬 

n×n 행렬을 n차 정방행렬이라고 하며, n을 정방행렬의 차수라고 한다.

- n차 정방행렬은 다음과 같은 형태를 가진다.
  [a11a12a1na21a22a2nan1an2ann]

- 정방행렬의 a11, a22, , ann 원소를 대각원소라고 한다.
- 대각원소를 포함하는 대각선을 주대각선이라고 한다.

 

 

대각행렬 


n차 정방행렬에서 대각원소 이외의 모든 원소가 0인 행렬을 대각행렬이라 한다. 즉, ij이면 aij=0이다. 대각행렬은 다음과 같은 형태로 나타낼 수 있다.

(a11000a22000ann)

위와 같이 대각행렬은 대각선 원소들 a11,a22,,ann만이 0이 아닌 값을 가지며, 나머지 모든 원소는 0인 형태를 가진다.

 

 

 

 

 

 

단위행렬


n차 정방행렬에서 대각원소가 모두 1이고 나머지 원소는 모두 0인 행렬을 단위행렬이라 한다. (이를 In으로 표기.)

 

즉, i=j이면 aij=1이고, ij이면 aij=0이다.

예를 들어,

I2=(1001)

I3=(100010001)

I4=(1000010000100001)

일반적으로,

In=(100010001)


 

 

 

대칭행렬


𝑛차 정방행렬에서 aij=aji인 행렬을 대칭행렬이라 한다.

(a11a12a1na12a22a2na1na2nann)

대칭행렬은 행렬의 주대각선을 기준으로 대칭인 원소들로 이루어진다. 

 

 

 

역대칭행렬



n차 정방행렬에서 aij=aji이고 대각원소가 모두 0인 행렬을 역대칭행렬(교대행렬)이라 한다. 즉, i=j이면 aij=0이고, ij이면 aij=aji이다.

예를 들어, 다음과 같은 형태의 행렬이 역대칭행렬이다:

(0a12a1na120a2na1na2n0)

 

 

📌  예시: 3차 정방행렬에서 a12=3, a13=2, a23=1의 원소를 가지는 역대칭행렬이 존재할 때 행렬의 나머지 원소를 구하시오.

역대칭행렬(antisymmetric matrix)은 행렬의 전치행렬이 그 행렬의 음수와 같다는 특성을 갖고 있다. 즉, AT=A를 만족한다. 따라서 주어진 원소들을 토대로 나머지 원소를 구하면 다음과 같은 행렬을 얻을 수 있다.

A=(032301210)

 

 

 

 

 

삼각행렬

 

n차 정방행렬에서

1. 상삼각행렬 (Upper Triangular Matrix): 주대각선 아래에 있는 모든 원소들이 0일 경우.
   - 조건: i>j일 때, aij=0
   - 예시:
     A=(a11a12a1n0a22a2n00ann)

2. 하삼각행렬 (Lower Triangular Matrix): 주대각선 위에 있는 모든 원소들이 0일 경우.
   - 조건: i<j일 때, aij=0
   - 예시:
     B=(a1100a21a220an1an2ann)

3. 삼각행렬 (Triangular Matrix): 상삼각행렬 또는 하삼각행렬을 의미.

 

 

 

 

전치행렬

 

 

행렬 A가 주어졌을 때, A의 행과 열을 서로 교환한 행렬을 A의 전치행렬이라고 한다. 이를 AT로 표기하며, AT의 크기는 원래 행렬 A의 행과 열의 크기가 바뀐 형태가 된다.

즉, m×n 행렬 A의 전치행렬 ATn×m 크기를 갖는다.

행렬 A와 그 전치행렬 AT는 다음과 같이 나타낼 수 있다.

A=(a11a12a13a1na21a22a23a2nam1am2am3amn)

전치행렬 AT는 다음과 같다.

AT=(a11a21am1a12a22am2a13a23am3a1na2namn)

이와 같이, 행렬의 전치는 행과 열을 교환하는 연산으로, 원래 행렬과 전치행렬의 행과 열의 크기가 서로 바뀌게 된다.

 

 

📌 예시: 다음 행렬들의 전치행렬을 구하시오.

 

A=(100031000010)

B=(1000300100)

행렬 A의 전치행렬은 AT로 나타내며, 이는 행렬 A의 행과 열을 바꾼 형태이다.

AT=(130010001000)

행렬 B의 전치행렬은 BT로 나타내며, 이는 행렬 B의 행과 열을 바꾼 형태이다.

BT=(1000010030)


 

 

역행렬 

n 차 정방행렬 A, B가 주어졌을 때, 

AB=BA=In

인 행렬 B가 존재하는 경우 행렬 A를 역가능(invertible)하다고 한다. 이때, 행렬 B를 행렬 A의 역행렬이라고 하고 A1로 표기한다.

 

 

 

 

 

4. 부울행렬

 

행렬의 모든 원소가 부울값(0 or 1)으로만 구성된 행렬을 부울행렬이라 한다.

 

 

부울행렬의 합, 교차, 부울곱 

크기가 m×n인 두 행렬 A=[aij]B=[bij]가 부울행렬일 때,

1. A와 B의 합(join)은
   (i,j) 원소가 aijbij이고 크기가 m×n인 부울행렬 C이며,
   C=AB로 나타낸다.

2. A와 B의 교차(meet)는
   (i,j) 원소가 aijbij이고 크기가 m×n인 부울행렬 C이며,
   C=AB로 나타낸다.

3. A와 B의 부울곱(boolean product)은
   (i,j) 원소가 다음과 같이 정의되는 m×l 크기의 부울행렬 C이며,
   C=AB로 나타낸다.
   cij=(ai1b1j)(ai2b2j)(ainbnj)

 

 

 

📌 예시: 다음 연산을 수행하고 결과를 구하시오. 


1) OR (∨) 연산

OR 연산은 각 대응 원소가 하나라도 1이면 결과가 1이 되는 연산이다.

(000000111)(100110100)

연산 결과는 다음과 같다.

(010000010100111010)=(100110111)

2) AND (∧) 연산

AND 연산은 각 대응 원소가 모두 1이면 결과가 1이 되는 연산이다.

(000000111)(100110100)

연산 결과는 다음과 같다.

(010000010100111010)=(000000100)

3) 부울곱 연산 (⨀) 연산


(000000111)(100110100)

연산 결과는 다음과 같다. 

C11=(01)(01)(01)=0
C12=(00)(01)(00)=0
C13=(00)(00)(00)=0
C21=(01)(01)(01)=0
C22=(00)(01)(00)=0
C23=(00)(00)(00)=0
C31=(11)(11)(11)=1
C32=(10)(11)(10)=1
C33=(10)(10)(10)=0

따라서, 부울곱 연산의 결과는

C=(000000110)



 

 


 

참고자료: 이산수학 | 손진곤 (지은이) 한국방송통신대학교출판문화원 

 

반응형