선형대수의 기초

CopyLeft by 밝히리

Introduction to Linear algebra

머리말

선형대수는 간단하게 말해서 행렬(matrix)과 벡터(vector)를 배우는 수학의 한 분야라고 말할 수 있다. 나는 고등학교 다닐 때 행렬을 무지 싫어했다. 왜냐하면 나는 계산을 못했기 때문이다. 실수(real number)의 덧셈, 뺄셈, 곱셈, 나눗셈을 잘 못했고 실수(error)를 참 많이 했다. 나 같은 사람에게 행렬의 곱셈, 역행렬, 행렬식을 계산하라고 하면 누가 좋아하겠는가? 대학교 올라오니 시험 볼 때 계산기를 사용할 수 있어서 얼마나 편했는지 모른다. 대학교 3학년 때까지도 행렬을 싫어했다. 그런데 수학과에서 선형대수를 수강하면서 고유값, 고유벡터, 닮음변환 등을 배웠을 때 ‘이것이 선형대수의 핵심이구나.’를 깨달았다. 또한 양자역학(Quantum Mechanics - 원자정도의 작은 세상을 알아야할 때 필요한 물리)을 공부하면서 선형대수가 정말 꼭 필요하다는 것을 깨달았고 정말 멋진 학문이라는 생각을 차츰 하게 되었다. 내가 선형대수를 배우기 전에는 ‘양자역학’하면 슈뢰딩거 방정식(Schrödinger’s equation)을 떠올리며 미분방정식을 잘 풀어야 된다는 생각을 했는데, 이제는 ‘양자역학’하면 행렬, 고유값, 고유벡터가 떠오른다.

선형대수는 어떤 함수(function 뿐만 아니라 mapping, operator, transformation 등을 포함해서)가 선형(linear)함수일 때 그 함수의 성질을 배우는 것이다. 선형은 다음 두 식으로 정의한다.

[eqn: f(kp) = kf(p)],       [eqn: f(p + q) = f(p) + f(q)]

우리가 알고 있는 대표적인 선형 함수는 [eqn: y=ax] 같은 정비례함수가 있고 미분, 적분 등이 있다. 또한 고등학교에서 배우지는 않지만 회전변환 확대･축소변환 역시 선형 함수이다. 비선형 함수는 이차함수, 삼각함수, 로그함수, 지수함수 등이 있다. 선형대수 이론에 의하면 임의의 선형 함수는 행렬로 표현할 수 있으며, 반대로 행렬은 어떤 선형 함수에 대응한다. 그래서 행렬에 대한 성질만 익힌다면 모든 선형함수의 공통 성질을 알게 되는 것이다. 일반적으로 비선형함수는 계산이 매우 복잡한데 필요에 따라 선형으로 근사시킬 수도 있다. 이러한 경우는 비선형함수에도 선형대수를 적용할 수 있다.

대학교에 가면 수학과에서 당연히 선형대수를 배운다. 고등학교에서 이과를 거쳐서 자연대, 공대에 가려는 사람은 선형대수를 꼭 익혀두기 바란다. 얼마 전에는 컴퓨터 프로그래머에게도 선형대수가 필요하다는 것을 알게 되었다. 심지어 사회과학을 하는 사람에게도 선형대수가 필요하다. 내가 자신 있게 말 할 수 있는 것은 미적분과 선형대수는 수학과보다 자연대, 공대에서 더 많이 배우며 더 많이 다룬다. 수학만 전공한 사람은 내가 말할 수 없는 부분을 말 해줄 수 있고, 반대로 나처럼 물리와 수학을 둘 다 전공한 사람은 수학만 전공한 사람이 말할 수 없는 부분을 말 해 줄 수 있다. 내가 미적분학의 기초에 이어서 선형대수의 기초를 적는 이유가 이것이다.

이 글은 고등학교 때 행렬을 처음 배우는 사람을 대상으로 적었다. 그리고 대학생 중에 ‘도대체 고유값, 고유벡터가 모야?’라는 의문이 풀리지 않는 사람을 위해서도 적었다. 물론 대학교 과정도 있기 때문에 고등학생이 이해하기 어려운 부분도 있지만 고등학생은 그 부분은 건너뛰면 될 것이다. 간단히 말하면 고등학생과 대학생 모두에게 필요한 부분을 적었다. 이 글이 선형대수를 공부하는 사람의 가려운 곳을 긁어주었으면 좋겠다. 이 글 역시 선형대수를 배우고 싶은 사람이라면 어느 누가 보아도 무방하다. 하지만 상업적인 목적의 사용이나 임의로 편집해서 배포하는 것은 반드시 금해주길 바란다.

- CopyLeft by 밝히리 -

벡터의 기초(Introduction to Vector)

수학I에서 행렬을 배우고 수학II에서는 벡터를 배운다. 보통 문과학생들은 수학II 과정인 벡터는 배우지 않고 행렬만을 배운다. 만약 벡터를 배운 다음에 행렬을 배운다면 행렬을 이해하는데 조금은 더 도움이 될 것이다. 그래서 나는 행렬을 시작하기에 앞서서 벡터의 성질 및 기본 연산에 대해서 말할 것이다. 벡터의 고급 과정(수학II 부분)은 행렬의 뒤에 다시 적을 것이다. 이 부분의 내용은 그렇게 어렵지 않을 것이다. 문과생들도 이 부분을 반드시 읽어보길 권한다.

벡터 : 수의 순서쌍

보통 교과서에서는 벡터(vector)를 ‘크기와 방향을 가진 양’으로 정의하고, 크기만 갖고 방향은 없는 양을 스칼라(scalar)라고 정의하는데, 나는 단순히 ‘수의 순서쌍’이라고 말하고 싶다. 물론 나의 이 정의는 올바른 정의는 아니지만 벡터를 이해하는 데는 더 쉬울 것이라고 생각한다.

벡터는 순서를 생각해야하는 반면에 집합은 순서를 생각하지 않는다. 집합 [eqn: A = LEFT { 1,~a,~3 RIGHT }]와 집합 [eqn: B = LEFT { a,~3,~1 RIGHT }]를 비교해 보면 순서에 상관없이 들어 있는 원소는 모두 같으므로 두 집합 [eqn: A,~B]는 같은 집합이다. 반면에 벡터는 순서쌍이기 때문에 순서가 매우 중요하다. 집합을 문자로 표현할 때는 [eqn: A,~B,~X] 등과 같이 대문자로 표현하고 벡터를 문자로 표현할 때는 [eqn: vec a ,~ vec b ,~ vec x]와 같이 문자 위에 화살표를 그려서 표기한다. 순서쌍을 나타내기 위해서는 [eqn: vec a = ( 1,~a,~3 )]와 같이 소괄호를 이용한다. [eqn: vec a]는 [eqn: vec b = ( a,~3,~1 )]와는 다른 벡터이다. 순서가 다르기 때문이다. [eqn: ( 1,~a,~3 )]처럼 세 개의 수로 이루어진 순서쌍을 3차원 벡터라고 하고 [eqn: ( 1,~-2 )]처럼 두 개의 수로 이루어진 순서쌍을 2차원 벡터라고 한다. [eqn: (2)]처럼 한 개의 수로 이루어진 순서쌍을 1차원 벡터라고 말하기도 하지만 1차원 벡터는 스칼라(실수)를 의미한다.

순서쌍에 보다 익숙해져 보자. 가게에서 복숭아, 파인애플, 오렌지를 판다. 어느 날 복숭아가 [eqn: 3]개, 파인애플이 [eqn: 4]개, 오렌지가 [eqn: 2]개가 팔렸다면 보통 사람은 다음과 같이 장부에 적을 것이다.

오늘의 판매량 : 복숭아 [eqn: 3]개, 파인애플 [eqn: 4]개, 오렌지 [eqn: 2]개

이렇게 매일 매일 적다보면 ‘복숭아, 파인애플, 오렌지’이라는 글을 적기가 불편할 것이다. 더구나 월말 결산이라도 하려면 똑같은 과일 이름을 서른번 정도 적어야 할 것이다. 뭔가 좋은 방법이 없을까? 그 중에 하나는 나름 데로 순서를 정하는 것이다.

오늘의 판매량 : [eqn: (3,~4,~2)]

라고 적어놓고 처음은 복숭아, 둘째는 파인애플, 셋째는 오렌지라고 약속을 한다면 훨씬 일이 쉬워질 것이다. 여기서 중요한 것은 순서이다. [eqn: (3,~4,~2)]와 [eqn: (2,~3,~4)]는 전혀 다른 것이다.

다른 예를 생각해 보면 성적표를 말할 수도 있다. 철수가 시험을 보았는데 중간고사 [eqn: 80]점, 기말고사 [eqn: 90]점, 수행평가 [eqn: 85]점을 맞았다면 보통 사람은 다음과 같이 적을 것이다.

철수 성적 : 중간고사 [eqn: 80]점, 기말고사 [eqn: 90]점, 수행평가 [eqn: 85]점

이런 식으로 반 학생들의 성적을 모두 적기 위해서는 똑 같은 과목 이름을 여러 번 적어야 할 것이다. 이런 때 쉽게 할 수 있는 방법 중 하나가 순서를 정하는 것이다.

철수 = [eqn: (80,~90,~85)]

민수 = [eqn: (75,~80,~90)]

이런 식으로 적을 때 처음 수가 무엇이고 둘째 수가 무엇인지를 안다면 일이 줄어든다. 이렇게 순서를 정해서 수를 나열한 순서쌍을 벡터라고 하며 각각의 수를 벡터의 성분이라고 한다. 알고 보면 벡터는 쉬운 것이다. 보통 고등학교 과정은 벡터의 성분이 실수인 경우만 다루지만 대학교 고급과정에서는 [eqn: (1+i,~ -i,~3)]과 같이 복소수인 경우도 다룬다.

벡터의 상등

앞의 글에 이어서 설명하겠다. 어제의 판매량이 [eqn: (3,~1,~4)]이고 오늘의 판매량이 [eqn: (3,~1,~5)]라면 어제와 오늘의 판매량은 같을까? 아니라고 답할 것이다. 그러면 오늘의 판매량이 [eqn: (3,~4,~1)]이라면 같을까? 역시 아니라고 답할 것이다. [eqn: (3,~1,~4)] 경우에만 같다고 말할 것이다. 두 벡터가 서로 같다는 것은 각각의 성분이 같다는 것이다. 당연히 순서도 같아야 한고 차원도 같아야 한다.

[eqn: vec a = (a_1 ,~a_2 ,~a_3 )], [eqn: vec b = (b_1 ,~b_2 ,~b_3 )] 라고 할 때

[eqn: vec a = vec b ~~Lrarrow ~~ (a_1 ,~a_2 ,~a_3 ) = (b_1 ,~b_2 ,~b_3 )~~Lrarrow ~~ cases{ a_1 = b_1 ~~and# a_2 = b_2 ~~and# a_3 = b_3 ~~ }]

위와 같은 [eqn: 3]차원 벡터의 경우에는 두 벡터가 같다는 것은 세 성분이 모두 같아야 하므로 성분으로 이루어진 세 개의 등식을 모두 만족시켜야 한다. 이 세 등식 중에 하나라도 만족하지 않으면 두 벡터는 같지 않다.

벡터의 덧셈

어제의 판매량이 [eqn: (3,~4,~2)] 이고, 오늘의 판매량이 [eqn: (6,~ 7,~ 5)] 이었다면 이틀 동안의 판매량은 얼마일까? 스스로 계산을 해 본 다음 글을 읽어가길 바란다. 이 질문에 아마 [eqn: (9,~11,~7)] 이라고 대답했을 것이다. 나와 같은 대답을 했다면 당신은 머리속으로

[eqn: (3,~4,~2) + (6,~7,~5) = (3+6,~4+7,~2+5) = (9,~11,~7)]

와 같은 계산을 했다는 뜻이다. 이것이 바로 벡터의 덧셈이며 벡터의 뺄셈도 덧셈과 비슷하게 한다. 벡터의 덧셈은 차원이 같은 벡터끼리만 가능하다. [eqn: 2]차원 벡터와 [eqn: 3]차원 벡터는 덧셈을 할 수 없다. 나는 [eqn: 3]차원 벡터의 덧셈을 설명할 것이다. [eqn: 2]차원이나 [eqn: 4]차원 등의 벡터 덧셈 방식 역시 같다. 뒤에 나오게 될 여러 가지 연산도 [eqn: 3]차원을 기준으로 설명할 것이다. 당신이 [eqn: n]차원으로 일반화 하는 것은 어렵지 않을 것이다. 기억해 둘 것은 우리가 기존에 알고 있는 덧셈, 뺄셈과 계산 방법이 비슷하지만 다르다는 것이다. 같은 기호를 사용하고 같은 단어를 사용하지만 수(number, scalar)의 덧셈과 벡터의 덧셈은 다르다는 것을 기억하자.

[eqn: vec a = (a_1 ,~a_2 ,~a_3 )], [eqn: vec b = (b_1 ,~b_2 ,~b_3 )] 라고 할 때

[eqn: vec a + vec b = (a_1 ,~a_2 ,~a_3 ) + (b_1 ,~b_2 ,~b_3 ) = (a_1 +b_1 ,~a_2 + b_2 ,~a_3 + b_3 )]

[eqn: vec a - vec b = (a_1 ,~a_2 ,~a_3 ) - (b_1 ,~b_2 ,~b_3 ) = (a_1 - b_1 ,~a_2 - b_2 ,~a_3 - b_3 )] 이다.

다음 벡터의 덧셈과 뺄셈을 계산하여라.

[eqn: (1,~0,~4) + (3,~2,~5) = (1+3,~0+2,~4+5) = (4,~2,~9)]

[eqn: (3,~2,~4) - (1,~2,~5) = (3-1,~2-2,~4-5) = (2,~0,~-1)]

[eqn: (-2,~3,~-4) + (-1,~2,~5) = (-2+(-1) ,~3+2,~-4+5) = (-3,~5,~1)]

[eqn: (2,~-5,~-1) - (-1,~2,~-4) = (2-(-1),~-5-2,~-1-(-4)) = (3,~-7,~3)]

[eqn: (4,~-2) + (-3,~2) = (4+(-3),~-2+2) = (1,~0)]

보통 영벡터라고 부르는 [eqn: vec0 = (0,~0,~0)]은 벡터의 덧셈에 대한 항등원이다. 어떤 수에 [eqn: 0]을 더하면 자기 자신이 되는 것처럼 어떤 벡터에 [eqn: vec0]을 더하면 자기 자신이 된다. 당연한 이야기지만 [eqn: 2]차원 영벡터는 [eqn: vec0 = (0,~0)] 이라고 적는다.

벡터 [eqn: vec a ,~ vec b ,~ vec c]가 덧셈 가능할 때 벡터의 덧셈에는 다음과 같은 성질들이 있다.

[eqn: vec a + vec b = vec b + vec a]	교환법칙

[eqn: left ( vec a + vec b right ) + vec c = vec a + left ( vec b + vec c right )]	결합법칙

[eqn: vec a + vec 0 = vec 0 + vec a = vec a]	덧셈의 항등원 [eqn: vec 0](영벡터)이 존재

[eqn: veca + left (-vec a right ) = left (-vec a right ) + vec a = vec 0]	[eqn: vec a]의 덧셈에 대한 역원 [eqn: - vec a]이 존재

너무 당연한 이야기를 지루하게 적는 것 같지만 꼭 기억해 두자. 기초에 충실할 때만이 당연한 것을 물을 때 당황하지 않는다. 당연한 질문에 대답을 제대로 못한다면 기초가 부족한 것이다.

벡터의 덧셈은 교환법칙이 성립함을 보이시오.

이런류의 증명문제는 많이 접해보지 않은 사람에게는 무척 어려운 질문이다. 풀이는 의외로 간단하다. ‘벡터의 덧셈의 정의’에 충실하면 된다. 고등학교에서는 보통 [eqn: 3]차원 벡터까지 다루지만 대학교 수학에서는 무한차원 벡터도 다룬다. 나는 [eqn: 3]차원 벡터에 한해서 증명할 것이지만 그것은 [eqn: n]차원 벡터까지 일반화 할 수 있음을 쉽게 알 수 있을 것이다.

[eqn: vec a + vec b &= (a_1 ,~a_2 ,~a_3 ) + (b_1 ,~b_2 ,~b_3 )# &= (a_1 + b_1 ,~a_2 + b_2 ,~a_3 + b_3 )# *&= (b_1 + a_1 ,~b_2 + a_2 ,~b_3 + a_3 )# &= (b_1 ,~b_2 ,~b_3 ) + (a_1 ,~a_2 ,~a_3 ) = vec b + vec a]

이 증명을 이해하지 못하는 사람은 아직 벡터의 덧셈에 익숙하지 않다는 뜻이다. 잘 모르면 문자 대신 수를 대입하여 느낌을 가진 후 이것을 다시 보도록 하자. 참고로 *표한 등식은 실수의 덧셈은 교환법칙이 성립함을 이용했다.

벡터의 덧셈에 대한 다른 성질들을 증명하시오.

위 증명을 참고하여 스스로 해보자.

벡터의 실수배

어제의 판매량이 [eqn: (3,~4,~2)]이고 오늘은 어제의 두 배를 팔았을 때 오늘의 판매량은 얼마일까? 이것 역시 어렵지 않으므로 스스로 생각해 본 다음 글을 읽어가길 바란다. 이 질문에 [eqn: (6,~8,~4)]라고 대답했다면 당신은 머리속으로 역시

[eqn: 2 times (3,~4,~2) = (2 times 3,~2 times 4,~2 times2) = (6,~8,~4)]

와 같은 계산을 했다는 뜻이다. 벡터의 실수배는 아래 식으로 정의한다.

[eqn: k `vec a = (k a_1 ,~k a_2 ,~k a_3 )]

앞에서 배운 덧셈과 마찬가지로 보통 ‘곱하기’라는 똑같은 단어를 사용하지만 우리가 알고 있는 ‘수×수’와 방금 말한 ‘수×벡터’는 비슷하지만 다른 연산이라는 것을 기억해 두자. 수와 벡터의 곱은 [eqn: k veca]라는 표현을 많이 사용하고 [eqn: vec a k], [eqn: k cdot vec a], [eqn: k times veca]와 같은 표현은 거의 사용하지 않는다.

다음 벡터와 실수와의 곱셈을 계산하시오.

[eqn: 3(2,~-1,~4) = (3 times 2,~3 times(-1),~ 3times4) = (6,~-3,~12)]

[eqn: -(1,~-4 ,~0) =~ -1(1,~-4 ,~0) = ((-1)times1 ,~ (-1)times(-4) ,~(-1) times 0 ) = (-1 ,~4 ,~ 0)]

[eqn: 0(3,~1 ,~-2) = (0times3 ,~ 0 times 1 ,~0 times (-2) ) = (0 ,~0 ,~ 0)]

[eqn: 4(0,~0 ,~0) = (4 times0 ,~ 4 times 0 ,~4 times 0 ) = (0 ,~0 ,~ 0)]

[eqn: -2(1,~-3 ) = ((-2) times 1 ,~ (-2) times (-3)) = (-2 ,~6)]

벡터 [eqn: vec a ,~ vec b]가 덧셈 가능할 때 벡터의 실수배에는 다음과 같은 성질들이 있다.

[eqn: 0 vec a = vec 0]	[eqn: 0]과 임의의 벡터와의 곱은 영벡터

[eqn: k vec 0 = vec 0]	임의의 실수와 영벡터와의 곱은 영벡터

[eqn: 1 vec a = vec a]	[eqn: 1]은 벡터의 실수배의 항등원

[eqn: (-1) vec a = - vec a]	[eqn: -1] 과 주어진 벡터와의 곱은 그 벡터의 역벡터(덧셈의 역원)

[eqn: k left ( vec a + vec b right) = k vec a + k vec b]	벡터의 실수배와 벡터의 덧셈에 대한 분배법칙

[eqn: (k + l ) vec a = k vec a + l vec a]	실수의 합과 벡터의 실수배에 대한 분배법칙

[eqn: (kl) vec a = k left ( l vec a right)]	실수의 곱과 벡터의 실수배에 대한 결합법칙

[eqn: k left ( vec a + vec b right) = k vec a + k vec b] 을 증명하시오.

이것 역시 3차원 벡터에 한해서 증명하겠다.

[eqn: k left( vec a + vec b right) &= k (a_1 + b_1 ,~a_2 + b_2 ,~a_3 + b_3 )# &= (k(a_1 + b_1 ) ,~k(a_2 + b_2 ) ,~k(a_3 + b_3 ))# *&= (ka_1 + kb_1 ,~ka_2 + kb_2 ,~ka_3 + kb_3 )# **&= (ka_1 ,~ka_2 ,~ka_3 ) + (kb_1 ,~kb_2 ,~kb_3 )# &= k vec a + k vec b]

이런 것이 처음에는 굉장히 어렵고 복잡해 보이지만 천천히 식을 잘 보고 각 식의 의미와 어떻게 변해가는 지를 살펴본다면 그렇게 어렵지는 않을 것이다. 여유를 가지고 천천히 살펴보자. * 표한 등식은 실수의 곱셈과 덧셈에 대한 분배법칙을 이용했으며 ** 표한 등식은 벡터의 덧셈의 정의를 이용했다.

벡터의 실수배에 대한 다른 성질들을 증명하시오.

이것 역시 위 결과를 참고하여 스스로 해보자.

벡터의 내적

(실수)×(실수)와 (실수)×(벡터)를 배웠으니 이제는 (벡터)×(벡터)를 배울 차례이다. 역시 과일 문제에서 시작하자. 복숭아, 파인애플, 오렌지의 오늘의 판매량이 [eqn: (2,~ 4,~3)]이라고 하자. 그리고 각각의 가격이 [eqn: (50,~80,~60)] 이라고 하자. 이 벡터의 의미는 쉽게 알 수 있을 것이다. 굳이 설명하자면 복숭아 가격은 [eqn: 50]원, 파인애플의 가격은 [eqn: 80]원, 오렌지의 가격은 [eqn: 60]원이라는 뜻이다. 이렇게 말로 쓰는 것 보다 벡터를 이용한 표현이 훨씬 간편함을 다시 한 번 느낄 수 있을 것이다. 그러면 이 상황에서 오늘의 매출은 얼마일까? 잠깐 멈추고 스스로 계산해 보자. 어떻게 계산해야 할지 느낌이 오는가? 이것 역시 그렇게 어렵게 느끼지는 않을 것이다. 오늘의 매출이 [eqn: 600]원으로 나왔다면 당신은 머리 속으로 다음과 같은 계산을 했을 것이다.

[eqn: (2,~ 4,~3) cdot (50,~ 80,~ 60) = (2 times 50) + (4 times 80) + (3 times 60 ) = 100 + 320 + 180 = 600]

한 가지 예를 더 들어보자. 철수의 1학기 중간고사, 기말고사, 수행평가의 성적은 [eqn: (80,~90,~85)]이다. 또한 각각의 성적의 반영 비율이 [eqn: (40%,~40%,~20%)] 일 때, 철수의 [eqn: 1]학기 성적은 몇 점인가? 이것 역시 스스로 계산해 본 다음 읽어보자. 철수의 성직이 [eqn: 82]점으로 나왔다면 당신은 속으로 이렇게 계산을 했을 것이다.

[eqn: (80,~90,~70) cdot (0.4,~0.4,~0.2) = (80 times 0.4) + (90 times 0.4) + (70 times 0.2) = 32 + 36 + 14 = 82]

자신은 스스로 인식하지 못했겠지만 대부분의 사람들은 벡터의 내적 연산법을 이미 알고 있다. 벡터의 내적은 이렇게 우리에게 익숙한 연산이고 전혀 새로운 것이 아니다.

벡터의 내적은 아래와 같은 식으로 정의한다.

[eqn: vec a cdot vec b = (a_1 ,~a_2 ,~a_3 ) cdot (b_1 ,~b_2 ,~b_3 ) = a_1 b_1 + a_2 b_2 + a_3 b_3]

벡터의 내적의 결과물은 벡터가 아닌 스칼라인 것을 기억하자. 그렇기 때문에 벡터의 내적(Inner product)은 다른 말로 스칼라 곱(scalar product)이라도 한다. 또한 가운데에 점을 찍기 때문에 dot product 라고도 한다. 벡터의 내적은 [eqn: vec a cdot vec b] 혹은 [eqn: left( vec a , ~vec b right )]로 표현하지만, [eqn: vec a times vec b]나 [eqn: vec a` vec b]라고 절대로 적지 않는다. 전자를 가리켜 벡터의 외적(outer product) 혹은 × 기호를 사용하기 때문에 cross product 라고 한고, 후자를 가리켜 벡터의 다이아드 곱(diadic product)이라 한다. 벡터의 내적을 표현할 때는 반드시 가운데에 점을 찍도록 하자.

다음 벡터의 내적을 계산하시오.

[eqn: (1,~ 3,~-2) cdot (-2,~ 3,~ 1) = [1 times( -2)] + (3 times 3) + [(-2) times 1 ] = -2 + 9 + (-2) = 5]

[eqn: (2,~ 1,~-5) cdot (1,~ 3,~ 1) = (2 times 1) + (1 times 3) + [(-5) times 1 ] = 2 + 3 + (-5) = 0]

[eqn: (1,~ -1,~-3) cdot (1,~ -1,~ -3) = 1^2 + (-1)^2 + (-3)^2 = 1 + 1 + 9 = 11]

[eqn: (2,~ 1) cdot (-1,~ 2) = [2 times (-1)] + (1 times 2) = -2 + 2 = 0]

[eqn: (3,~ -1) cdot (-2,~ -5) = [3 times (-2)] + [(-1 times (-5)] = -6 + 5 = -1]

벡터의 크기는 [eqn: | vec a |] 혹은 그냥 [eqn: a]라고 표현하며, [eqn: | vec a | ^2 = vec a cdot vec a] 혹은 [eqn: | vec a | = sqrt { vec a cdot {vec a}^` }]로 정의한다. 또한 영벡터가 아닌 두 벡터 [eqn: vec a ,~ vec b]의 내적이 [eqn: 0]이라면 두 벡터는 서로 직교(orthogonal)한다고 말하고 [eqn: vec a BOT vec b]라고 표현한다. 왜 직교라는 말을 쓰는지는 뒤에 배우게 될 것이다. 위의 example에서 내적의 결과가 [eqn: 0]이 된 경우를 생각해 보면 짐작할 수 있을 것이다. 내적에는 다음과 같은 성질이 있다.

[eqn: vec a cdot vec a = | vec a | ^2]	자기 자신과의 내적은 그 벡터의 크기의 제곱과 같다.

[eqn: vec a cdot vec a >=0]	자기 자신과의 내적은 언제나 [eqn: 0] 또는 양의 실수

[eqn: vec a cdot vec a =0 ~~ Lrarrow ~~vec a = vec 0]	자기 자신과의 내적이 [eqn: 0] 이면, 그 벡터는 [eqn: vec 0]

[eqn: vec a cdot vec b = vec b cdot vec a]	벡터의 내적의 교환법칙

[eqn: vec a cdot left ( vec b + vec c right ) = vec a cdot vec b + vec a cdot vec c]	벡터의 내적과 벡터의 덧셈에 대한 분배법칙

[eqn: left ( k vec a right ) cdot vec b = k left ( vec a cdot vec b right)]	벡터의 실수배와 내적에 대한 결합법칙

[eqn: vec a cdot vec b =0 ~~ Lrarrow ~~vec a bot vec b`~ or | vec a | | vec b | = 0]	두 벡터의 내적이 [eqn: 0] 이면 직교하거나 [eqn: | vec a | | vec b | = 0] 이다.

[eqn: vec a cdot vec b = | vec a | | vec b | cos theta]	내적의 또 다른 정의로 뒤에서 자세히 설명한다.

[eqn: vec a cdot vec b = vec b cdot vec a] 를 보이시오.

이것 역시 3차원 벡터의 경우를 보이겠다. [eqn: n]차원 벡터로 일반화 하는 것은 쉬운 일이다.

[eqn: vec a cdot vec b &= (a_1 ,~a_2 ,~a_3 ) cdot (b_1 ,~b_2 ,~b_3 )# &= a_1 b_1 + a_2 b_2 + a_3 b_3 # *&= b_1 a_1 + b_2 a_2 + b_3 a_3 # &= (b_1 ,~b_2 ,~b_3 ) cdot (a_1 ,~a_2 ,~a_3 ) = vec b cdot vec a]

* 표한 등식은 실수의 곱셈에 대한 교환법칙을 이용했다. [eqn: n]차원 벡터의 내적은 다음과 같이 [eqn: sum]를 이용하여 표현할 수도 있다.

[eqn: vec a cdot vec b = sum _i=1 ^n a_i b_i = sum _i a_i b_i = sum a_i b_i = a_i b_i]

수학자 특유의 귀차니즘(?) 때문인지 고학년으로 갈수록 오른쪽에 있는 간단한 표기법을 쓴다.

벡터의 내적에 대한 다른 성질들을 증명하시오.

맨 마지막 성질을 제외한 나머지는 스스로 할 수 있을 것이다. 역시 스스로 해보자.

지금까지 벡터의 기본 연산인 벡터의 합, 벡터의 실수배, 벡터의 내적을 배웠다. 이제 벡터와 수학의 다른 영역과의 관계를 설명할 차례이다.

벡터와 좌표

이것에 관해서는 뒤에서 더 자세히 다룰 것이다. 오른쪽 그림을 참고하며 읽어 보자. 벡터의 표현법과 좌표의 표현법이 같다는 것은 이미 눈치를 채고 있을 것이다. 다시 말하면 [eqn: (3,~1)]은 [eqn: 2]차원 벡터를 뜻하기도 하지만, 좌표평면위의 한 점 [eqn: rm A (3,~ 1)]을 뜻한다. 또한 [eqn: (1,~4,~3)]은 [eqn: 3]차원 벡터를 뜻하기도 하지만, 공간좌표에서의 한 점 [eqn: rm B(1,~ 4,~ 3)]을 뜻하기도 한다. 벡터 [eqn: (2,~3)]는 좌표평면의 원점 [eqn: rm O(0,~ 0)]에서 시작하여 점 [eqn: rm P(2,~3)]로 끝나는 화살표로 그릴 수 있다. [eqn: x]축을 ‘복숭아 축’, [eqn: y]축을 ‘파인애플 축’으로 잡는다면 [eqn: {rm P }(2,~3)]는 복숭아 [eqn: 2]개, 파인애플 [eqn: 3]개를 뜻한다. 또한 복소평면에서는 복소수를 좌표평면위에 나타내기 위해서 [eqn: x]축을 실수축, [eqn: y]축을 허수축으로 잡는데, [eqn: (-2,~ 3)]은 복소수 [eqn: z = -2 + 3i]를 뜻한다. 또한 두 벡터 [eqn: rm vec OP `=(2,~3)]와 [eqn: rm vec OQ `=(3,~ -2)]에 대하여, [eqn: rm vec OP cdot vec OQ = 0] 이고 [eqn: rm vec OP bot vec OQ] 라는 것도 알 수 있을 것이다. 내적이 [eqn: 0]이면 왜 직교한다고 하는지 어느 정도 느낌이 올 것이다.

[eqn: rm O]

[eqn: x]

[eqn: y]

● [eqn: rm`A]

● [eqn: rm` P]

● [eqn: z]

● [eqn: rm` Q]

벡터와 복소수

이제는 벡터와 복소수 사이의 관계를 말해보자. 복소수의 덧셈, 뺄셈, 실수배는 [eqn: 2]차원 벡터의 그것과 같다. 이번에도 예를 들어보자.

[eqn: z_1 = 2+3i,~z_2 = 4+i]라 하고 이들을 계산해 보면

[eqn: z_1 + z_2 = (2 + 3i) + (4 + i) = (2+4)+(3+1)i = 6 + 4i]

[eqn: 4z_1 = 4(2+3i) = (4 times 2) + (4 times 3)i = 8 + 12i]

를 얻고 아래의 대응관계를 참고하면 위의 두 연산은 벡터의 덧셈, 벡터의 실수배와 같다는 것을 알 수 있다.

[eqn: z_1 = 2+3i ~~Lrarrow~~ vec a = (2,~3)]

[eqn: z_2 = 4 + i ~~~Lrarrow~~ vec b = (4,~1)]

복소수의 곱셈은 벡터의 내적과는 다른 연산이다. 뒤에 행렬 부분에서 복소수의 곱셈이 벡터나 행렬과 어떤 관계가 있는지 알 수 있을 것이다. 지금까지 결과를 종합해 보면 [eqn: 2]차원 벡터는 좌표평면 위의 한 점으로 생각할 수 있고, 복소평면위의 한 복소수로 생각할 수 있다.

[eqn: z = cos pi over 4 + i sin pi over 4] 를 복소평면위에 나타내시오. 또한 [eqn: z^2 ,~ z^3 ,~ cdots ,~ z^8] 도 복소평면위에 나타내시오.

내가 고등학교 다닐 때는 배웠지만, 지금은 배우지 않는 내용이다. 시험에는 나오지 않지만, 직접 해보자. 분명 당신의 재산이 될 것이다.

벡터와 함수

언뜻 생각하면 벡터와 함수는 아무런 관련이 없어 보인다. 하지만 벡터와 함수는 관련이 있다. 이것은 고등학교 과정은 아니다. 내가 이걸 적는 이유는 보다 자유롭고 유연한 수학적 사고를 위해서이다. 칸토어(Cantor)의 말처럼 수학의 본질은 자유로움에 있는지도 모른다. 이미 벡터를 배웠던 사람에게 묻고 싶다. 벡터를 ‘크기와 방향을 가진 양’이외의 것으로 생각해 본적이 있는가? 벡터의 내적이 위에서 설명한 과일의 매출이나 성적과 관련이 있다고 생각해 본적이 있는가? 벡터의 덧셈을 그렇게 생각해 본 적이 있는가? 또한 앞으로 설명할 내용인 벡터가 함수와 어떤 관계가 있는지 생각해 본 적이 있는가?

사람들은 어려서부터 사과 두 개, 자동차 두 대, 사람 두 명, 연필 두 개 등으로부터 얻은 공통점을 찾아내어 ‘둘’이라고 이름 붙이고 ‘[eqn: 2]’라는 기호를 사용한다. 이러한 과정을 추상화라고 한다. 사람들이 [eqn: 2]라는 수를 보면 그것이 무슨 뜻인지 알 수 있는 이유가 바로 이러한 추상화능력이 있기 때문이다. 실제로 사과, 자동차, 사람, 연필 등은 아무런 공통점이 없지만 사람이 가진 추상화능력으로 ‘둘’이라는 공통점을 찾아낸 것이다. 이와 비슷하게 벡터와 함수는 서로 아무런 공통점이 없어 보이지만 위에 말한 것처럼 추상적인 공통점이 있다.

구체적인 보기로 이차함수와 [eqn: 3]차원 벡터의 공통점을 살펴보자.

[eqn: f(x) = -2x^2 + 3x +1], [eqn: g(x) = x^2 - x + 3] 이라 하고 다음 연산을 생각해 보자.

[eqn: f(x) + g(x) = (-2x^2 + 3x + 1) + ( x^2 -x + 3) = (-2+1)x^2 + (3-1)x + (1+3) = -x^2 + 2x + 4]

[eqn: 2f(x) = 2(-2x^2 + 3x +1) = [2 times (-2)]x^2 + (2 times 3)x + (2 times 1) = -4x^2 + 6x + 2]

이 연산들로부터 벡터와의 공통점을 찾아내었는가? 찾았다면 매우 잘한 것이다. 찾지 못했다면 직접 벡터의 연산과 비교 해보자.

[eqn: vec a = (-2,~ 3,~1)], [eqn: vec b = (1,~ -1,~3)] 이라 하면 이들의 연산은 다음과 같다.

[eqn: vec a + vec b = (-2 +1,~ 3+(-1),~1+3) = (-1,~2,~4)]

[eqn: 2 vec a = 2 (-2 ,~ 3,~1) = (2 times (-2),~2 times 3,~2 times 1) = (-4,~6,~2)]

함수의 연산과 벡터의 연산을 비교해 보면

[eqn: f(x) = -2x^2 + 3x +1 ~~Lrarrow~~ vec a = (-2,~3,~1)]

[eqn: g(x) = x^2 - x +3 ``~~~~~Lrarrow~~ vec b = (1,~-1,~3)]

라는 대응관계에 있을 때 이차함수의 덧셈과 3차원 벡터의 덧셈은 똑같은 연산이라는 것을 알 수 있고 이차함수의 실수배와 벡터의 실수배 역시 똑같은 연산이라는 것을 알 수 있다. 이것을 어려운 말로 동형(isomorphic)이라고 하며 이러한 대응관계를 동형사상(isomorphism)이라고 한다. 그러면 내적은 어떻게 될까? 애석하게도 찾기가 쉽지 않다. 구체적인 설명은 피하겠지만 벡터의 내적은 두 함수의 곱의 정적분과 관련이 있다. 위와 같은 대응관계만 기억한다면 당신은 아래 예제의 뜻을 쉽게 알 수 있을 것이다.

이차방정식 [eqn: (1,~ -3 ,~ 2)]의 근을 구하시오.

앞에서 말한 대응관계를 떠올린다면 [eqn: (1,~ -3 ,~ 2) ~~ Lrarrow ~~ x^2 -3x + 2 = 0]라고 짐작할 수 있을 것이다. 이 방정식을 풀면 [eqn: x=1,~2]를 얻는다.

지금 내가 적고 있는 것은 모든 사람에게 통하는 공통된 약속은 아니기 때문에 다른 사람과 대화할 때는 위의 예제처럼 말을 하면 상대방은 못 알아들을 것이다. 하지만 스스로 문제를 풀 때 이차방정식을 다 적는 것 보다는 위와 같이 벡터로 표현하는 것이 필기가 더 빠를 것이다. 또한 이전에 생각 못했던 ‘함수를 벡터로 표현할 수도 있구나.’라는 생각을 할 수 있을 것이다. 다시 말하면 이제 당신은 교과서에 적혀 있는 틀에 박힌 생각에서 벗어나 조금 더 유연하고 조금 더 자유로운 생각을 할 수 있을 것이다. 앞에서는 이차함수를 내림차순으로 정리했으나 오름차순으로 정리하고 그것을 벡터에 대응할 수도 있다. 그것 말고 또 어떻게 대응시킬 수 있을지 스스로 생각해 보자.

행렬의 기초(Introduction to Matrix)

영화 Matrix는 모두 다 알 것이다. 나는 1편부터 3편까지 보았고 animatrix도 보았는데 이 영화가 처음 나왔을 때 matrix가 뭔지 궁금해 하는 사람이 참 많았다. 어떤 사람은 matrix가 ‘자궁’이라는 뜻이므로 사람을 키우는 인큐베이터(?)를 뜻한다고 하는 사람도 있었지만 나는 이 영화 속에서 matrix가 뜻하는 것은 ‘행렬’이라고 자신 있게 말하고 싶다. 아마 영화평론가 중에서 수학에 대해서 잘 아는 사람은 별로 없었을 것이고 그렇기 때문에 이 ‘행렬’이라는 부분에 대해서 제대로 인지한 사람이 없었던 것 같다. 한때 전 세계를 열광하게 했던 matrix 속으로 들어가 보자.

행렬 : 성적표

번호	이름	중간	기말	수행
1	철수	80	90	85	⇐ 1행
2	민수	95	70	75	⇐ 2행
		⇑ 1열	⇑ 2열	⇑ 3열

책에 나와 있는 행렬의 정의는 ‘수를 직사각형 모양으로 배열한 것’이라고 되어 있지만 나는 성적표라고 말하고 싶다. 이 내용의 전개는 앞에 나온 벡터와 매우 유사하다. 혹시 벡터 보기 싫다고 건너 뛴 사람은 그걸 먼저 읽고 여기를 읽어보길 권한다.

오른쪽 표는 철수와 민수의 1학기 중간고사 기말고사 수행평가의 성적표이다. 이런 성적표는 많이 보았을 것이다. 여기에서 다른 글자는 모두 빼고 성적(number)만을 생각해 보자. 그리고 이 성적을 괄호 [eqn: (,~)] 혹은 bracket [eqn: [,~ ]]로 감싸면 아래와 같다.

[eqn: A = pmatrix{~ 80 ~&~ 90 ~&~ 85 ~# 95 & 70 & 75}],	[eqn: pmatrix{~ a_11 ~&~ a_12 ~&~ a_13 ~# a_21 & a_22 & a_23 }]

이렇게 수를 직사각형 모양으로 배열한 것을 행렬이라고 하며 각각의 수를 그 행렬의 성분이라고 한다. 행렬과 벡터의 차이는 벡터는 수를 쉼표(,)로 구분하지만 행렬에서는 그렇게 하지 않는다. 행렬의 가로줄을 행(raw)이라 하고, 세로줄을 열(column)이라 한다. 위의 행렬은 행이 [eqn: 2]개, 열이 [eqn: 3]개 있는 행렬로 [eqn: 2 times 3]행렬(two by three 행렬이라 읽음)이다. 행과 열의 개수가 모두 [eqn: n]개인 행렬을 [eqn: n]차 정사각행렬이라고 한다. 나는 아직도 행과 열이 헷갈린다. 하지만 이상하게도 raw 와 column은 안 헷갈린다. 그래서 친구들끼리 이야기 할 때는 우리말 보다는 영어로 많이 한다. [eqn: pmatrix{~ 80 ~&~ 90 ~&~ 85 ~}]처럼 한 행으로 이루어진 행렬을 행벡터(raw vector)라고 하고 [eqn: pmatrix{~ 80 ~# 95}]처럼 한 열로 이루어진 행렬을 열벡터(column vector)라고 한다. 위 행렬에서 [eqn: 90]점과 같이 [eqn: 1]행 [eqn: 2]열에 있는 성분을 [eqn: 1,2] 성분이라고 하고 [eqn: a_12]와 같이 표기한다. 위의 오른쪽 행렬을 참고하면 도움이 될 것이다.

위의 행렬은 [eqn: pmatrix{~ 80 ~&~ 90 ~&~ 85 ~}], [eqn: pmatrix{~ 95 ~&~ 70 ~&~ 75 ~}] 두 개의 행벡터(각 학생의 중간, 기말, 수행평가 성적)를 세로로 쌓았다고도 생각할 수 있고, [eqn: pmatrix{~ 80 ~# 95}], [eqn: pmatrix{~ 90 ~# 70}], [eqn: pmatrix{~ 85 ~# 75}] 세 개의 열벡터(각 시험의 철수, 민수 성적)를 옆으로 붙였다고 생각할 수 있다. 여기서 ‘생각할 수 있다’는 말은 그러한 해석이 가능하다는 뜻이지 언제나 그렇다는 것이 아니다. 단순히 [eqn: 3]차원 좌표 [eqn: 2]개, 혹은 [eqn: 2]차원 좌표 [eqn: 3]개로 생각할 수도 있고 그냥 성적표 그 자체로 생각할 수도 있다.

행렬의 상등

두 행렬이 같다는 말은 두 벡터가 같다는 말과 거의 비슷하다. 일단 두 행렬이 같기 위해 첫째 조건은 같은 꼴이어야만 한다. [eqn: 2] by [eqn: 3] 행렬과 [eqn: 3] by [eqn: 2] 행렬은 같은 꼴이 아니기 때문에 같은 행렬일 수 없다. 그리고 그 둘째는 각각의 성분이 같아야 한다. 자세한 것은 벡터 부분에서 설명했으므로 이렇게 간단히 설명하고 넘어간다.

행렬의 덧셈

행렬의 덧셈은 벡터의 덧셈과 매우 유사하다. 철수와 민수의 [eqn: 2]학기 성적이 [eqn: B = pmatrix{~ 90 ~&~ 70 ~&~ 95 ~# 75 & 80 & 85}]라고 한다면 [eqn: 1]학기와 [eqn: 2]학기의 성적의 합은 어찌 될까? 단순히 철수의 중간고사는 중간고사끼리 민수의 기말고사는 기말고사끼리 더하면 된다.

[eqn: A + B = pmatrix{~ 80 ~&~ 90 ~&~ 85 ~# 95 & 70 & 75} + pmatrix{~ 90 ~&~ 70 ~&~ 95 ~# 75 & 80 & 85} = pmatrix{~ 80+ 90 ~~&~ 90+70 ~~&~ 85+95 ~# 95+75 ~~&~ 70+80 ~~&~ 75+85} = pmatrix{~ 170 ~&~ 160 ~&~ 180 ~# 170 & 150 & 160}]

차원이 다른 두 벡터는 서로 더할 수 없듯이 같은 꼴이 아닌 두 행렬은 더할 수 없다는 것을 기억하자. 행렬 [eqn: A,~B,~C] 가 덧셈이 가능할 때 행렬의 덧셈에는 다음과 같은 성질이 있다.

[eqn: A + B = B + A]	교환법칙

[eqn: left ( A + B right ) + C = A + left ( B + C right )]	결합법칙

[eqn: A + O = O + A = A]	덧셈의 항등원 [eqn: O](영행렬)이 존재

[eqn: A + (-A) = (-A) + A = O]	[eqn: A]의 덧셈에 대한 역원 [eqn: -A]가 존재

영행렬은 [eqn: pmatrix{~ 0 ~&~ 0 ~# 0 & 0},~pmatrix{~ 0 ~&~ 0 ~&~ 0 ~# 0 & 0 & 0}] 등과 같이 모든 성분이 [eqn: 0] 으로 되어 있는 행렬이다.

[eqn: 2 times 2] 행렬에 대하여 행렬의 덧셈에 대한 성질을 증명하시오.

행렬의 경우에는 벡터보다 손이 더 많이 가기 때문에 귀찮다. 그래도 꼭 한번은 스스로 해보자.

행렬의 실수배

행렬의 실수배 역시 벡터의 실수배와 연산 방법이 매우 유사하다. 한 가지만 예를 들겠다.

[eqn: A = pmatrix{~ 80 ~&~ 90 ~&~ 85 ~# 95 & 70 & 75}] 일 때

[eqn: 2A = 2pmatrix{~ 80 ~&~ 90 ~&~ 85 ~# 95 & 70 & 75} = pmatrix{~ 2 times 80 ~~&~ 2 times 90 ~~&~ 2 times 85 ~# 2 times 95 ~~&~ 2 times 70 ~~&~ 2 times 75} = pmatrix{~ 160 ~&~ 180 ~&~ 170 ~# 190 & 140 & 150}]

[eqn: A,~B]가 덧셈 가능할 때 행렬의 실수배에는 다음과 같은 성질들이 있다.

[eqn: 0 A = O]	[eqn: 0]과 임의의 행렬과의 곱은 영행렬

[eqn: k O = O]	임의의 실수와 영행렬과의 곱은 영행렬

[eqn: 1 A = A]	1은 행렬의 실수배의 항등원

[eqn: (-1) A = - A]	-1 과 주어진 행렬과의 곱은 그 행렬의 덧셈의 역원

[eqn: k left ( A + B right) = k A + k B]	실수의 곱과 행렬의 덧셈에 대한 분배법칙

[eqn: (k + l ) A = k A + l A]	실수의 덧셈과 행렬의 곱셈에 대한 분배법칙

[eqn: (kl) A = k left ( l A right)]	실수의 곱과 행렬의 곱에 대한 결합법칙

[eqn: 2 times 2] 행렬에 대하여 행렬의 실수배에 대한 위의 성질을 증명하시오.

역시 귀찮겠지만, 스스로 꼭 한번은 해보자.

행렬의 곱

행렬의 곱은 벡터의 내적과 관련이 있다. 앞에서 철수의 [eqn: 1]학기 중간고사, 기말고사, 수행평가의 성적과 반영 비율을 벡터의 내적으로 설명했었다. 이번에는 행렬로 설명할 것이다. [eqn: (80~90~85)]은 성적을 나타내는 행렬(행벡터)이고 [eqn: pmatrix{ 40% # 40% # 20% }]은 반영 비율을 나타내는 행렬(열벡터)일 때, 철수의 [eqn: 1]학기 성적은 이 두 행렬의 곱(행벡터와 열벡터의 내적)으로 계산한다. 이 식을 다시 적으면

[eqn: pmatrix{ 80 ~&~ 90 ~&~ 85 } pmatrix{ 0.4 # 0.4 # 0.2 } = (80 times 0.4) + (90 times 0.4) + (85 times 0.2) = 32 + 36 + 17 = 85]

이 된다. 또한 민수의 성적이 [eqn: pmatrix{ 95 ~&~ 70 ~&~ 75 }]일 때 민수의 1학기 성적도 비슷한 방법으로 계산한다.

[eqn: pmatrix{ 95 ~&~ 70 ~&~ 75 } pmatrix{ 0.4 # 0.4 # 0.2 } = (95 times 0.4) + (70 times 0.4) + (75 times 0.2) = 38 + 28 + 15 = 81]

철수와 민수의 성적을 한 번의 곱으로 표현할 때는 아래와 같이 하면 된다.

[eqn: pmatrix{ 80 ~&~ 90 ~&~ 85 # 95& 70 & 75 } pmatrix{ 0.4 # 0.4 # 0.2 } = pmatrix{ 80 times 0.4 + 90 times 0.4 + 85 times 0.2 # 95 times 0.4 + 70 times 0.4 + 75 times 0.2 } = pmatrix{ 32 + 36 + 17 # 38 + 28 + 15 } = pmatrix{ 85 # 81}]

벡터의 내적을 계산할 때 차원이 같아야만 내적을 계산할 수 있듯이 행렬의 곱을 계산할 때는 앞 행렬의 열의 수와 뒤 행렬의 행의 수가 같아야만 계산을 할 수가 있다.

다음 행렬의 곱을 계산하여라.

[eqn: pmatrix{~ 1 ~&~ 2 } pmatrix{~ 3 ~# 4 } &= pmatrix{ (1,~2) cdot (3,~4) } = pmatrix{ 1 times 3 + 2 times 4} = pmatrix{3 + 8 } = pmatrix{11 } = 11]
1차원 벡터가 실수(스칼라)이듯이 [eqn: 1 times 1] 행렬은 실수와 같이 생각한다.

[eqn: pmatrix{ 3 # 4 } pmatrix{~ 1 ~&~ 2 } = pmatrix{ (3) cdot (1) ~~&~ (3) cdot (2) ~# (4) cdot(1) ~~&~ (4) cdot (2) } = pmatrix{~ 3 times 1 &~~ 3 times 2 ~# 4 times 1 &~~ 4 times 2 } = pmatrix{~ 3 ~&~ 6 ~# 4 & 8 }]

[eqn: pmatrix{~ 1 ~&~ 2 ~# 3 & 4 } pmatrix{~ 5 # 6 } = pmatrix{ (1,~2) cdot (5,~6) # (3,~4) cdot(5,~6) } = pmatrix{ 1 times 5 + 2 times 6 # 3 times 5 + 4 times 6} = pmatrix{ 5 + 12 # 15+24} = pmatrix{~ 17# 39 }]

[eqn: pmatrix{~ 5 # 6 } pmatrix{~ 1 ~&~ 2 ~# 3 & 4 }] 이 경우에는 행렬의 곱셈이 정의되지 않는다.

[eqn: pmatrix{~ 1 ~&~ 2 } pmatrix{~ 3 ~&~ 4 ~# 5 & 6 } &= pmatrix{ (1,~2) cdot (3,~5) ~~&~ (1,~2) cdot (4,~6) } = pmatrix{ 1 times 3 + 2 times 5 ~~&~ 1 times 4 + 2 times 6 } # &= pmatrix{ 3 + 10 ~~&~ 4 + 12} = pmatrix{~ 13 ~&~ 16 }]

[eqn: pmatrix{~ 3 ~&~ 4 ~# 5 & 6 } pmatrix{~ 1 ~&~ 2 }] 이 경우 역시 행렬의 곱셈을 계산할 수가 없다.

[eqn: pmatrix{~ 1 ~&~ 2 ~# 3 & 4 } pmatrix{~ 5 ~&~ 6 ~# 7 & 8 } &= pmatrix{ (1,~2) cdot (5,~7) ~~&~ (1,~2) cdot (6,~8) ~# (3,~4) cdot(5,~7) ~~&~ (3,~4) cdot (6,~8) } = pmatrix{ 1 times 5 + 2 times 7 ~~&~ 1 times 6 + 2 times 8 ~# 3 times 5 + 4 times 7 ~~&~ 3 times 6 + 4 times 8} # &= pmatrix{ 5 + 14 ~~&~ 6 + 16 ~# 15+28 ~~&~ 18+32 } = pmatrix{~ 19 ~&~ 22 ~# 43 & 50 } matrix { # # }]

[eqn: pmatrix{~ 5 ~&~ 6 ~# 7 & 8 } pmatrix{~ 1 ~&~ 2 ~# 3 & 4 } = pmatrix{ (5,~6) cdot (1,~3) ~~&~ (5,~6) cdot (2,~4) ~# (7,~8) cdot(1,~3) ~~&~ (7,~8) cdot (2,~4) } = pmatrix{ 5 + 18 ~~&~ 10 + 24 ~# 7+24 ~~&~ 14+32 } = pmatrix{~ 23 ~&~ 34 ~# 31 & 46 }]

위 결과에서 볼 수 있듯이 일반적으로 행렬의 곱은 교환법칙이 성립하지 않는다. 이것은 매우 중요한 사실이다. 행렬의 곱셈에서는 곱하는 순서를 함부로 바꾸면 안 된다. 또한 [eqn: n]차원의 행벡터와 열벡터의 곱은 앞에서 배운 벡터의 내적과 같다는 것을 알 수 있다. 반대로 [eqn: n]차원의 열벡터와 행벡터의 곱은 [eqn: n times n] 행렬이 됨을 알 수 있다. [eqn: n]차 정사각행렬의 끼리의 곱은 같은 꼴의 정사각행렬이 된다. 행렬의 곱을 다른 방법으로 설명하면 다음과 같다. 아래 설명을 알아들을 수 없다면, 그냥 넘어가도 좋다.

[eqn: A = pmatrix{~ a_11 ~&~ a_12 ~&~ a_13 ~# a_21 & a_22 & a_23 } = pmatrix{ vec a_1 # vec a_2 }],	[eqn: B = pmatrix{~ b_11 ~&~ b_12 ~# b_21 & b_22 # b_31 & b_32} = pmatrix{ vec b_1 ~&~ vec b_2 }] 라 한다면

[eqn: AB = pmatrix{~ a_11 ~&~ a_12 ~&~ a_13 ~# a_21 & a_22 & a_23 } pmatrix{~ b_11 ~&~ b_12 ~# b_21 & b_22 # b_31 & b_32} = pmatrix{ vec a_1 # vec a_2 } pmatrix{ vec b_1 ~&~ vec b_2 } = pmatrix{ vec a_1 cdot vec b_1 ~~&~ vec a_1 cdot vec b_2 ~# vec a_2 cdot vec b_1 ~~&~ vec a_2 cdot vec b_2}]

한편, [eqn: B = pmatrix{~ b_11 ~&~ b_12 ~# b_21 & b_22 # b_31 & b_32} = pmatrix{ vec b_1 # vec b_2 # vec b_3}],	[eqn: A = pmatrix{~ a_11 ~&~ a_12 ~&~ a_13 ~# a_21 & a_22 & a_23 } = pmatrix{ vec a_1 ~&~ vec a_2 ~&~ veca_3}] 라 한다면

[eqn: BA = pmatrix{~ b_11 ~&~ b_12 ~# b_21 & b_22 # b_31 & b_32} pmatrix{~ a_11 ~&~ a_12 ~&~ a_13 ~# a_21 & a_22 & a_23 } = pmatrix{ vec b_1 # vec b_2 # vec b_3} pmatrix{ vec a_1 ~&~ vec a_2 ~&~ veca_3} = pmatrix{ vec b_1 cdot vec a_1 ~~&~ vec b_1 cdot vec a_2 ~~&~ vec b_1 cdot vec a_3 ~# vec b_2 cdot vec a_1 ~~&~ vec b_2 cdot vec a_2 ~~&~ vec b_2 cdot vec a_3 # vec b_3 cdot vec a_1 ~~&~ vec b_3 cdot vec a_2 ~~&~ vec b_3 cdot vec a_3 }]

행렬의 곱 역시 벡터와 마찬가지로 다음과 같이 [eqn: sum]를 사용하여 나타낼 수도 있다.

[eqn: AB = C`]라 할 때 [eqn: C`]의 [eqn: i]행 [eqn: j]열의 성분 [eqn: c_ij]는 다음과 같다.

[eqn: c_ij = (AB) _ij = sum _k a_ik b_kj]

행렬의 곱셈에 대해서는 아래와 같은 성질이 있다. 행렬 [eqn: A,~ B,~C`]가 곱셈, 덧셈이 가능할 때

[eqn: AB != BA]	행렬의 곱셈은 교환법칙이 성립하지 않는다.(중요함)

[eqn: (AB)C = A(BC)]	행렬의 곱셈에 대한 결합법칙

[eqn: (A+B)C = AC + BC]	행렬의 덧셈과 곱셈에 대한 분배법칙

[eqn: A(B+C) = AB + AC]	행렬의 곱셈과 덧셈에 대한 분배법칙

[eqn: (kA)B = k (AB) = A(kB)]	행렬의 실수배와 행렬의 곱에 대한 결합법칙

행렬의 곱셈은 처음 접하는 사람에게는 매우 복잡하고 어려운 계산이다. 이것에 익숙해질 수 있도록 연습을 많이 해야 한다. 이 부분을 숙지하지 않은 채 넘어가면 뒤는 무척 어려워진다. 그러니 곱셈 연습은 익숙해 질 때까지 많이 연습해두자.

행렬의 곱셈이 결합법칙이 성립함을 증명하시오.

[eqn: 2 times 2] 행렬에 관해서는 직접 그 결과를 비교하면 된다. 해보면 알겠지만 이것은 계산이 많이 복잡하다. 더욱 일반적인 경우는 어떻게 할까? 보다 쉽게(?) 하는 방법은 [eqn: Sum]를 이용하는 것이다.

[eqn: (AB) _ik = sum _l a_il b_lk],	[eqn: (BC) _lj = sum _k b_lk c_kj] 를 이용하면

[eqn: [(AB)C``] _ij &= Sum _k (AB)_ik c_kj = Sum _k left ( Sum _l a_il b_lk right ) c_kj = Sum _k Sum _l left ( a_il b_lk c_kj right ) # &= Sum _l Sum _k left ( a_il b_lk c_kj right ) =Sum _l a_il left( Sum _k b_lk c_kj right ) = Sum _l a_il (BC)_lj = [A(BC)]_ij matrix { # # }]

이것으로 증명 끝이다. 보통 고교과정에서 [eqn: Sum]는 행렬 다음에 배우게 되므로 이것을 다루는데 익숙하지 않은 사람은 이 내용을 이해하는데 어려움이 있을 것이다. 실제로 이 증명은 일반적인 모든 경우를 증명하는 것이지만 [eqn: 2 times 2] 행렬을 직접 증명할 때보다 계산이 훨씬 쉽다(?). 이것이 고급 수학을 이용할 때의 힘이다.

[eqn: 2 times 2] 행렬에 대하여 행렬의 곱에 관한 다른 성질을 증명하시오.

이것 역시 단순노동 밖에는 하지 않지만, 직접 스스로 증명해 보자.

단위행렬

실수 [eqn: 1]은 곱셈에 대한 항등원이다. 즉

[eqn: a cdot 1 = 1 cdot a = a] 이다.

이와 마찬가지로 [eqn: n]차 정사각행렬은 행렬의 곱셈에 대한 항등원이 존재한다. 그 행렬을 단위행렬이라고 하며 기호로 [eqn: E,~E_n] 이나 [eqn: I,~I_n] 혹은 [eqn: 1]로 나타낸다. [eqn: A]가 정사각행렬일 때

[eqn: AE = EA = A] 를 만족하는 단위행렬이 존재한다.

이차 단위행렬은 [eqn: pmatrix{~ 1 ~&~ 0 ~# 0 & 1 }]이 되고 삼차 단위행렬은 [eqn: pmatrix{~ 1 ~&~ 0 ~&~ 0 # 0 & 1 & 0 # 0 & 0 & 1 }]이 된다. 정말로 단위행렬이 맞는지 아닌지 다른 행렬과 곱해서 스스로 확인해 보자. 또한 눈여겨 볼 점은 일반적으로 행렬의 곱은 교환법칙이 성립하지 않지만, 단위행렬과의 곱은 예외로 언제나 교환법칙이 성립한다는 사실이다. 이 점을 꼭 기억해 두자.

[eqn: A]가 [eqn: n]차 정사각행렬일 때, [eqn: A E_n = E_n A = A] 을 만족하는 [eqn: n]차 단위행렬 [eqn: E_n]은 오직 하나만 존재함을 증명하시오.

이러한 유일성을 증명하는 문제는 서로 다른 두 개가 있다고 가정하고 그 둘이 같다는 것을 보이면 된다. [eqn: n]차 단위행렬이 [eqn: E_n ,~F_n] 두 개가 있다고 가정하자. 단위행렬의 정의에 의하여

[eqn: A E_n = E_n A = A~ cdots~ *]

[eqn: A F_n = F_n A = A~ cdots~ **]

를 만족한다. 위의 [eqn: *]식에 [eqn: A = F_n]을 대입하고, [eqn: **]식에 [eqn: A = E_n]을 대입하면 아래 두 식을 얻는다.

[eqn: F_n E_n = E_n F_n = F_n]

[eqn: E_n F_n = F_n E_n = E_n]

위 두식에 의해서 [eqn: E_n = F_n]을 보였으므로 단위행렬은 유일하다는 증명을 마쳤다.

행렬의 거듭제곱

정사각행렬이 아닌 경우는 자기 자신끼리 행렬을 곱할 수 없지만 정사각행렬은 자기 자신끼리 곱할 수 있다. 이러한 행렬의 거듭제곱은 실수의 거듭제곱과 마찬가지로 지수를 이용하여 나타낸다. 행렬 [eqn: A]가 정사각 행렬일 경우

[eqn: A ^2 = A A,~ A^3 = A^2 A = AA^2 = AAA,~ cdots,~ A^n = A^n-1 A = A A^n-1]

여기에서도 눈여겨 볼 점은 행렬의 거듭제곱은 교환법칙이 성립한다는 점이다. 단순하게 한 가지 경우만을 보여서 그것이 타당함을 설명하겠다.

[eqn: A^3 A^2 = (AAA)(AA) = AAAAA = (AA)(AAA) = A^2 A^3]

위와 같은 등식이 성립하는 이유는 행렬의 곱은 결합법칙이 성립하기 때문이다. 보다 일반적인 표현으로는 아래와 같다.

[eqn: A ^m A^n = A ^m+n = A^n+m = A^n A^m]

이것과 함께 아래 등식도 성립하는데 이것은 지수법칙과 형태가 매우 비슷하다.

[eqn: left( A^m right)^n = A^mn = A^nm = left( A^n right)^m]

[eqn: E ^n = E]

행렬의 곱셈은 교환법칙이 성립하지 않는다는 것을 다시 한 번 상기하자. 그렇기 때문에 아래와 같은 결과들을 얻는다.

[eqn: (AB)^2 = (AB)(AB) = A(BA)B != A(AB)B = (AA)(BB) = A^2 B^2] 이것을 일반화하면

[eqn: (AB)^n ~!= A^n B^n]

[eqn: (A + B) ^2 = A^2 + AB + BA + B^2 != A^2 + 2AB + B^2]

[eqn: (A + B) (A-B) = A^2 + BA -AB - B^2 != A^2 - B^2]

이 결과들은 수식을 다룰 때의 지수법칙이나 곱셈공식과는 다르다. 그러나 정사각행렬의 거듭제곱과 단위행렬에 대해서는 교환 가능하므로 아래 등식이 성립함을 기억해 두자.

[eqn: (A + E)^2 = A^2 + 2AE + E^2 = A^2 + 2A + E]

[eqn: (A - E)^2 = A^2 - 2AE + E^2 = A^2 - 2A + E]

[eqn: (A+E)(A - E) = A^2 - E^2 = A^2 - E]

[eqn: (A+E)(A^2 - A + E) = A^3 +E]

[eqn: (A - E)(A^2 + A + E) = A^3 - E]

이것은 아래의 곱셈공식과 매우 유사함을 알 수 있다.

[eqn: (a +- 1)^2 = a^2 +- 2a +1]

[eqn: (a+1)(a - 1) = a^2 -1]

[eqn: (a +- 1)(a^2 -+ a + 1) = a^3 +- 1]

행렬에 관한 식을 다룰 때는 ‘곱셈의 교환법칙이 성립하지 않는다.’라는 사실을 꼭 기억해 두면서 일반적인 문자식을 다루듯이 하면 된다.

역행렬

‘역행렬이 정의가 뭐야?’하고 물어보면 어떤 고등학생은

‘[eqn: 1 over { ad-bc} pmatrix{~~ d~&~ -b ~# -c & ~~a }]요.’ 라고 대답을 한다. 그러나 이것은 ‘행렬 [eqn: pmatrix{~ a ~&~ b ~# c & d }]의 역행렬을 어떻게 구하느냐?’라는 질문에 대한 대답은 되지만 처음 질문의 올바른 대답은 아니다. 역행렬은 간단히 말하면 ‘서로 곱해서 단위행렬이 될 때 한 행렬을 다른 행렬의 역행렬이라고 한다.’이다. 더욱 간단한 대답은 ‘행렬의 곱셈에 대한 역원’이다. 별거 아닌 것 같지만 역행렬을 구할 줄만 아는 사람과 역행렬의 뜻을 아는 사람은 행렬을 바라보는 눈과 다루는 기술이 달라진다. 역행렬이 무엇을 뜻하는지 꼭 알아(이해하고 기억해)두자.

실수 [eqn: a]에 대하여 [eqn: ax = xa = 1]을 만족하는 실수 [eqn: x]가 존재할 때, 실수 [eqn: x]를 [eqn: a]의 역수라고 하고 기호로 [eqn: a^-1]로 나타낸다. 이와 비슷하게 정사각행렬 [eqn: A]에 대하여 등식 [eqn: AX = XA = E] 를 만족하는 행렬 [eqn: X`]가 존재할 때, 행렬 [eqn: X`]를 [eqn: A]의 역행렬이라고 하고 기호로 [eqn: A^-1]로 나타내며 ‘[eqn: A] inverse’ 라고 읽는다. 이것은 바꾸어 말하면 [eqn: A]는 [eqn: X]의 역행렬이라고도 할 수 있다. 앞에 말한 것처럼 두 행렬의 곱이 단위행렬이 되면 한 행렬은 언제나 다른 행렬의 역행렬이 된다.

[eqn: a !=0]이라면 언제나 [eqn: a]의 역수 [eqn: a^-1]가 존재하며 [eqn: a^-1 = 1 over a]이다. 이와 비슷하게 [eqn: A = pmatrix{~ a ~&~ b ~# c & d }]에 대하여 [eqn: D = ad - bc !=0]일 경우 언제나 역행렬이 존재하며 [eqn: A^-1 = 1 over { ad-bc} pmatrix{~~ d~&~ -b ~# -c & ~~a }]이다.

정사각행렬 [eqn: A]의 역행렬 [eqn: A^-1]가 존재할 때, [eqn: A^-1]는 행렬 [eqn: A]에 대하여 오직 하나만 존재함을 증명하시오.

위의 내용은 고등학교 과정에는 나오지 않지만 역행렬에 관한 중요한 성질이다. 행렬 [eqn: A]에 대한 역행렬이 하나밖에 존재하지 않는 것을 증명하는 것이 매우 어렵게 느껴지겠지만 이 증명은 단위행렬의 경우처럼 뜻밖도 매우 간단하다.

[eqn: A]의 역행렬이 [eqn: X,~Y] 두 개가 존재한다고 가정하자. 역행렬의 정의에 의해서

[eqn: AX = XA = E]

[eqn: AY=YA =E]

라는 두 개의 등식이 성립한다. 이제, [eqn: X]와 [eqn: Y]가 같다는 것을 보이겠다.

[eqn: X = XE = X(AY) = (XA)Y = EY = Y]

서로 다른 두 개의 역행렬이 존재한다고 했는데 위에서 그 두 개는 같은 것임을 보였다. 그래서 역행렬은 오직 하나 존재한다. 이것으로 증명은 끝났다. 증명은 자체는 어렵지 않지만, 이러한 증명에 익숙하지 않은 사람은 증명의 내용을 이해하는데 어려움을 느낄 것이다.

이러한 유일성의 정리가 보장하는 것이 있다. ‘수단과 방법을 가리지 않고 [eqn: AX =XA=E]를 만족하는 행렬 [eqn: X]를 구하면 그것이 바로 [eqn: A]의 역행렬 [eqn: A^-1]라는 것’이다. 별거 아닌 것 같고 어쩌면 너무 당연한 이야기인 것 같지만 이 사실을 알고 있으면 행렬을 다루는 방법이 달라진다.

역행렬의 성질

역행렬에 관해서는 다음 몇 가지 성질이 있다. 행렬 [eqn: A,~B]의 역행렬이 존재할 때

[eqn: AB = E ~~Lrarrow~~ BA=E ~~Lrarrow~~A = B^-1 ~~Lrarrow~~ B = A^-1]

[eqn: left ( A^-1 right) ^-1 = A]	‘행렬 [eqn: A]의 역행렬’의 역행렬은 자기 자신

[eqn: (AB)^-1 = B^-1 A^-1]	[eqn: (AB)^-1 != A^-1 B^-1] 임에 주의

[eqn: left ( A^n right) ^-1 = left (A^-1 right) ^n]	단, [eqn: n]은 자연수

[eqn: (kA)^-1 = 1 over k A^-1]	단, [eqn: k !=0]인 실수

이제 증명해보자. 첫째 식은 자명한 것 같지만, 사실은 그렇지 않다. 행렬의 곱은 교환법칙이 성립하지 않기 때문에 [eqn: AB = E]라고 해서 반드시 [eqn: BA = E]인 것은 아니기 때문이다. 이 증명은 단위행렬이 오직 하나밖에 없다는 것을 이용한다.

[eqn: AB = E]의 양변의 오른쪽에 [eqn: A]를 곱하면

[eqn: (AB)A = EA] 이 되고, 행렬의 곱셈에 대한 결합법칙과 단위행렬의 정의에 의해서

[eqn: A(BA) = A] 를 얻는다.

행렬 [eqn: A]의 오른쪽에 어떤 행렬 [eqn: BA]를 곱했더니 [eqn: A]가 나왔다. 이 말은 [eqn: BA]가 행렬의 곱셈에 대한 항등원이라는 뜻이며, 앞에서 단위행렬을 유일하다고 증명했으므로 [eqn: BA = E]가 되어야 한다.

[eqn: AB = BA = E] 를 얻었으므로 역행렬의 정의에 의해서

[eqn: A = B^-1 ,~ B = A^-1] 역시 덤으로 증명했다.

둘째 식은 보통 사람들이 역행렬을 말하면 떠올리는 [eqn: A^-1 = 1 over { ad-bc} pmatrix{~~ d~&~ -b ~# -c & ~~a }]로도 증명할 수 있지만 앞에서 설명한 ‘곱해서 단위행렬이 되면 역행렬이다.’와 ‘역행렬은 오직 하나만 존재한다.’를 이용하면 증명은 훨씬 쉬워진다. 일단 [eqn: A]의 역행렬이 존재한다면 다음 등식이 성립한다.

[eqn: A A^-1 = A^-1 A = E]

그러면 [eqn: A^-1]의 역행렬은 무엇일까? [eqn: A^-1]에 [eqn: A]을 곱해서 단위행렬이 나왔으므로 [eqn: A^-1]의 역행렬은 [eqn: A]이다. 이 말을 식으로 표현하면 [eqn: left ( A^-1 right) ^-1 = A] 이 된다. 이것 역시 쉬운 증명이지만 증명을 처음 접하는 사람에게는 이해하기는 어려울 것이다.

셋째 식도 앞에 말한 두 가지를 이용하면 증명은 간단해진다. 일단 다음 곱셈을 계산해보자.

[eqn: (AB) left (B^-1 A^-1 right ) = A left (B B^-1 right) A^-1 = AEA^-1 = AA^-1 = E]

[eqn: AB]에 [eqn: B^-1 A^-1]를 곱했더니 단위행렬이 나왔다. 이것이 의미하는 것이 바로 [eqn: AB]의 역행렬이 [eqn: B^-1 A^-1]라는 뜻이며 이를 식으로 표현하면 [eqn: (AB)^-1 = B^-1 A^-1]이다. 다음 곱셈도 생각해 보자.

[eqn: (AB) left (A^-1 B^-1 right ) = A left (B A^-1 right) B^-1 != A left( A^-1 B right) B^-1 = left(AA^-1 right) left (BB^-1 right) = E]

행렬의 곱셈은 교환이 되지 않기 때문에 위의 곱셈은 단위행렬이 되지 않는다. 두 행렬의 곱의 역행렬을 구할 때는 순서에 주의해야 한다. 이러한 것은 외우지 말자. 역행렬이 무엇인지 이해만 한다면 절대로 헷갈리지 않는 내용이다. 너무 당연한 내용이다.

넷째 식의 증명은 행렬의 곱셈에 대한 결합법칙을 이용하여 한 가지 예를 보이겠다.

[eqn: A^3 left (A^-1 right) ^3 = (AAA)(A^-1 A^-1 A^-1 ) = AA(AA^-1 ) A^-1 A^-1 = A(A A^-1 ) A^-1 = A A^-1 E]

[eqn: A^3]에 [eqn: left (A^-1 right )^3]을 곱했더니 단위행렬이 나왔다. 이를 수식으로 표현하면 [eqn: left ( A^3 right)^-1 = left( A^-1 right)^3]이며 이것을 일반화시키는 것은 어렵지 않다. [eqn: left (A^n right)^-1 = left( A ^-1 right) ^n] 이므로 [eqn: left (A^n right)^-1 = left( A ^-1 right) ^n = A^-n] 라고 적고 싶으나 고등학교 과정에서는 음수 지수는 사용하지는 않고 자연수 지수만을 사용한다.

마지막 다섯째 식도 증명은 단순하다.

[eqn: (kA) left( 1 over k A^-1 right) = left (k cdot 1 over k right) left( A A^-1 right) = 1 E = E]

이 식에 대한 설명은 필요 없다고 생각하고 안하겠다. 이러한 증명이 필요 없다고 생각될지 모르겠으나 정말 필요한 것이다. 나중에 잊어버려도 좋으니 꼭 한번은 따라 해보자. 이러한 증명을 익힘으로 인해서 행렬을 다루는 기술을 터득하게 된다. 이것을 모른 상태에서 행렬을 배우면 행렬은 ‘뭔지 모르지만 엄청 머리 아프고 복잡한 수학’이라는 생각만 들 것이다.

단위행렬, 거듭제곱, 역행렬의 공통점

지금까지 단위행렬, 행렬의 거듭제곱, 역행렬에 대해서 배웠다. 이들에 대한 정의는 아래 세 식으로 표현된다.

[eqn: AE = EA = A]

[eqn: A^n = A^n-1 A = A A^n-1]

[eqn: AA^-1 = A^-1 A = E]

이들 세 종류 행렬의 공통점이 있다. 첫째는 모두 정사각행렬이라는 것이다. 단위행렬 자체도 정사각행렬이지만 단위행렬을 곱해서 자기 자신이 나오는 행렬 역시 정사각행렬이어야 한다. 거듭제곱 역시 정사각행렬이 아니면 정의되지 않는다. 역행렬 역시 정사각행렬이 아니면 정의되지 않는다. 둘째 공통점은 행렬의 교환법칙이 성립하는 경우라는 것이다. 일반적으로 행렬의 교환법칙은 성립하지 않는다. 하지만 단위행렬과의 곱, 거듭제곱, 역행렬과의 곱은 언제나 교환법칙이 성립한다. 이 것 말고 교환법칙이 성립하는 경우가 몇 가지 더 있지만 고등학교 과정에서 알고 있으면 유용한 것은 세 가지 경우이다. 이것을 식으로 쓰면 다음과 같다.

[eqn: AE = EA = A]

[eqn: A^n A^m = A^m A^n = A^m+n]

[eqn: AA^-1 = A^-1 A = E]

행렬에 관한 식이 있는데 등장하는 행렬이 [eqn: A,~A^-1 ,~E,~A^n ,~ left(A^-1 right)^n] 밖에 없다면 교환법칙이 성립하므로 과감하게 보통의 수식을 다룰 때처럼 하면 된다. 지금까지 배운 사실은 [eqn: n]차 정사각행렬의 경우에 언제나 성립하는 것이다. 지금까지의 결과를 종합하는 의미로 다음 예제를 풀어보자.

[eqn: A^2 = E ~~ Lrarrow ~~ A = A^-1]를 증명하시오.

문제에서 굳이 [eqn: A]가 [eqn: 2]차 정사각행렬이라는 말은 하지 않았다. 어떤 사람은 이러한 문제를 무척 어려워한다. 역행렬이라는 것을 어떻게 보일까? [eqn: A^-1 = 1 over { ad-bc} pmatrix{~~ d~&~ -b ~# -c & ~~a }]를 이용해서 어떻게 하면 될 것 같은데 어려워서 잘 모르겠다. 내가 해 주고 싶은 말은 ‘역행렬’ 하면 떠오르는 저 식은 과감히 버리라는 것이다. ‘두 행렬을 곱해서 단위행렬이 될 때, 한 행렬이 다른 행렬의 역행렬이다.’는 사실만 알면 증명은 정말로 쉽다.

[eqn: ( Rarrow )] [eqn: A^2 = AA = E] 에서, [eqn: A]에 [eqn: A]를 곱했더니 단위행렬이 나왔다. 이 말은 [eqn: A]의 역행렬은 [eqn: A]라는 뜻이며 수식으로 표현하면 [eqn: A^-1 = A]가 된다.

[eqn: ( Larrow )] [eqn: A = A^-1] 이므로 [eqn: A^2 = AA = A A^-1 = E]

다시 말하지만, [eqn: A^-1 = 1 over { ad-bc} pmatrix{~~ d~&~ -b ~# -c & ~~a }] 이런 거 떠올리지 말자. 이것은 ‘행렬 [eqn: A]의 역행렬을 구하시오.’라는 문제에서나 사용되는 식이다.

[eqn: A^3 = E ~~ Lrarrow ~~ A^-1 = A^2]을 보이시오.

[eqn: A^3 = A(A^2 ) = E] 이므로 앞의 예제와 같이 증명하면 된다.

[eqn: A^2 = O] 일 때, [eqn: E+A]의 역행렬이 [eqn: E-A] 임을 보이시오.

위의 두 행렬의 곱이 단위행렬이라는 것만 보이면 된다.

[eqn: (E+A)(E-A) = E^2 - A^2 = E - O = E]

두 행렬을 곱했더니 단위행렬이 나왔다. 그러니 [eqn: E+A]의 역행렬이 [eqn: E-A] 라는 증명은 이미 끝난 것이다. 동시에 [eqn: E-A]의 역행렬이 [eqn: E+A] 임을 보이는 것도 증명했다.

[eqn: A^3 = O] 일 때, [eqn: A+E]의 역행렬이 [eqn: A^2 - A + E] 임을 보이시오.

이것은 위의 문제와 거의 풀이가 같다. 그냥 아무 생각 없이 곱하면 된다.

[eqn: (A+E) ( A^2 -A + E) = A^3 + E = O + E = E] 이걸로 증명 끝이다. 앞의 문제와 이 문제에서 기존에 알고 있는 곱셈공식을 적용할 수 있었던 이유는 이들은 곱셈에 대한 교환법칙이 성립하기 때문이다. 그렇지 않은 경우에 함부로 곱셈공식을 사용하는 것은 위험하다. 행렬의 곱이 언제 교환 가능하고 언제 교환 불가능한지 알아두는 것도 이런 문제를 푸는 하나의 기술이다.

[eqn: A^2 + A - 2E = O] 일 때 [eqn: A]는 역행렬을 가짐을 보여라.

2005학년도 수능문제를 약간 바꾼 것이다. [eqn: D = ad-bc !=0]이면 역행렬이 존재하는데 이 문제는 이것을 어떻게 적용해야 할지 막막 하기만하다. 이 문제는 정말 의외로 쉬운 문제이다. 역행렬의 유일성을 생각해 보자. 수단과 방법을 가리지 않고 [eqn: AX = E]를 만족하는 행렬 [eqn: X]를 구하기만 하면 그것이 바로 역행렬이다. 머리에 다음 식을 떠올려보자.

[eqn: A(어떤 행렬) = E]

주어진 문제를 이 형식으로 바꿀 수 있겠는가? 그것만 성공한다면 문제는 해결된다. 이제 그렇게 해보자. 위 식을 정리하면

[eqn: A^2 + A &= 2E # A(A+E) &= 2E # A left[ 1 over 2 (A+E) right] &= E]

[eqn: A]와 곱해서 단위행렬이 되는 행렬 [eqn: 1 over 2 (A+E)]를 하나 찾았다. 이것이 바로 [eqn: A]의 역행렬이다. 내가 직접 역행렬을 하나 찾아서 보여주었으니 역행렬이 존재하는 것은 당연한 일이다. 이것으로 증명은 끝난 것이다.

[eqn: A^2 + A - 3E = O] 일 때 [eqn: A-E]의 역행렬이 존재함을 보이시오.

위의 문제를 약간 변형시킨 것이다. 이것도 알고 보면 쉬운 문제이다. 문제의 식을

[eqn: A^2 + A - 2E = E] 와 같이 정리한 후 인수분해하면 된다.

[eqn: (A-E)(A+2E) = E]

이걸로 증명 끝이다. 더 이상의 설명은 필요 없다고 생각한다.

실제로 역행렬은 어렵지 않다. 역행렬을 구하는 것이 어렵지 역행렬의 뜻을 이해하고 앞의 예제들처럼 역행렬을 다루는 것은 전혀 어렵지 않다. 참고로 [eqn: 2]차 정사각행렬은 역행렬 구하기가 비교적 쉬운 편이나, 일반적인 [eqn: n]차 정사각행렬의 역행렬을 구하는 것은 정말 복잡하다.

[eqn: (ABC) ^-1 = C^-1 B^-1 A^-1] 임을 보이시오.

i) [eqn: (ABC) left( C^-1 B^-1 A^-1 right) = AB left ( C C^-1 right) B^-1 A^-1 = A left ( B B^-1 right) A^-1 = A A^-1 = E]

ii) [eqn: (ABC) ^-1 = [(AB)C]^-1 = C^-1 (AB)^-1 = C^-1 left( B^-1 A^-1 right) = C^-1 B^-1 A^-1]

첫째 방법은 역행렬의 정의를 그대로 이용한 것이고, 둘째는 [eqn: (AB)^-1 = B^-1 A^-1]를 이용했다.

행렬 [eqn: A = pmatrix{~ a~&~ b ~# c & d }]에서 [eqn: D = ad - bc != 0]일 때, 이 행렬의 역행렬은 [eqn: A^-1 = 1 over { ad-bc} pmatrix{~~ d~&~ -b ~# -c & ~~a }] 임을 보이시오.

두 행렬의 곱이 단위행렬임을 보이면 문제는 금방 해결된다.

[eqn: A A^-1 &= pmatrix{~ a ~&~ b ~#~ c ~&~ d ~} left[ 1 over { ad-bc} pmatrix{~~ d~&~ -b ~# -c & ~~a } right] = 1 over { ad-bc} left[ pmatrix{~ a~&~ b ~# c & d } pmatrix{~~ d~&~ -b ~# -c & ~~a } right] # &= 1 over { ad-bc} pmatrix{~ ad-bc ~~&~ -ab + ba ~# cd - dc ~~&~ -cb + da } = pmatrix{~ 1 ~&~ 0 ~# 0 & 1 } matrix { # # }]

곱한 순서를 바꾸어도 같은 결과를 얻는데 [eqn: A^-1 A = E] 는 스스로 확인해 보자. 역행렬을 구하라고 하면 내가 직접 찾아야 하지만 이것은 답이 맞는지를 확인하는 문제이므로 더 쉬운 문제이다.

대각합(Trace)

행렬의 대각합(trace)은 정사각행렬의 주대각성분(＼)의 합으로 정의하며, 행렬 [eqn: A]의 대각합은 [eqn: {rm tr } (A)]로 표현하는데 특히 [eqn: A = pmatrix{~ a ~&~ b ~# c & d }]일 경우 [eqn: {rm tr} (A) = a+d] 를 뜻한다. [eqn: n]차 정사각행렬 [eqn: A]의 [eqn: i]행 [eqn: j]열 성분을 [eqn: a_ij]라 하면, 대각합은 [eqn: sum]를 이용하여 다음과 같은 식으로 정의한다.

[eqn: {rm tr } (A) = sum _ i=1 ^n `a_ii = sum _ i `a_ii]

대각합은 뒤에서 닯은변환을 설명할 때 조금 더 자세히 다룰 텐데 다음과 같은 성질이 있다.

[eqn: {rm tr } (AB) = {rm tr } (BA) != {rm tr } (A) {rm tr } (B)]

[eqn: {rm tr } (ABC) = {rm tr } (BCA) = {rm tr } (CAB) != {rm tr } (CBA) = {rm tr } (ACB) = {rm tr } (BAC)]

[eqn: {rm tr } (AB) = {rm tr } (BA)]를 증명하시오.

[eqn: (AB)_ij = sum_k a_ik b_kj] 이므로 [eqn: (AB)_ii = sum_k a_ik b_ki] 이다.

[eqn: {rm tr } (AB) &= sum_i (AB)_ii = sum_i left ( sum_k a_ik b_ki right) {} atop { {} atop {}} # &= sum_i left ( sum_k b_ki a_ik right) = sum_k left ( sum_i b_ki a_ik right) = sum_k (BA)_kk = {rm tr } (BA)]

위 내용은 뒤에 있는 예제를 보면 도움이 될 것이다.

행렬식(Determinant)

고등학교 과정에서 흔히 [eqn: D = ad - bc]라고 하는 값을 행렬의 행렬식(Determinant)이라 한다. 행렬식은 정사각행렬에서만 정의되는 값이며, 그 결과는 수이지 행렬이 아니다. 행렬식은 고등학교 과정은 아니지만 알아두면 나름대로 쓸모가 있을 것이다. 또한 이것은 이차방정식 [eqn: ax^2 + bx + c = 0]의 판별식(Discriminant)을 뜻하는 [eqn: D = b^2 - 4ac]와는 다르다.

행렬식을 이해하기 위해서는 치환(permutation - 순열, 조합에서의 permutation과는 의미가 다름)을 먼저 알아야 한다. 길게 설명하면 복잡해지므로 간단히 설명하겠다. 예를 들어서 [eqn: 1,~ 2,~ 3,~ 4] 네 개의 수가 있다고 해 보자. 이 가운데 임의의 두 수의 위치를 바꾸는 연산을 치환이라고 한다. 치환은 바로 옆에 붙어 있는 두 수를 바꾸어도 되고 서로 떨어져 있는 것을 바꾸어도 된다.

[eqn: 4231]을 [eqn: 1234]로 만들기 위해서는 [eqn: 1]과 [eqn: 4]의 위치를 서로 바꾸면 이 되는데 이 과정을 아래와 같이 표현하겠다.

[eqn: 4231~~ REL rarrow {~14~} {} ~~1234]

물론 아래와 같이 해도 상관없다.

[eqn: 4231~~ REL rarrow {~12~} {} ~~4132~~ REL rarrow {~14~} {} ~~1432~~ REL rarrow {~24~} {} ~~1234]

[eqn: 4231]을 [eqn: 1234]로 만들기 위해서 필요한 치환의 횟수는 [eqn: 1]번, [eqn: 3]번, [eqn: 5]번, [eqn: 7]번에도 가능하게 할 수 있다. 그러나 짝수번의 치환으로는 [eqn: 1234]를 만들 수 없다. 이와 같이 홀수번의 치환을 해야 하는 수의 배열을 odd permutation이라고 한다.

한편, [eqn: 2431]을 [eqn: 1234]로 만들기 위해서는 아래와 같이 [eqn: 1,2]를 바꾼 뒤에 [eqn: 2,4]를 바꾸면 된다.

[eqn: 2431~~ REL rarrow {~12~} {} ~~1432~~ REL rarrow {~24~} {}~~ 1234]

이것 역시 아래와 같은 방법으로 해도 상관없다.

[eqn: 2431~~ REL rarrow {~13~} {} ~~2413~~ REL rarrow {~14~} {}~~ 2143 ~~ REL rarrow {~12~} {}~~ 1243~~ REL rarrow {~34~} {}~~ 1234]

[eqn: 4231]을 [eqn: 1234]로 만들기 위해서 필요한 치환의 횟수는 [eqn: 2]번, [eqn: 4]번, [eqn: 6]번, [eqn: 8]번에도 가능하게 할 수 있다. 그러나 홀수번의 치환으로는 [eqn: 1234]를 만들 수 없다. 이와 같이 짝수번의 치환을 해야 하는 수의 배열을 even permutation이라고 한다. 네 개의 수로 만들 수 있는 수의 배열은 [eqn: 4! = 24]가지가 있다. 이 가운데 절반인 [eqn: 12]가지는 even이고 또한 나머지 절반은 odd 이다.

다음 수의 배열이 even permutation인지 odd permutation 구하시오.

[eqn: 123] : [eqn: 0]번 하면 되므로 even

[eqn: 231] : [eqn: 231~~ REL rarrow {~13~} {} ~~213~~ REL rarrow {~12~} {}~~ 123] 이므로 even

[eqn: 1]

[eqn: 2]

[eqn: 3]

[eqn: 312] : [eqn: 312~~ REL rarrow {~13~} {} ~~132~~ REL rarrow {~23~} {}~~ 123] 이므로 even

[eqn: 321] : [eqn: 321~~ REL rarrow {~13~} {} ~~123] 이므로 odd

[eqn: 213] : [eqn: 213~~ REL rarrow {~12~} {} ~~123] 이므로 odd

[eqn: 132] : [eqn: 132~~ REL rarrow {~23~} {} ~~123] 이므로 odd

위의 결과를 기억하는데 도움이 되는 방법은 옆의 그림을 떠올리는 것이다. 세 수가 화살표와 같은 방향의 순서를 가지면 even 이고, 반대방향의 순서를 가지면 odd가 된다.

지금까지 치환에 대해서 공부해 보았으니 본격적으로 행렬식에 대해서 공부를 해 보겠다. 아래와 같이 [eqn: 3 times 3] 행렬로 설명을 하겠다.

행렬 [eqn: A= pmatrix{`` a_1 ``& a_2 ``& a_3 ``# b_1 & b_2 & b_3 # c_1 & c_2 & c_3 }]에 대하여 세 수를 선택하여 곱한다. 예를 들면 [eqn: a_1 ,~ b_2 ,~ c_3]를 선택하고 이들의 곱인 [eqn: a_1 b_2 c_3]를 계산하는 것이다. 세 수를 선택하는데 규칙은 ‘각 행과 열에서 한 수씩 선택한다.’이다. 만약 [eqn: a_1 a_2 c_3] 같은 경우는 첫째 행(raw)에 있는 두 수 [eqn: a_1 ,~ a_2]를 선택했기 때문에 안 되고, [eqn: a_1 b_2 c_2] 같은 경우는 둘째 열(column)에 있는 두 수 [eqn: b_2 ,~ c_2]를 선택했기 때문에 안 된다. 확인해 보면 알겠지만 이 규칙을 따라서 세 수를 선택하는 방법은 [eqn: 3! ` = 3 times 2 times 1 = 6]가지인데, 그것을 나열하면 아래와 같다. 직접 확인해 보자.

[eqn: a_1 b_2 c_3 ,~~ a_2 b_3 c_1 ,~~ a_3 b_1 c_2 ,~~ a_3 b_2 c_1 ,~~ a_2 b_1 c_3 ,~~ a_1 b_3 c_2]

마지막 단계는 앞에서 설명한 permutation을 이용하는 것이다. 첨자의 배열이 odd인 경우는 세 수를 곱한 결과에 [eqn: -1]을 곱하고, even인 경우는 세 수를 곱한 결과에 [eqn: +1]을 곱한다. 그 다음 여섯 개의 수를 모두 합한 결과가 행렬 [eqn: A]의 행렬식이 되며 식으로 나타내면 아래와 같다.

[eqn: det(A) = a_1 b_2 c_3 + a_2 b_3 c_1 + a_3 b_1 c_2 - a_3 b_2 c_1 - a_2 b_1 c_3 - a_1 b_3 c_2]

[eqn: B= pmatrix{`` a_1 ``& a_2 ``# b_1 & b_2 }] 일 때도 마찬가지이다. 두 수를 선택하는 경우는 [eqn: a_1 b_2 ,~~ a_2 b_1] 두 가지이고 부호를 정한 후 더하면 아래 결과를 얻는데 이 결과는 고등학교 때 배우는 [eqn: D = ad - bc]와 같은 식이다.

[eqn: det (B) = a_1 b_2 - a_2 b_1]

행렬식을 표현하는 기호는 [eqn: det(B) = |B``| = dmatrix {`` a ``& b ``# c & d }] 와 같이 여러 가지가 있다.

[eqn: 3]차정사각행렬의 행렬식은 손으로 계산할 만한데 [eqn: 4]차부터는 손으로 계산하려면 복잡하고 짜증나기 시작한다. 만약 [eqn: 4]차 정사각행렬일 경우는 [eqn: 4! = 24]가지 경우를 찾아서 곱한 후 부호를 결정하여 더해야 하기 때문이다. [eqn: 10]차 정사각행렬의 행렬식을 구하기 위해서는 [eqn: 10]개의 수를 [eqn: 10! = 3,628,800]번 곱한 다음 이들에 적당한 부호를 붙여서 더해야 한다. 이렇게 큰 행렬의 행렬식을 구할 때는 행렬식의 정의를 직접 이용하지 않고 행렬식의 여러 가지 성질을 이용하던지 라플라스 전개를 이용하여 구한다. 대학교 선형대수 시험 중에 cramer's rule 을 이용하여 미지수 [eqn: 4]개인 일차 연립방정식을 푸는 문제가 있었다. 이 문제를 풀려면 [eqn: 4]차 행렬식 다섯개를 계산해야 하는데 계산이 느리고 실수가 많은 나에게는 정말 최악의 문제였던 걸로 기억한다. 당연한 말이지만 주어진 행렬의 행렬식은 반드시 존재하며 딱 한 개만 존재한다. 간단히 말해서 유일하게 존재한다.

다음 행렬들의 대각합(trace)과 행렬식(determinant)을 구하시오.

[eqn: A= pmatrix{~~4``&~~~3 # -2 & ~~ -1}]
[eqn: {rm tr } (A) = 4 + (-1) = 3]
[eqn: | A| = det(A) = dmatrix{~~4``&~~~3 # -2 & ~~ -1} ` = 4 cdot (-1) - 3 cdot (-2) = -4 +6 = 2]

[eqn: A^-1 = 1 over 2 pmatrix{~ -1 &~~ -3 # ~~2 &~~~ 4 }]
[eqn: {rm tr } left (A^-1 right) = - 1 over 2 + 2 = 3 over 2]
[eqn: det(A^-1 ) = dmatrix{ - 1 over 2 &~~ - 3 over 2 # ~~1 & ~~~2} ` = left( - 1 over 2 right) cdot2 - left( - 3 over 2 right) cdot 1 = -1 + 3 over 2 = 1 over 2]

[eqn: B = pmatrix{ -1 & ~~-4 # ~~2 & ~~~5 }]
[eqn: {rm tr } (B) = (-1) + 5 = 4]
[eqn: det(B) = dmatrix{ -1 & ~~-4 # ~~2 & ~~~5 } `= (-1) cdot 5 - (-4) cdot 2 = -5 + 8 = 3]

[eqn: AB = pmatrix{~~4``&~~~3 # -2 & ~~ -1} pmatrix{ -1 & ~~-4 # ~~2 & ~~~5 } ` = pmatrix{ 2 & ~~-1 # 0 & ~~~3 }]
[eqn: {rm tr } (AB) = 2 + 3 = 5]
[eqn: det(AB) = dmatrix{ 2 & ~~-1 # 0 & ~~~3 }`= 2 cdot 3 - (-1) cdot 0 = 6 - 0 = 6]

[eqn: BA = pmatrix{ -1 & ~~-4 # ~~2 & ~~~5 } pmatrix{~~4``&~~~3 # -2 & ~~ -1} ` = pmatrix{ ~~4 & ~~1 # -2 & ~~1 }]
[eqn: {rm tr } (BA) = 4 + 1 = 5]
[eqn: det(BA) = dmatrix{ ~~4 & ~~1 # -2 & ~~1 } `= 4 cdot 1 - 1 cdot(-2) = 4 + 2 = 6]

[eqn: R( theta) = pmatrix{`` cos theta ``&~~ -sin theta ``# sin theta &~~~ cos theta }]
[eqn: {rm tr } ( R (theta)) = cos theta + cos theta = 2 cos theta]
[eqn: det(R(theta)) = dmatrix{`` cos theta ``&~~ -sin theta ``# sin theta &~~~ cos theta } ` = cos theta cdot cos theta - (-sin theta) cdot sin theta = cos^2 theta + sin^2 theta = 1]
이 행렬은 내가 고등학교 다닐 때는 배웠지만 지금은 교과과정에서 빠져있는 회전변환행렬이다. ‘고무신 신고’라고 외웠던 생각이 난다. 자세한 설명은 안하겠다.

[eqn: C = pmatrix{`` 1 ``& 2 ``& 3 ``# 4 & 5 & 6 # 7 & 8 & 9 }]
[eqn: {rm tr } (C`) = 1 + 5 + 9 = 15]
[eqn: det(C`) = (1 cdot 5 cdot 9) + (2 cdot 6 cdot 7) + (3 cdot 4 cdot 8) - (3 cdot 5 cdot 7) - (2 cdot 4 cdot 9) - (1 cdot 6 cdot 8) {} atop {}# ~~~~~~```= 45 + 84 + 96 - 105 - 72 - 48 = 0]

행렬식의 성질

앞에서 잠깐 이야기 했듯이 행렬식은 여러 가지 성질이 있다. 나는 그 중에서 고등학생이 알면 좋을만한 것을 한 가지만 적어보겠다. [eqn: A,~B]가 같은 꼴의 정사각행렬일 때

[eqn: det(AB) = det(A) cdot det(B)]

이것의 증명은 쉬운 증명이 없다. 아마 여기에 증명을 적는다 해도 고등학교 수준으로는 이해하기 어려울 것이니 그냥 믿자. 공리(axiom)라고 생각해도 좋을 것이다. 위에 예제로 계산한 결과들을 살펴보면 어느 정도 수긍할 수 있을 것이다. 좌변의 괄호 안의 곱은 행렬의 곱이고 우변의 곱은 행렬식과 행렬식의 곱이기 때문에 수의 곱이다. 이것의 따름정리(corollary)가 다음 몇 가지 있다.

우선 첫째로

[eqn: det(BA) = det(AB)]

이것은 [eqn: AB != BA] 인 경우에도 언제나 성립하는 식이다. 위의 예제를 참고해 보자. 증명은 처음에 적은 믿음인 [eqn: det(AB) = det(A) cdot det(B)]을 이용하면 매우 쉽다.

[eqn: det(BA) = det(B) cdot det(A) =*~ det(A) cdot det(B) = det(AB)]

위 식에서 * 표한 등식은 수의 곱은 교환법칙이 성립함을 이용하였다. 이것 역시 위의 예제를 참고하면 도움이 될 것이다.

둘째 따름정리는 다음과 같다.

[eqn: det(A) cdot det left (A^-1 right) = 1]
증명은 첫째 따름정리를 이용한다.
[eqn: det(A) cdot det left (A^-1 right) = det left (A A^-1 right ) = det(E) = 1]
이것을 다른 말로 표현하면 [eqn: det(A)]와 [eqn: det left( A^-1 )]는 역수관계라는 뜻이며 수식으로는 다음과 같다.
[eqn: det left( A^-1 right) = 1 over {det(A)} = [ det(A)] ^-1]
좌변의 -1 은 역행렬을 뜻하고 우변의 -1 은 역수를 뜻한다. 이것도 위의 예제를 참고하자.

셋째 따름 정리는 다음과 같다.

[eqn: exist A^-1 ~~Lrarrow~~ det(A) != 0]

위 식을 말로 설명하면 다음과 같다. 행렬 [eqn: A]의 역행렬 [eqn: A^-1]가 존재(Exist)하기 위한 필요충분조건은 [eqn: det(A) != 0]이다. 이것은 ‘어떤 수 [eqn: a]의 역수가 존재하기 위한 필요충분조건은 [eqn: a != 0] 이다.’와 비슷하다. 이 정리의 대우 명제는 [eqn: det(A) = 0 ~~Lrarrow~~ not exist A^-1] 이다.

먼저 [eqn: exist A^-1 ~~Rarrow~~ det(A) != 0]를 증명해보자. 둘째 따름정리를 이용하면
[eqn: det(A) = 1 over { det left (A^-1 right) }]를 얻는데, 실수 [eqn: det left( A^-1 right)]의 역수는 [eqn: 0]이 될 수 없으므로 [eqn: det left (A right) ` != 0] 이다.

다음으로 [eqn: exist A^-1 ~~Larrow~~ det(A) != 0]을 증명할 텐데, 대우명제인 [eqn: det(A) = 0 ~~Rarrow~~ not exist A^-1]를 증명하겠다. 둘째 따름정리를 이용하면
[eqn: det left (A ^-1 right ) = 1 over { det ( A ) } = 1 over 0] 를 얻는데, 이 등식을 만족하는 실수 [eqn: det left( A^-1 right)]는 존재하지 않는다. 모든 정사각행렬은 행렬식이 존재하므로 행렬식이 존재하지 않는다는 말은 역행렬 [eqn: A^-1]가 존재하지 않는다는 말과 같다. 셋째 따름정리는 고등학교 과정에서 매우 중요한 정리이다. 문제를 풀다가 ‘역행렬이 존재할 때’ 라는 말이 나오면 [eqn: det(A) != 0]을 ‘존재하지 않을 때’라는 말은 [eqn: det(A) = 0]을 꼭 떠올리자.

넷째 따름 정리는 다음과 같다. [eqn: A,~B]의 역행렬은 존재하고 [eqn: P,~Q]의 역행렬은 존재하지 않을 때 즉, [eqn: det(A) != 0,~det(B) !=0,~det(P) = det(Q) = 0]일 때

[eqn: exist (AB)^-1 ,~ not exist (AP) ^-1 ,~ not exist (PQ) ^-1] 이다.

이 정리를 설명하면 역행렬이 존재하는 행렬끼리의 곱한 행렬은 역행렬이 존재한다. 역행렬이 존재하지 않는 행렬과 다른 행렬(역행렬이 존재하던, 그렇지 않던)을 곱한 행렬은 역행렬이 존재하지 않는다. 이것 역시 다음 실수에 관한 성질과 유사하다. ‘[eqn: 0]이 아닌 두 실수의 곱은 역수가 존재한다. [eqn: 0]과 어떤 실수([eqn: 0]이 아니던 [eqn: 0]이던)의 곱은 역수가 존재하지 않는다.’ 이것의 증명 역시 쉽다.

[eqn: det(AB) = det(A) cdot det(B) != 0] 이므로 [eqn: AB]의 역행렬은 존재한다.

이미 앞에서 [eqn: (AB)^-1 = B^-1 A^-1] 라는 것도 보였다.

[eqn: det(AP) = det(A) cdot det(P) = det(A) cdot 0 = 0] 이므로 [eqn: AP]의 역행렬은 존재하지 않는다.

[eqn: det(PQ) = det(P) cdot det(Q) = 0 cdot 0 = 0] 이므로 [eqn: PQ]의 역행렬은 존재하지 않는다.

[eqn: A^2 = O] 일 때 [eqn: A]의 역행렬이 존재하지 않음을 보여라.

행렬식의 성질을 이용하면 쉽게 증명이 된다.

[eqn: left[ det(A) right] ^2 = det(A) cdot det(A) = det left (A^2 right) = det(O) = 0] 이므로 [eqn: det(A) = 0] 이다. 따라서 [eqn: A]의 역행렬 [eqn: A ^-1]는 존재하지 않는다.

행렬식의 기하학적 의미

고등학교 과정에서는 배우지 않지만 알아두면 좋은 행렬식의 기하학적 의미가 있다. 간단하게 이야기 하면 [eqn: 2]차 정사각행렬의 행렬식의 절대값은 두 벡터로 이루어진 평행사변형의 넓이와 같고, [eqn: 3]차 정사각행렬의 행렬식의 절대값은 세 벡터로 이루어진 평행육면체의 부피와 같다. 그리고 약간 어려운 말 한 가지를 더하면 좌표평면(혹은 좌표공간)에 있는 어떤 도형을 행렬 [eqn: A]로 일차변환 시킬 때 변환후의 도형의 넓이는 변환전의 넓이에 [eqn: det(A)]의 절대값을 곱한 것과 같다. 자세한 설명은 뒤로 하고 몇 가지 예제를 통해서 감을 익혀보자.

벡터 [eqn: rm vec OA = (3,~0)]과 [eqn: rm vec OB = (1,~2)]로 만들어지는 평행사변형의 넓이를 구하여라.

i) 벡터 [eqn: rm vec OA = (3,~0)]는 원점에서 출발하여 점[eqn: A(3,~0)]에서 끝나는 유향선분을 의미한다. 점 [eqn: rm O,~ A,~ B]가 평행사변형의 세 점인데 나머지 한 점 [eqn: rm C]는
[eqn: rm vec OC = vec OA + vec OB = (3,~0) + (1,~2) = (4,~2)]로 결정되며 과학시간에 힘(벡터)을 합하기 위해 평행사변형을 그리는 방법과 같다. 이 평행사변형은 밑변이 [eqn: 3]이고 높이가 [eqn: 2]이므로 이 평행사변형의 넓이는 [eqn: 6]이 됨을 쉽게 알 수 있다.

ii) 앞에 말한 행렬식으로 풀어보자.

[eqn: M= pmatrix{` 3~ & 1 `# 0~& 2 }] 라 하면 [eqn: det(M) = 6] 이므로 평행사변형의 넓이는 [eqn: 6] 이다. 이것은 다음과 같이 해도 상관 없다.

[eqn: N= pmatrix{` 1~ & 3 `# 2~& 0 }] 라 하면 [eqn: det(N) = -6] 이므로 구하는 넓이는 [eqn: | -6 | = 6] 이다.

[eqn: M^T = pmatrix{` 3~ & 0 `# 1~& 2 }] 라 하면 [eqn: det left (M^T right) = 6] 이므로 구하는 넓이는 [eqn: 6] 이다.

[eqn: M^T = pmatrix{` 1~ & 2 `# 3~& 0 }] 라 하면 [eqn: det left (N^T right) = -6] 이므로 구하는 넓이는 [eqn: | -6 | = 6] 이다.

두 벡터를 이용하여 [eqn: 2]차 정사각행렬을 만드는 방법은 위에서 보인 네 가지가 있다. 어떤 행렬을 만들던지 행렬식의 절대값은 같은데, 이것은 앞에서 설명하지 않은 행렬식의 성질 때문에 그렇다. 그러니 아무렇게나 편한 데로 만들어서 하면 된다.

세 점 [eqn: rm O(0,~0)], [eqn: rm A(4,~1)], [eqn: rm B(2,~3)] 으로 이루어진 삼각형의 넓이를 구하여라.

i) 그림을 직접 그려서 삼각형의 넓이를 구하면 [eqn: 5]를 얻는다.

ii) 이 문제는 [eqn: rm vec OA = (4,~1)], [eqn: rm vec OB = (2,~3)] 두 벡터로 이루어진 삼각형의 넓이를 구하라는 문제이고 이것은 두 벡터로 만들어지는 평행사변형 넓이의 절반이다.

[eqn: dmatrix{` 4~ & 2 `# 1~ & 3 `} `= 10] 이므로 삼각형의 넓이는 이것의 절대값의 절반인 [eqn: 5]를 얻는다.

세 점 [eqn: rm A(4,~1)], [eqn: rm B(2,~3)], [eqn: rm C(1,~2)]로 이루어진 삼각형의 넓이를 구하여라.

i) 이것은 아래처럼 행렬식 비슷한 계산을 이용해서 구한다고 배운 사람도 있을 것이다.

[eqn: dmatrix{~ 4~ & 2~& 1~ & 4 ~#~ 1~ & 3~ & 2~ & 1 ~}` = (4 cdot 3) + (2 cdot 2) + (1 cdot 1) - (2 cdot 1) - (1 cdot 3) - (4 cdot 2 ) = 12 + 4 + 1 - 2 - 3 - 8 = 4]

혹은 아래와 같이 구하기도 한다.

[eqn: dmatrix{` 4 `&` 1 `#` 2 `&` 3 `#` 1 `&` 2 `#` 4 `&` 1` } ` = (4 cdot 3) + (2 cdot 2) + (1 cdot 1) - (1 cdot 2) - (3 cdot 1) - (2 cdot 4 ) = 12 + 4 + 1 - 2 - 3 - 8 = 4]

구하는 넓이는 이것의 절대값의 절반인 [eqn: 2]를 얻는다.

ii) 벡터 연산을 할 줄 안다면 행렬식을 이용하여 더욱 쉽게(?) 구할 수 있다. 위의 문제는 두 벡터 [eqn: rm vec CA = vec OA - vec OC = (4,~1) - (1,~2) = (3,~-1)]와 [eqn: rm vec CB = vec OB - vec OC = (2,~3) - (1,~2) = (1,~1)]로 이루어진 삼각형의 넓이를 구하는 문제와 같다. 이게 이해하기 어렵다면 원점을 점[eqn: rm C (1,~2)]로 평행이동 했을 때 나머지 두 좌표를 구한다고 생각하면 된다.

[eqn: dmatrix{`~~ 3~ & 1 `#~ -1~ & 1 `} `= 4] 이므로 이것의 절대값의 절반인 [eqn: 2]가 구하는 삼각형의 넓이다.

이러한 방법은 좌표평면에서만 해당한다. [eqn: 3]차원 공간에서 두 벡터로 이루어진 삼각형의 넓이는 이러한 방법으로 구할 수 없고 벡터의 외적을 이용해서는 구할 수 있다. 벡터의 외적에 대한 자세한 설명은 뒤에서 하겠다.

세 공간벡터 [eqn: rm vec OA = (3,~0,~0)], [eqn: rm vec OB = (1,~2,~0)], [eqn: rm vec OC = (0,~0,~2)]로 만들어지는 평행육면체의 부피를 구하여라.

i) 세 벡터의 합을 구하기 위해 공간에 그려지는 평행육면체의 부피를 구하라는 뜻이다. [eqn: xy]평면을 이 도형의 밑면으로 잡을 때 이 도형은 밑넓이가 [eqn: 6]이고(맨 처음 예제의 결과) 높이가 [eqn: 2] 인 (밑면이 평행사변형인)사각기둥의 부피와 같다. 따라서 구하는 부피는 [eqn: 12]를 얻는다.

ii) [eqn: dmatrix{`` 3 ``& 1 ``& 0 ``# 0 & 2 & 0 # 0 & 0 & 2 } = 3 cdot 2 cdot 2 = 12] 이므로 구하는 부피는 이것의 절대값인 [eqn: 12]를 얻는다.

공간위의 네 점, [eqn: rm O(0,~ 0,~ 0)], [eqn: rm A (3,~0,~0)], [eqn: rm B (1,~2,~0)], [eqn: rm C (0,~0,~2)]을 꼭지점으로 갖는 삼각뿔의 부피를 구하시오.

i) [eqn: xy]평면을 이 삼각뿔의 밑면으로 잡아서 밑넓이는 [eqn: 3]이고 높이가 [eqn: 2]인 삼각뿔의 부피를 구하면 삼각뿔의 부피는 [eqn: 2]를 얻는다.

ii) 앞의 평행육면체와 비교하면 평행육면체의 부피의 [eqn: 1 over 6]이 구하는 부피이다. 그 이유는 평행육면체를 반으로 쪼개서 [eqn: rm triangle OAB]를 밑면으로 하는 삼각기둥을 만들면, 그 부피의 [eqn: 1 over 3]이 구하는 삼각뿔의 부피이기 때문이다.

행렬의 응용(Applications of Matrix)

행렬과 연립일차방정식

중학교 [eqn: 2]학년 과정에서 미지수가 두개인 연립 일차방정식을 배웠다. 그때는 주로 가감법과 대입법을 이용하여 문제를 풀었는데 이제는 약간 색다르게 행렬의 성질을 이용하여 풀 것이다. 행렬을 이용한 풀이는 미지수가 두개이던 세개이던 상관없이 연립일차방정식이기만 하면 그 풀이 과정은 똑같다. 그리고 원리적으로는 행렬을 이용한 풀이가 매우 쉬우나 계산까지 쉬운 것은 아니다. [eqn: 2]차 정사각행렬은 역행렬을 구하는 것이 비교적 쉽지만 [eqn: 3]차 이상은 복잡하기 때문이다. 먼저 행렬을 이용한 아래 식을 살펴보자.

[eqn: pmatrix{`` 3 ``& 2 ``# 4 & 1 } pmatrix{`` x ``# y } = pmatrix{`` 7 ``# 6 }] 이 식의 좌변의 행렬의 곱을 계산하면

[eqn: pmatrix{`` 3x + 2y ``# 4x +y } = pmatrix{`` 7 ``# 6 }] 이 된다.

두 행렬이 같다는 것은 각각의 성분이 같다는 뜻이므로 이 식은 아래 식과 같은 식이다.

[eqn: cases{`` 3x + 2y = 7 # `` 4x +~y =6 }]

이 연립일차방정식의 해는 [eqn: x = 1,~y=2] 이며 맨 처음의 행렬에 관한 식에 이 값을 대입해도 결과가 같다는 것을 알 수 있다. 문자를 써서 보다 일반적인 표현을 사용하자면 연립일차방정식

[eqn: cases{`` ax + by = p # `` cx +dy =q }] 을 아래와 같은 행렬

[eqn: pmatrix{`` a ``& b ``# c & d } pmatrix{`` x ``# y } = pmatrix{`` p ``# q }]로 나타낼 때(대응 시킬 때) 방정식의 해와 행렬을 이용한 식의 해가 같다는 것을 알 수 있다. 앞에서 짧게나마 이러한 대응이 존재할 때 isomorphic 하다고 했으며 이러한 대응을 isomorphism 이라고 했었다. 수학에서 ‘서로 달라 보이는 두 개가 같은 것이다.’는 사실을 아는 것은 때때로 매우 중요하다. 앞에도 잠깐 언급했지만 함수, 좌표, 복소수를 벡터로 취급할 수 있다는 것을 배웠고 이제는 연립일차방정식을 행렬로 취급할 수 있다는 것을 배웠다.

역사적인 예로 순수한 기하학 문제인 삼대 작도불능문제(임의의 각의 삼등분선 작도, 부피가 두배인 정육면체의 작도, 원의 넓이와 같은 정사각형의 작도)는 기하학을 이용해서는 풀지 못했지만 이것을 대수문제로 바꾸어서(대응시켜서) 이것의 불가능함을 증명한 경우가 있다. 적절한 대응관계를 통하여 모르는 문제를 아는 문제로 바꿀 줄만 안다면 몰랐던 문제의 풀이는 정말 쉬워진다. 어려운 수학문제를 푸는 요령 중에 하나가 바로 모르는 문제를 아는 문제로 바꾸는 것이다. 연립일차방정식을 행렬 문제로 변환할 때 얻게 되는 이점이 있다. 결론부터 말하자면 역행렬을 구할 줄 알고 행렬의 곱을 계산할 줄 안다면 원리적으로 어떠한 연립일차방정식 문제도 풀 수 있다.

고등학교 과정에서는 이렇게 표기하지 않지만 쓰기 편하게 다음과 같이 표현하기로 약속하자.

[eqn: pmatrix{`` a ``& b ``# c & d } ~~Rarrow~~ A],    [eqn: pmatrix{`` x ``# y } ~~Rarrow~~ rm x],    [eqn: pmatrix{`` p ``# q } ~~Rarrow~~ rm p],    [eqn: pmatrix{`` x ``&`` y ``} ~~Rarrow~~ {rm x}^T]

이렇게 하면

[eqn: cases{`` ax + by = p # `` cx +dy =q }]   [eqn: Lrarrow]   [eqn: pmatrix{`` a ``& b ``# c & d } pmatrix{`` x ``# y } = pmatrix{`` p ``# q }]   [eqn: Lrarrow]   [eqn: A rm x = p]

이 세 가지는 모두 같은 표현이 된다.

[eqn: a !=0]일 때 일차 방정식 [eqn: ax = b] 의 풀이는 이미 알고 있다. 양변에 [eqn: a]의 역수를 곱하면

[eqn: 1 over a cdot ax = 1 over a cdot b] 이므로 이식을 정리하면

[eqn: x = b over a = a^-1 b = ba^-1]이다.

이와 마찬가지로 [eqn: det(A) !=0]일 때 즉, [eqn: A^-1]가 존재할 때 행렬로 표현한 연립일차방정식 [eqn: A rm x = p]의 풀이는 양변의 왼쪽에 [eqn: A]의 역행렬을 곱하면 된다.

[eqn: A^-1 ( A rm x) = {it A^-1 } p != p it A^-1] 이므로 이 식을 정리하면

[eqn: rm x = {it A}^-1 p != p {it A}^-1] 를 얻는다.

수십번(?) 이야기 하는 것 같지만 행렬의 곱셈은 교환법칙이 성립하지 않기 때문에 곱하는 순서를 꼭 지켜야만 한다. 한 행렬을 좌변의 왼쪽에 곱했다면 우변에도 왼쪽에 곱해야 한다. 어떤 책에는 다음과 같은 방법으로 설명이 되어 있다.

행렬로 표현한 연립일차방정식 [eqn: pmatrix{`` a ``& b ``# c & d } pmatrix{`` x ``# y } = pmatrix{`` p ``# q }] 의 해는 [eqn: D=ad-bc !=0] 일 때

[eqn: pmatrix{`` x ``# y } = 1 over {ad - bc} pmatrix{~~ d~&~ -b ~# -c & ~~a } pmatrix{`` p ``# q }] 이다.

만약 이런 식으로 공부를 하면 알 수 없는 공식을 하나 추가로 외워야 하고 전체적인 흐름을 파악할 수 없으며 당연히 약간 꼬아서 머리를 쓰게 만드는 문제는 풀 수 없다. 앞에서도 보였지만 행렬을 이용한 방정식의 풀이는 일차방정식 [eqn: ax=b]와 매우 비슷하다. 그러니 새로 배워야 하는 것도 없다. 단지 이러한 대응관계가 있다는 것만 알면 되는 것이다. 이미 말한 것처럼 역행렬과 행렬의 곱을 계산할 줄 안다면 미지수가 몇 개이던 상관없이 연립 일차방정식은 위와 같은 방법으로 풀 수 있다.

다음 연립일차방정식들을 역행렬을 이용하여 해를 구하시오.

[eqn: cases{`` 2x -3 y = 1 # `` -x +y = -1 }]

위 방정식을 행렬로 표현하면 [eqn: pmatrix{`` 2 ``& -3 ``# -1 & 1 } pmatrix{`` x ``# y } = pmatrix{`` 1 ``# -1 }] 와 같다. 먼저 [eqn: A = pmatrix{`` 2 ``& -3 ``# -1 & 1 }]의 역행렬을 구해보자. [eqn: det (A) = 2-3 = -1] 이므로

[eqn: A^-1 = 1 over -1 pmatrix{`` 1 ``& 3 ``# 1 & 2 } = - pmatrix{`` 1 ``& 3 ``# 1 & 2 }] 이다. 따라서

[eqn: pmatrix{`` x ``# y } = - pmatrix{`` 1 ``& 3 ``# 1 & 2 } pmatrix{`` 1 ``# -1 } = - pmatrix{`` -2 ``# -1 } = pmatrix{`` 2 ``# 1 }] 이며, 구하는 해는 [eqn: x=2,~y=1]이다.

이러한 방법이 기존의 가감법이나 대입법보다 어렵게 느껴질 수 있다. 실제로 어떻게 구하던 결과는 마찬가지다. 내가 말하고 싶은 것은 이렇게 계산하는 방법에도 익숙해져야 한다는 것이다. 어떻게 계산하던 그것은 자신의 권한이지만 두 가지(가감법이나 대입법 vs. 행렬)를 알고 있는데 자기가 편한 방법을 사용하는 것과 한 가지(가감법이나 대입법) 방법밖에 모르기 때문에 어쩔 수 없이 그것(가감법이나 대입법)을 사용하는 것은 다르다.

[eqn: cases{`` 2x - y = 3 # `` x + 3y = -2 }]

이 방정식 역시 행렬로 표현하면 [eqn: pmatrix{`` 2 ``& -1 ``# 1 & 3 } pmatrix{`` x ``# y } = pmatrix{`` 3 ``# -2 }] 이다. [eqn: dmatrix{`` 2 ``& -1 ``# 1 & 3 } = 6 + 1 = 7] 이므로

[eqn: A^-1 = 1 over 7 pmatrix{`` 3 ``& 1 ``# -1 & 2 }] 이다. 따라서 [eqn: pmatrix{`` x ``# y } = 1 over 7 pmatrix{`` 3 ``& 1 ``# -1 & 2 } pmatrix{`` 3 ``# -2 } = 1 over 7 pmatrix{`` 7 ``# -7 } = pmatrix{`` 1 ``# -1 }] 을 얻는다.

이런 문제를 푸는 데는 약간의 요령과 경험이 필요하다.

만약 [eqn: A^-1 = pmatrix{`` 3 over 7 ``& 1 over7 ``# - 1 over 7 & 2 over 7 }] 이라고 놓고 계산을 하면 [eqn: pmatrix{`` x ``# y } = pmatrix{`` 3 over 7 ``& 1 over7 ``# - 1 over 7 & 2 over 7 } ` pmatrix{`` 3 ``# ` # -2 } = pmatrix{`` 9 over 7 - 2 over 7 ``# - 3 over 7 - 4 over 7 } = pmatrix{`` 1 ``# -1 }] 과 같이 되어 계산이 매우 복잡해진다. 행렬을 먼저 곱한 다음에 분수를 나중에 곱하자. 다시 말하면 [eqn: left( 1 over k B right) rm p] 보다 [eqn: 1 over k (B` rm p)]이 계산이 훨씬 편하다.

역행렬이 존재하지 않는 연립일차방정식

지금까지 역행렬이 존재하는 경우 즉 [eqn: det(A) !=0] 인 경우를 살펴보았다. 그러면 역행렬이 존재하지 않는 경우는 어떻게 구할까? 대답은 간단하다. 해가 없거나 해가 무수히 많거나 둘 중 하나이다. 그러면 언제 해가 없고 언제 해가 무수히 많을까? 이것도 미지수가 두개인 경우는 대답이 간단하다. 두 식이 같으면 해가 무수히 많고 다르면 해가 없다. 어려운 말 같지만 직접 예제를 풀어보면 어렵지 않다.

다음 연립방정식들의 해를 구하시오.

[eqn: cases { ~2x + y &= 1~~cdots~ (1) # ~ 4x +2y &= 2 ~~cdots~(2) }]

이 방정식을 행렬로 표현하면 [eqn: pmatrix{`` 2 ``& 1 ``# 4 & 2 } pmatrix{`` x ``# y } = pmatrix{`` 1 ``# 2 }] 이다. [eqn: dmatrix{`` 2 ``& 1 ``# 4 & 2 } = 4 - 4 = 0] 이므로 이 행렬은 역행렬이 존재하지 않으며, 연립방정식의 해는 없거나 무수히 많다. 위 방정식을 살펴보면 (1)식의 양변을 두배하면 (2) 식이 된다. 두 식은 같은 식이므로 답은 무수히 많다. [eqn: x]와 [eqn: y]가 (1)식을 변형한 [eqn: y = -2x + 1] 이라는 관계만 만족한다면 [eqn: x,~y]값이 얼마이던 상관없이 연립방정식은 항상 성립한다.

[eqn: cases { ~2x + y &= 2~~cdots~ (1) # ~ 4x +2y &= 2 ~~cdots~(2) }]

이 문제는 앞의 문제와 상수항만이 다르다. 앞의 문제와 같이 역행렬이 존재하지 않는데 (1)식의 양변에 무엇을 곱하던지 (2)식과 같지 않다. 결국 두 식은 다르며 구하는 해는 없다.

중학교 [eqn: 2]학년 과정으로 되돌아가면 연립방정식에서 각각의 방정식은 좌표평면에서의 직선의 방정식이다. 두 직선의 기울기가 같지 않으면([eqn: det(A) !=0] 이면) 두 직선은 한 점에서 만나기 때문에 해는 오직 하나 존재하게 되고, 기울기가 같다면([eqn: det(A) =0] 이면) 두 직선은 평행하던지 일치한다. 일치할 경우는 처음 예제처럼 해가 무수히 많게 되고 평행하다면 둘째 예제처럼 해가 없게 된다. 지금까지의 내용을 정리하면 다음과 같다.

연립방정식 [eqn: A rm x = p]의 해가 오직 하나 존재한다.	[eqn: Lrarrow]	행렬 [eqn: A]의 역행렬이 존재한다.	[eqn: Lrarrow]	[eqn: det(A) !=0]이다.

연립방정식 [eqn: A rm x = p]의 해가 존재하지 않거나 무수히 많다.	[eqn: Lrarrow]	행렬 [eqn: A]의 역행렬이 존재하지 않는다.	[eqn: Lrarrow]	[eqn: det(A) =0]이다.

문제에서 ‘연립방정식의 해가 존재 할 때’라는 구절이 있다면 언제나 [eqn: det(A) !=0]를 떠올리자. 또한 ‘연립방정식의 해가 존재하지 않을 때’ 혹은 ‘~~ 이외의 해가 존재할 때’라는 구절이 있다면 언제나 [eqn: det(A) =0]를 떠올리자.

연립일차방정식 [eqn: pmatrix{`` 2 `` & 3 ``# 4 & a } pmatrix{`` x ``# y } = pmatrix{`` 0 `` # 0 }] 이 [eqn: x=y=0] 이외의 해를 가질 때 [eqn: a]의 값을 구하여라.

위 식의 우변(상수항)을 보면 [eqn: vec 0] 이다. 이러한 경우는 [eqn: x=y=0]이 이 연립방정식의 해라는 것은 너무나 자명하다. 이러한 해를 자명한 해(trivial solution - 자명해, 뻔해)라고 한다. 문제에 있는  ‘[eqn: x=y=0] 이외의 해를 갖는다.’는 것은 무슨 뜻인지 살펴보자. 해가 [eqn: 2]개라는 뜻일까? 아니다. 연립일차방정식의 해의 개수는 반드시 다음 셋 중의 하나이다.

해가 오직 하나 존재한다.        해가 없다.        해가 무수히 많다.

그렇기 때문에 ‘[eqn: x=y=0] 이외의 해를 갖는다.’는 조건을 만족하기 위해서는 해가 무수히 많아야만 한다. 해가 무수히 많다는 것은 [eqn: dmatrix{`` 2 `` & 3 ``# 4 & a } = 2a - 12 = 0] 이라는 뜻이다. 그러므로 [eqn: a=6]을 얻는다.

연립일차방정식 [eqn: pmatrix{`` 3 `` & 1 ``# 1 & 3 } pmatrix{`` x ``# y }` = lambda pmatrix{`` x `` # y }] 이 [eqn: x=y=0] 이외의 해를 가질 때, 실수 [eqn: lambda](lambda)의 값을 구하여라.

위 식의 우변은 상수항이 아니지만 [eqn: x=y=0]이 해라는 것은 자명하다. 이 문제는 다음과 같이 앞의 예제와 같은 꼴로 변형시켜서 문제를 푼다.

[eqn: pmatrix{`` 3 `` & 1 ``# 1 & 3 } pmatrix{`` x ``# y } = lambda pmatrix{`` x `` # y } = lambda E` pmatrix{`` x `` # y } = pmatrix{`` lambda `` & 0 ``# 0 & lambda } pmatrix{`` x `` # y }] 우변을 좌변으로 이항하면

[eqn: pmatrix{`` 3 `` & 1 ``# 1 & 3 } pmatrix{`` x ``# y } - pmatrix{`` lambda `` & 0 ``# 0 & lambda } pmatrix{`` x `` # y } =* left[ pmatrix{`` 3 `` & 1 ``# 1 & 3 } - pmatrix{`` lambda `` & 0 ``# 0 & lambda } right] pmatrix{`` x `` # y } = pmatrix{`` 3 - lambda `` & 1 ``# 1 & 3 - lambda } pmatrix{`` x `` # y } = pmatrix{`` 0 `` # 0 }] 를 얻으며 주어진 문제는 연립방정식 [eqn: pmatrix{`` 3 - lambda `` & 1 ``# 1 & 3 - lambda } pmatrix{`` x `` # y } = pmatrix{`` 0 `` # 0 }] 이 [eqn: x=y=0] 이외의 해를 가질 때 [eqn: lambda]의 값을 구하는 문제와 같다. 결국 이차방정식 [eqn: dmatrix{`` 3 - lambda `` & 1 ``# 1 & 3 - lambda }` = (3 - lambda)^2 - 1 = 0] 의 해와 같으며 [eqn: lambda = 2,~4]를 얻는다. 위에서 *표한 부분은 분배법칙을 적용하였다. 이와 같은 계산에 익숙하지 않은 사람은 다음과 같이 연립방정식으로 변형한 후 계산해도 좋다.

[eqn: pmatrix{`` 3 `` & 1 ``# 1 & 3 } pmatrix{`` x ``# y } = lambda pmatrix{`` x `` # y } ~~ Lrarrow~~ cases { 3x + y = lambda x # x + 3y = lambda y } ~~ Lrarrow~~ cases { (3 - lambda)x + y = 0 # x + (3 - lambda)y = 0 } ~~ Lrarrow~~ pmatrix{`` 3 - lambda `` & 1 ``# 1 & 3 - lambda } pmatrix{`` x `` # y } = pmatrix{`` 0 `` # 0 }]

이 문제를 [eqn: A rm x = lambda x] 처럼 표현 하면 다음과 같은 정형화된 풀이를 얻는다.

[eqn: A rm x = lambda x =( lambda {it E})` x] 의 우변을 좌변으로 이항하면

[eqn: A {rm x} - ( lambda E)` {rm x} = ( A - lambda E)` {rm x} = vec 0] 이 방정식이 [eqn: x=y=0] 이외의 해를 갖기 위한 조건은

[eqn: det ( A - lambda E) = 0] 을 만족하는 [eqn: lambda] 값을 구하는 것이다. 만일 [eqn: A]가 [eqn: n]차 정사각행렬일 경우 이 식은 [eqn: lambda]에 대한 [eqn: n]차 방정식이 된다. 수학을 전공한 사람들은 [eqn: n]의 값에 관계없이 최고차항의 계수가 언제나 [eqn: 1] 이라는 사실 때문에 [eqn: det ( lambda E - A) = 0] 라는 식을 더 좋아한다.

고유값과 고유벡터(eigenvalue and eigenvector)

이 부분은 고등학교 과정은 아니다. 그렇기에 시험에 ‘다음 행렬의 고유값과 고유벡터를 구하여라.’ 따위의 문제는 나오지 않는다. 하지만 따지고 보면 결국 그것을 구하는 문제가 가끔 있다. 대표적인 문제가 바로 앞의 예제에서 [eqn: lambda] 값을 구하는 문제이다. 보통 책에는 [eqn: lambda] 대신 [eqn: k]라고 적혀 있는데 고유값 구하는 문제에서는 대부분 [eqn: lambda] 라는 문자를 사용하므로 일부러 그렇게 적은 것이다. 이러한 문제를 처음 접하는 사람은 매우 어렵다고 느끼겠지만 익숙해지면 매우 쉬운 문제이다. 대학생 중에 선형대수를 처음 수업 받는 사람은 이 문제 때문에 머리가 아프지만(나도 처음 배울 때는 정말로 무슨 소리인지 못 알아들었다.) 진짜로 쉬운 문제이다. 가끔 행렬에 관한 문제를 보다가 ‘아, 이것은 고유값 구하는 문제구나!’라는 생각이 들면 그 문제가 반가울 것이다.

[eqn: rm x = it pmatrix{`` x ``# y }]은 열벡터(column vector)이다. 이것은 [eqn: (x,~y)]와 같이 좌표로 생각할 수도 있다. 뿐만 아니라 [eqn: vec x = (x,~y)]와 같이 벡터로도 생각할 수 있다. 물론 [eqn: {rm x}^T = it pmatrix{`` x ``& y ``}]와 같이 행벡터(raw vector)로 생각할 수도 있다. 일단은 생각하기 편하게 [eqn: 2]차 정사각행렬로 설명하겠다.

[eqn: A = pmatrix{`` 1 `` & 2 ``# 2 & 1 }] 라 할 때 다음을 계산해 보자.

[eqn: A pmatrix{`` 2 ``# 1 } = pmatrix{`` 1 `` & 2 ``# 2 & 1 } pmatrix{`` 2 ``# 1 } = pmatrix{`` 4 ``# 5 }]	[eqn: A pmatrix{`` 1 ``# 1 } = pmatrix{`` 1 `` & 2 ``# 2 & 1 } pmatrix{`` 1 ``# 1 } = pmatrix{`` 3 ``# 3 } = 3 pmatrix{`` 1 ``# 1 }]

[eqn: A pmatrix{`` 1 ``# 2 } = pmatrix{`` 5 ``# 4 }]	[eqn: A pmatrix{`` 2 ``# 2 } = pmatrix{`` 6 ``# 6 } = 3 pmatrix{`` 2 ``# 2 }]

[eqn: A pmatrix{`` 0 ``# 1 } = pmatrix{`` 2 ``# 1 }]	[eqn: A pmatrix{`` 1 ``# -1 } = pmatrix{`` -1 ``# 1 } = - pmatrix{`` 1 ``# -1 }]

[eqn: A pmatrix{`` 1 ``# -2 } = pmatrix{`` -3 ``# 0 }]	[eqn: A pmatrix{`` 2 ``# -2 } = pmatrix{`` -2 ``# 2 } = - pmatrix{`` 2 ``# -2 }]

[eqn: A pmatrix{`` -1 ``# 3 } = pmatrix{`` 5 ``# 1 }]	[eqn: A pmatrix{`` -1 ``# 1 } = pmatrix{`` 1 ``# -1 } = - pmatrix{`` -1 ``# 1 }]

[eqn: A]와 열벡터 [eqn: rm x]와의 곱은 위 계산의 왼쪽 식에서 보듯이 일반적으로 [eqn: rm x]와는 무관한 열벡터를 얻는다. 이를 식으로 표현하면 [eqn: A rm x = y]라고 쓸 수 있다. 하지만 오른쪽 식에서 보듯이 아주 특별한 어떠한 열벡터 [eqn: rm x]는 ‘실수배’라는 차이만을 제외하고는 곱하기 전과 후가 같다는 것을 알 수 있다. 이것을 식으로 표현하면 [eqn: A rm x = lambda x]라고 쓸 수 있으며, 이 등식을 만족하는 특별한 상수 [eqn: lambda]를 행렬 [eqn: A]의 고유값(eigenvalue)이라고 하며, 각각의 [eqn: lambda]에 대입했을 때 연립일차방정식 [eqn: A rm x = lambda x]의 해가 되는 열벡터 [eqn: rm x]를 고유값 [eqn: lambda]에 대응하는 고유벡터(eigenvector)라 한다.

이것은 여담이지만, 내 블로그 주소가 http://blog.daum.net/eigenvalue 이다. ^^;

위의 보기에서는 고유값 [eqn: 3]에 대응하는 고유벡터는 [eqn: rm x = pmatrix{`` 1 ``# 1 }], [eqn: rm x = pmatrix{`` 2 ``# 2 }] 등이 있다. 고유값이 같은 벡터들은 서로 실수배 차이밖에는 나지 않으므로 같은 것으로 취급한다. 다른 말로 하면 벡터의 크기만 다를 뿐 방향은 같다. 방향이 정 반대인 경우도 있다. 고유값 [eqn: -1] 에 대응하는 고유벡터도 알 수 있을 것이다. [eqn: 0]은 고유값이 될 수 있지만 [eqn: vec 0]은 고유벡터가 될 수 없다.

식 [eqn: A rm x = lambda x] 을 다시 살펴보면 언뜻 생각하기로 ‘양변을 [eqn: rm x]로 나누어주면 [eqn: A = lambda] 가 되네?’라고 생각할 수 있겠지만 이것은 수의 곱이 아니라 행렬의 곱임을 기억해 두자. 열벡터 [eqn: rm x]는 역행렬이 존재하지 않으므로 위와 같은 계산을 할 수 없다. 또한 [eqn: A]는 행렬이고 [eqn: lambda]는 실수이므로 이 둘이 같을 수는 없다. 이제 고유값을 구하는 방법을 알아보자. 앞에서 말했듯이 [eqn: A rm x = lambda x] 를 만족하는 [eqn: lambda]와 [eqn: rm x]를 구하면 된다. 그런데 이 문제의 정형화된 풀이는 이미 앞에서 제시했다. 행렬 [eqn: A]가 [eqn: 2]차, [eqn: 3]차, [eqn: 4]차정사각행렬이던 상관없이 [eqn: lambda]에 대한 방정식 [eqn: det ( A - lambda E) = 0]의 근이 고유값이 되고 각 고유값에 대한 연립방정식의 해가 고유벡터가 된다.

행렬 [eqn: A = pmatrix{`` 5 `` & 2 ``# 2 & 5 }]의 고유값과 고유벡터를 구하여라.

다시 설명하면 이 문제는 연립일차방정식 [eqn: pmatrix{`` 5 `` & 2 ``# 2 & 5 } pmatrix{`` x ``# y } = lambda pmatrix{`` x `` # y } ~~Lrarrow~~ pmatrix{`` 5 - lambda `` & 2 ``# 2 & 5 - lambda } pmatrix{`` x ``# y } = pmatrix{`` 0 `` # 0 }]을 만족하는 [eqn: lambda]와 그 때의 [eqn: rm x] 값을 구하는 문제이다.

결국 이차방정식 [eqn: det(A - lambdaE) = dmatrix{`` 5 - lambda `` & 2 ``# 2 & 5- lambda } = (5- lambda)^2 - 4 = 0] 의 근을 구하는 문제와 같으며 [eqn: lambda = 7,~3]을 얻는다.

[eqn: lambda = 7]일 때 주어진 방정식은 [eqn: pmatrix{`` -2 `` & 2 ``# 2 & -2 } pmatrix{`` x ``# y } = pmatrix{`` 0 `` # 0 }]이 되며 [eqn: y = x] 가 방정식의 해 이므로 [eqn: pmatrix{`` x ``# x }]가 고유벡터가 되며 특별히 [eqn: x=1]을 잡으면 [eqn: pmatrix{`` 1 ``# 1 }]이 된다.

[eqn: lambda = 3]일 때 주어진 방정식은 [eqn: pmatrix{`` 2 `` & 2 ``# 2 & 2 } pmatrix{`` x ``# y } = pmatrix{`` 0 `` # 0 }]이 되며 [eqn: y = -x] 가 방정식의 해 이므로 [eqn: pmatrix{`` x ``# -x }]가 고유벡터가 되며 특별히 [eqn: x=1]을 잡으면 [eqn: pmatrix{`` 1 ``# -1 }]이 된다.

주어진 행렬이 [eqn: pmatrix{`` a `` & b ``# b & a }]와 같은 특수한 경우 고유값은 언제나 [eqn: lambda = a +b,~a-b]를 얻으며 각각에 대응하는 고유벡터는 [eqn: pmatrix{`` 1 ``# 1 },~pmatrix{`` 1 ``# -1 }]이다. 보통 문제집(혹은 시험)에는 다음과 같은 문제가 실리게 된다.

행렬 [eqn: A = pmatrix{`` 2 `` & 3 ``# 1 & 2 },~X = pmatrix{`` x ``# y }]에 대하여 연립방정식 [eqn: AX = kX] 의 해가 [eqn: pmatrix{`` x ``# y } = pmatrix{`` 0 ``# 0 }] 이외의 해를 가질 때, 실수 [eqn: k]의 값은?

이 문제는 고유값을 구하는 문제라는 것을 알 수 있다. 따라서 이차방정식

[eqn: dmatrix{`` 2 - k `` & 3 ``# 1 & 2 - k } = (2-k)^2 - 3 = 0] 의 근이 구하려는 값이다. 이 방정식을 풀면 [eqn: k = 2 +- sqrt 3]을 얻는다. 고유값 문제를 만날 때 이러한 정형화된 풀이를 알고 있다면 남들보다 훨씬 빨리 풀 수 있다.

두 식 [eqn: d over dx f(x) = lambda f(x)], [eqn: f(0) = a] 를 만족하는 [eqn: f(x)]를 구하시오.

미분을 배우지 않은 사람에게 이 문제를 설명하는 것은 매우 어렵다. 고유값 문제는 행렬 뿐 아니라 이러한 미분방정식에도 등장한다는 것을 보이기 위해서 적어보았다. 설명 없이 답만을 제시하면 [eqn: f(x) = a e^{lambda x}]이 문제의 답이다. 이때의 [eqn: f(x)]는 고유함수(eigenfuction)라 한다.

닮음변환(유사변환, similar transformation)

행렬 [eqn: A]를 역행렬이 존재하는 행렬 [eqn: P]와 다음과 같이 곱하여 새로운 행렬 [eqn: B]를 만드는 과정을 닮음변환이라고 하며, 이때 [eqn: A]는 [eqn: B]와 similar 하다고 한다.

[eqn: B = P^-1 A P]

물론 [eqn: Q = P^-1]라 한다면 [eqn: Q^-1 = left( P^-1 right) ^-1 = P] 이므로 다음과 같이 쓸 수도 있다.

[eqn: B = QAQ^-1]

이러한 형태의 곱은 고등학교 과정에서 배우기 때문에 익숙할 것이다. 다만 닮음변환이라는 단어는 배우지 않는다. 닮음변환 [eqn: B = P^-1 A P]에서는 다음과 같은 성질이 있다.

[eqn: A = PBP^-1]

[eqn: B^n = P^-1 A^n P],     [eqn: A^n = P^-1 B^n P]

[eqn: det(B) = det(A)]

[eqn: { rm tr }(B) = { rm tr }(A)]

[eqn: B = P^-1 AP] 일 때, [eqn: A = PBP^-1] 을 보이시오.

[eqn: B = P^-1 A P] 의 양변의 왼쪽에 [eqn: P]를 오른쪽에 [eqn: P^-1]를 곱하면(순서가 중요함)

[eqn: P B P^-1 = P left( P^-1 A P right)P^-1 = left( PP^-1 right) A left( PP^-1 right) = EAE = A]

[eqn: B = P^-1 AP] 일 때, [eqn: B^n = P^-1 A^n P] 를 증명하시오.

[eqn: B^n &= left( P^-1 A P right) ^n # &= left( P^-1 A P right) left( P^-1 A P right) left( P^-1 A P right)`` cdots left( P^-1 A P right) {} atop {} # &= P^-1 A left( P^-1 P^-1 right) A left( P^-1 P^-1 right) A left( P^-1 cdots P^-1 right) A P^-1 # &= P^-1 A^n P {} atop {}]

[eqn: B = P^-1 AP] 일 때, [eqn: det(B) = det(A)] 임을 보이시오.

[eqn: det(B) = det left(P^-1 A P right) = det left(P^-1 right) `` det(A)``det(P) = 1 over {det(P)} `` det(A)``det(P) = det(A)]

[eqn: B = P^-1 AP] 일 때, [eqn: {rm tr } (B) = {rm tr } (A)] 임을 보이시오.

역시 위의 결과를 적용하면 된다.

[eqn: {rm tr } (B) = {rm tr } left( P^-1 AP right) = {rm tr } left( AP P^-1 right) = {rm tr } ( A E ) = {rm tr } (A)]

행렬 [eqn: A = pmatrix{`` -7 `` & 10 ``# -3 & 4 }], [eqn: P = pmatrix{`` 2 `` & 5 `# 1 & 3 `}] 일 때, 닮음변환 [eqn: B = P^-1 A P] 를 구하여라.

[eqn: P^-1 = pmatrix{`` 3 `` & -5 ``# -1 & 2 }] 이므로

[eqn: B = P^-1 (A P ) = pmatrix{`` 3 `` & -5 ``# -1 & 2 } left[ pmatrix{`` -7 `` & 10 ``# -3 & 4 } pmatrix{`` 2 `` & 5 ``# 1 & 3 } right] = pmatrix{`` 3 `` & -5 ``# -1 & 2 } pmatrix{`` -4 `` & -5 ``# -2 & -3 } = pmatrix{`` -2 `` & 0 ``# 0 & -1 }]

위 식의 [eqn: B]처럼 주대각성분 이외의 모든 성분이 [eqn: 0]인 정사각행렬을 대각행렬(diagonal matrix)이라고 한다. 단위행렬은 대표적인 대각행렬이다. 정사각행렬 [eqn: A]에 적당한 정사각행렬 [eqn: P]를 이용하여 위와 같이 닮음변환 시켜 대각행렬을 만드는 과정을 대각화(diagonalization)라고 한다.

[eqn: n]차 대각행렬의 집합은 곱셈에 관하여 닫혀있으며, 교환법칙이 성립함을 증명하시오.

간단히 [eqn: 2]차 정사각행렬의 경우만 보이겠다. [eqn: n]차 정사각행렬로 일반화는 시키는 것은 쉽다.

[eqn: pmatrix {` a &~ 0 `#` 0 &~ b `} pmatrix {` x &~ 0 `#` 0 &~ y `}` = pmatrix {` ax &~ 0 `#` 0 &~ by `}]

[eqn: pmatrix {` x &~ 0 `#` 0 &~ y `} pmatrix {` a &~ 0 `#` 0 &~ b `}` = pmatrix {` xa &~ 0 `#` 0 &~ yb `}]

위 두 식을 보면 대각행렬끼리의 곱은 대각행렬이 되므로 곱셈에 관하여 닫혀있다는 것을 보였다. 또한, 곱셈 순서를 바꾸어도 같은 결과를 얻었으므로 곱셈에 대한 교환법칙이 성립함도 보였다.

행렬의 곱 [eqn: pmatrix{`` -7 `` & 10 ``# -3 & 4 } pmatrix{`` 2 ``# 1 },~ pmatrix{`` -7 `` & 10 ``# -3 & 4 } pmatrix{`` 5 ``# 3 }] 을 계산하시오.

앞의 문제에서 행렬을 오른쪽부터 곱했는데, 잘 살펴보면 계산하지 않고도 다음 결과를 얻는다.

[eqn: pmatrix{`` -7 `` & 10 ``# -3 & 4 } pmatrix{`` 2 ``# 1 } = pmatrix{`` -4 ``# -2 } = -2 pmatrix{`` 2 ``# 1 }]

[eqn: pmatrix{`` -7 `` & 10 ``# -3 & 4 } pmatrix{`` 5 ``# 3 } = pmatrix{`` -5 ``# -3 } = - pmatrix{`` 5 ``# 3 }]

여기에서 눈여겨 볼 것은 행렬 [eqn: A]의 고유값이 [eqn: -2,~-1]이며 각 고유값에 대응하는 고유벡터는 [eqn: pmatrix{`` 2 ``# 1 },~ pmatrix{`` 5 ``# 3 }] 라는 것이다. 행렬 [eqn: A]와 그 고유벡터로 이루어진 행렬 [eqn: P]에 대하여 [eqn: B = P^-1 AP]를 계산하였을 때 [eqn: B]는 대각행렬이 되며, [eqn: B]의 주대각 성분들은 모두 그 행렬의 고유값들이 된다. 따라서 대각행렬의 대각합은 고유값들의 합과 같고, 대각행렬의 행렬식은 고유값들의 곱과 같다. 닮음변환을 하여도 대각합과 행렬식은 변하지 않는다는 것을 이미 증명했다. 위 예제의 결과를 이용하면

[eqn: (-2) cdot(-1) = 2 = det(B) = det(A)]와

[eqn: (-2) + (-1) = {rm tr } (B) = {rm tr } (A)] 임을 알 수 있다.

이것을 일반화하면 다음과 같이 말할 수 있다.

[eqn: n]차 정사각행렬의 행렬식은 고유값들의 곱과 같고, 대각합은 고유값들의 합과 같다.

행렬 [eqn: A = pmatrix{`` -7 `` & 10 ``# -3 & 4 }]의 고유벡터가 [eqn: rm u = pmatrix{`` 5 ``# 3 },~ v= pmatrix{`` 2 ``# 1 }] 임을 이용하여 [eqn: A^n]을 구하여라.

[eqn: Q = pmatrix{`` rm u , `` & v } = pmatrix{`` 5 `` & 2 ``# 3 & 1 }] 이라 하면 [eqn: A rm u = -u], [eqn: A rm v = -2v] 이므로

[eqn: C = Q^-1 AQ = Q^-1 pmatrix{`` rm -u , `` & -2v } = pmatrix{`` -1 `` & 0 ``# 0 & -2 }]를 얻는다.

어떻게 계산했는지 이해가 안 간다면 [eqn: Q^-1 = pmatrix{`` -1 `` &~~ 2 ``# ~~3 & -5 }]를 대입하여 직접 [eqn: C] 를 계산해 보면 위의 결과를 얻을 것이다.

[eqn: C^{`n} = pmatrix{`` -1 `` & 0 ``# 0 & -2 }`^n = pmatrix{`` (-1)^n `` & 0 ``# 0 & (-2)^n }] 이고, [eqn: A = QC Q^-1] 이므로

[eqn: A^n = QC^{`n} Q^-1 &= pmatrix{`` 5 `` & 2 ``# 3 & 1 } pmatrix{`` (-1)^n `` & 0 ``# 0 & (-2)^n } pmatrix{`` -1 `` &~~ 2 ``# ~~3 & -5 } # &= pmatrix{`` 5 `` & 2 ``# 3 & 1 } pmatrix{`` -(-1)^n `` &~~~ 2(-1)^n ``# 3(-2)^n &~~ -5(-2)^n } matrix { # # } # &= pmatrix{`` -5(-1)^n + 6(-2)^n `` ~~& 10(-1)^n - 10(-2)^n ``# -3(-1)^n + 2(-2)^n ~~& 6(-1)^n -5(-2)^n }]

이러한 문제는 교과서나 문제집에서 몇 번 보았을 것이다. 비록 ‘고유값, 고유벡터’라는 말은 등장하지 않지만 말이다. 이것의 의미를 알면 이러한 문제를 만났을 때 지금까지 얻지 못한 새로운 눈을 얻게 될 것이다.

케일리-해밀턴 정리(Cayley-Hamilton's Theorem)

이 정리는 고등학교 교과과정은 아니기 때문에 교과서에는 나오지 않는다. 하지만 문제집에서는 꼭 나온다. 그러니 고등학교 교과과정 이상의 것을 여기에 적는다고 해서 너무 어렵다고 생각하지는 말아줬으면 좋겠다. 알아두면 좋은 것들을 적는 것이지 알아도 쓸데없는 것을 적지는 않으니까. 이 정리는 앞에 말한 고유값, 고유벡터를 알아야만 무슨 뜻인지 정확히 이해할 수 있다. 고유값, 고유벡터를 빼 놓은 케일리-해밀턴 정리는 수학I에서 외워야 하는 단순한 공식일 뿐이다.

행렬 [eqn: A = pmatrix{`` a `` & b ``# c & d }]의 고유값 구하는 문제로 돌아가 보면 고유값을 구하는 것은 [eqn: lambda]에 관한 이차방정식 [eqn: det(A - lambdaE) = dmatrix{`` a - lambda `` & b ``# c & d- lambda } = (a- lambda)(d- lambda) - bc = 0] 의 근을 구하는 것과 같다. 이 식을 풀어서 적으면 [eqn: lambda^2 - (a+d) lambda + (ad - bc) = 0] 혹은 [eqn: lambda^2 - { rm tr } (A) lambda + det(A) = 0] 을 얻는다. 근과 계수와의 관계에 의해서 고유값의 곱은 [eqn: det(A)]과 같고 고유값의 합은 [eqn: { rm tr }(A)]와 같다. 많이 익숙한 식이라고 느낄 것이다. [eqn: lambda]대신 [eqn: A]를 대입하고 상수항에 [eqn: E]를 곱하면 많이 보았던 케일리-해밀턴 정리

[eqn: A^2 - (a+d)A + (ad-bc)E = 0] 를 얻는다. 이 식은

[eqn: A^2 - {rm tr }(A)A + det(A) E = 0] 라고 쓸 수도 있다. 이 정리는 [eqn: 3]차 이상의 행렬에도 적용이 된다. 증명은 복잡하므로 생략한다. 이제 케일리-해밀턴 정리의 정체를 알았으니 이것에 익숙한 사람에게 고유값 구하는 문제는 더욱 쉬워진다.

행렬 [eqn: A = pmatrix{`` 4 `` & -3 ``# -1 & 2 },~X = pmatrix{`` x ``# y }]에 대하여 연립방정식 [eqn: AX = kX] 의 해가 [eqn: pmatrix{`` x ``# y } = pmatrix{`` 0 ``# 0 }] 이외의 해를 가질 때, 실수 [eqn: k]의 값의 합은?

익숙한 케일리-해밀턴 정리의 형태를 빌리면 구하는 [eqn: k]값은 이차방정식 [eqn: k^2 -6k + 5 = 0]의 근이다. 굳이 이차방정식을 풀 필요도 없이 근과 계수와의 관계에 의해서 [eqn: 6]을 얻는다.

[eqn: A = pmatrix{`` -2 `` & 7 ``# -1 & 3 }] 일 때, [eqn: A^3 + A^2 + A + E]를 계산하여라.

i) 직접 [eqn: A^2 ,~ A^3] 을 계산하여 위 식을 계산할 수 있으나 복잡하다.

ii) [eqn: { rm tr} (A) = 1,~det(A) = 1]이므로, 해밀턴 정리에 의해서 다음 등식이 성립한다.

[eqn: A^2 - A + E = 0] 이 식을 적절히 활용하면

[eqn: A^3 + A^2 + A + E &= ( A^2 -A + E)A + 2 A^2 + E #&= OA + 2 (A^2 - A + E) +2A - E = 2A-E {} atop {} #&= 2 pmatrix{`` -2 `` & 7 ``# -1 & 3 } - pmatrix{`` 1 `` & 0 ``# 0 & 1 }` = pmatrix{`` -5 `` & 14 ``# -2 & 5 }]

iii) 이것 역시 해밀턴 정리를 이용하는 풀이인데 둘째 풀이보다 쉽다고 느낄 것이다.

[eqn: A^2 - A + E = 0] 을 정리하면

[eqn: A^2 = A - E] 를 얻고 양변에 [eqn: A]를 곱하면

[eqn: A^3 = A^2 - A = (A -E) -A = -E] 를 얻는다. 이 값들을 주어진 식에 대입하면

[eqn: A^3 + A^2 + A + E = (-E) + (A-E) + A +E = 2A -E] 를 얻고 둘째 풀이처럼 구한다.

케일리-해밀턴 정리는 위와 같이 보통 높은 차수의 행렬에 관한 식을 낮은 차수로 변형시킬 때 사용한다. 이렇게 케일리-해밀턴 정리를 이용하는 이유는 분명하다. 행렬의 덧셈과 실수배는 비교적 계산하기 쉽지만 행렬의 곱(거듭제곱)은 계산이 복잡하기 때문이다.

행렬과 함수

아마도 고등학교과정의 행렬만을 배운 사람은 행렬과 함수의 관계에 대해서 한 번도 생각해 본 적이 없을 것이다. 나 역시 고등학교 때 그런 생각을 해 본적이 없다. 머리말에서 ‘행렬은 어떤 선형 함수에 대응한다.’라고 적었는데 이제는 행렬을 함수의 관점에서 바라보자.

먼저 함수의 뜻을 정확히 알아보자. 두 집합 [eqn: X,~ Y`]가 주어졌을 때, 집합 [eqn: X]의 모든 원소 각각에 대하여 집합 [eqn: Y`]의 원소가 하나씩 대응할 때, 이러한 대응관계를 함수(function)라고 한다. 나는 보통 함수를 ‘짝짓기’ 혹은 ‘자판기’라고 부르는데 그 이유는 자세히 적지 않겠다. 내가 대학교 다닐 때 ‘어떻게 하면 함수를 일상생활에서 접하는 것으로 쉽게 설명할 수 있을까?’라는 고민을 몇 달 동안 한 적이 있었다. 어느 날 자판기에서 커피를 뽑아 마시다가 문득 자판기가 함수와 같다는 사실을 깨달았다. 그 이후로 생활에서 함수로 표현되는 것이 무척 많다는 것도 깨달았다. 함수와 자판기가 어떻게 같을지는 스스로 생각해 보자.

넓은 의미에서 함수는 사상(mapping)과 같은 뜻으로 사용한다. 좁은 의미에서 함수는 [eqn: X,~ Y`]가 수의 집합일 경우에만 이야기 하는데, 특히 [eqn: X]가 자연수의 집합일 경우에는 수열(sequence)이라고 한다. 사상 가운데 공간(space)에서 같은 공간으로 대응하는 사상을 변환(transformation)이라 한다. 여기서 공간이란 기하학에서 말하는 [eqn: n]차원 공간 [eqn: ℝ^n] 뿐 아니라 vector space, Hilbert space 등도 포함해서 말하는 것이다. 변환의 예로는 좌표평면에서 평행이동, 대칭이동, 회전변환, 확대･축소변환 등이 있다. 사상 가운데 [eqn: X,~ Y`]가 함수의 집합일 때는 연산자(operator)라고 한다. 수학I 과정에서 배우는 [eqn: lim,~ sum] 등이 연산자이고 수학II 과정에서 배우는 미분, 적분 또한 연산자이다.

보통 함수는

[eqn: y = f(x)]	[eqn: f~ :~ x~ ->~~ y]

와 같은 표현을 많이 사용하지만, 변환이나 연산자의 경우에는

[eqn: { rm y}`` = A {rm x},]	[eqn: d over dx f(x) = f`'(x),]	[eqn: int { f(x)` } dx = F`(x) + C]

와 같은 곱셈형태의 표현을 많이 사용한다. 첫째 식은 행렬의 곱셈이고 나머지 둘은 미분과 적분을 뜻하는데, 모양은 곱셈 형태이지만 [eqn: d over dx]과 [eqn: f(x)]을 곱해서 [eqn: f`'(x)]을 얻었다는 뜻은 아니다.

한 가지 더 말한다면 함수, 변환, 연산자, 사상 등을 엄격하게 구분하지는 않는다. 나중에 수학과 대학교 고급과정에 들어간다면 함수와 벡터를 같게 취급하고 연산자를 행렬로 표현하는 신기한(?) 현상을 보게 될 것이다. 보다 엄밀하게 말하면 행렬은 함수가 아닌 변환하고 관련이 있다.

[eqn: pmatrix { z # w } = pmatrix {` 1~ &~ 0 `#` 0~ &~ -1 `} pmatrix { x # y }]	[eqn: { rm z} = B`` { rm x}]

위의 두 식을 비교해서 살펴보면 다음과 같이 생각할 수도 있다.
열벡터 [eqn: {rm x} = pmatrix { x # y }]에 행렬 [eqn: B = pmatrix {` 1~ &~ 0 `#` 0~ &~ -1 `}]를 곱했더니 열벡터 [eqn: { rm z } = pmatrix { z # w }]를 얻었다. [eqn: rm x,~ z]를 벡터가 아닌 좌표평면위의 한 점이라고 생각할 수도 있다. 결국 위 식은 함수(변환)를 뜻 하며 이 경우 행렬 [eqn: B]는 [eqn: x]축에 대한 대칭이동을 뜻하는 행렬이다.

[eqn: pmatrix { u # v } = pmatrix {` 0~ &~ 1 `#` 1~ &~ 0 `} left[ pmatrix {` 1~ &~ 0 `#` 0~ &~ -1 `} pmatrix { x # y } right]]	[eqn: { rm u} = A (B`` { rm x}) = A {rm z }]

위의 네 식을 비교해서 살펴보면, 열벡터 [eqn: rm x]는 행렬 [eqn: B`]에 의해서 열벡터 [eqn: rm z]로 대응하고, 열벡터 [eqn: rm z]는 행렬 [eqn: A]에 의해서 열벡터 [eqn: rm u]로 대응한다. 이 결과는 행렬의 곱셈에 대한 결합법칙을 이용하여

[eqn: { rm u} = (A B) { rm x} = C`` {rm x }]	단, [eqn: C = AB]

와 같이 생각할 수 있는데, 위 식에서 열벡터 [eqn: rm x]는 행렬 [eqn: C`]에 의해서 열벡터 [eqn: rm u]로 대응한다. 지금까지의 결과를 종합하면 행렬과 열벡터의 곱은 함수를 뜻하며, 행렬과 행렬의 곱은 합성함수를 뜻한다는 것을 알 수 있을 것이다. 이 경우 [eqn: A]는 직선 [eqn: y=x]에 대한 대칭이동을 뜻하는데 결국 [eqn: C`]는 [eqn: x]축 대칭 후 직선 [eqn: y=x]에 대한 대칭을 뜻한다. 여기까지 살펴보면 함수(변환)를 행렬로 표현할 수 있다는 것을 알게 될 것이다.

이제는 고등학교 1학년 과정에서 배우는 함수의 성질을 간단히 적어보자. 함수의 합성을 ‘함수끼리의 연산’이라는 관점에서 바라보자. 물론, 함수끼리는 덧셈과 곱셈등도 가능하지만 ‘함수의 합성이라는 연산’에 대해서만 이야기 할 것이다. 항등함수를 [eqn: I`]라 하면 함수의 합성에서 다음과 같은 등식을 만족한다.

[eqn: f circ I = I circ f = f]

함수의 합성 [eqn: circ]을 함수끼리의 연산으로 바라볼 때, 이 식은 ‘항등함수 [eqn: I`]는 연산 [eqn: circ]에 대한 항등원’ 이라는 뜻으로 해석할 수 있다. 함수 [eqn: f]의 역함수가 존재할 때, 그 역함수를 [eqn: f^-1] 라 하면 다음과 같은 등식을 만족한다.

[eqn: f circ f^-1 = f^-1 circ f = I`]

이 식은 ‘함수 [eqn: f]의 역함수 [eqn: f^-1]는 연산 [eqn: circ]에 대한 [eqn: f]의 역원’이라고 해석할 수 있다. 함수의 합성과 행렬의 곱에 대한 아래의 식들을 비교하면, 함수의 합성과 행렬의 곱에 관한 두 연산체계가 완전히 같음을 알 수 있을 것이다.

[eqn: (f circ g)(x) = f(g(x))]	[eqn: (AB) {rm x} = A(B` {rm x})]

[eqn: f circ I = I circ f = f]	[eqn: AE = EA = A]

[eqn: f circ f^-1 = f^-1 circ f = I`]	[eqn: AA^-1 = A^-1 A = E]

[eqn: f circ g != g circ f]	[eqn: AB~ != BA]

[eqn: (f circ g) circ h = f circ (g circ h)]	[eqn: (AB)C = A(BC)]

[eqn: (f circ g)^-1 = g^-1 circ f^-1]	[eqn: (AB)^-1 = B^-1 A^-1]

이러한 이유로 행렬의 곱셈은 함수의 합성처럼 오른쪽부터 계산하는 것이 편한 경우가 많다.

행렬과 일차변환(linear transformation)

내가 고등학교 다닐 때는 행렬을 이용한 일차변환을 배웠다. 직선에 대한 대칭이동, 회전이동 등은 행렬의 곱으로 표현할 수 있기 때문에 일차변환이다. 그러나 평행이동은 행렬의 곱이 아닌 합으로 표현되기 때문에 일차변환이 아니라고 배웠다. 그런데 얼마 전에 인터넷을 뒤지다가 약간의 꼼수를 사용하면 평행이동을 행렬의 곱으로(일차변환으로) 표현할 수 있음을 알았다. 컴퓨터 프로그램에서 그래픽을 구현할 때 행렬을 이용하는데 우리가 사는 공간이 [eqn: 3]차원이므로 [eqn: 4]차 정사각행렬을 이용한다고 한다. 이렇게 하면 평행이동 등을 모두 행렬의 곱으로 표현할 수 있다. 나는 간단하게 [eqn: 2]차원(좌표평면)에서 변환시키는 것을 설명하겠다. 이 내용을 공부한 다음에 수학 10-나의 평행이동, 대칭이동 부분을 다시 본다면 나름대로 도움이 될 것이다.

먼저 이야기 할 것은 능동변환인지 수동변환인지를 설명하는 것이다. 능동변환은 원점(좌표축)은 그대로 두고 좌표평면위의 점을 직접 이동시키는 것이다. 비유적으로 말하면 나(원점)는 가만히 있는데 자동차(점)가 나에게 다가오는 것이다. 수동변환은 좌표평면위의 점은 그대로 둔 채 원점을 이동시키는 것이다. 이것 역시 비유적으로 말하면 자동차(점)는 가만히 서 있는데 내(원점)가 차에게 다가가는 것이다. 행렬을 이용하여 평행이동과 회전변환을 표현할 때 능동변환과 수동변환의 본질적인 차이는 없고 부호 등만 바뀌게 된다. 여기에서는 능동변환만을 다루겠다.

좌표평면위의 점 [eqn: {rm P } (x,~y)]가 [eqn: { rm P' }(x + a,~y+b)]로 변하는 것을 평행이동이라고 한다. 이것은 좌표축의 원점 [eqn: rm O(0,~0)]를 [eqn: {rm O'}(-a,~-b)]으로 옮기는 것과 같은 효과이다. 행렬을 이용할 때는 [eqn: (x,~y,~1)] 과 같은 [eqn: 3]차원 벡터를 이용하는데, 이것을 열벡터로 표현하면 [eqn: pmatrix{`` x ``# y # 1 }]이 된다. 평행이동후의 좌표를 [eqn: pmatrix{`` x' ``# y' # 1 }] 라 한다면 평행이동은 다음과 같은 행렬의 곱으로 표현된다.

[eqn: pmatrix{`` x' ``# y' # 1 } `= pmatrix{`` x+a ``# y+a # 1 } ` = pmatrix{`` 1 ``& 0 ``& a ``# 0 & 1 & b # 0 & 0 & 1 }` pmatrix{`` x ``# y # 1 }]

좌표평면위의 점 [eqn: {rm P } (x,~y)]를 [eqn: x]축에 선대칭 시킨 점의 좌표를 [eqn: {rm P'} (x' ,~ y')]이라 하면 이들 네 변수 사이에는 아래와 같은 관계식을 갖게 된다.

[eqn: cases{ x' = x # y' = -y }~~]	[eqn: pmatrix {` x'`# y' }` = pmatrix {` 1 &~~~ 0 # 0 &~~ -1} pmatrix {` x`# y }]

위의 왼쪽의 식은 오른쪽과 같은 행렬을 이용한 식으로 바꿀 수 있다. 이것 말고 여러 가지 대칭이동을 행렬로 표현할 수 있는데, 행렬

[eqn: pmatrix {` 1 &~~~ 0 # 0 &~~ -1}]	[eqn: pmatrix {` -1~ &~ 0 #~ 0 & 1}]	[eqn: pmatrix {` 0~ &~ 1 `#` 1~ &~ 0 `}]

는 각각 [eqn: x]축 대칭이동, [eqn: y]축 대칭이동, 직선 [eqn: y=x]에 대한 대칭이동을 나타내는 행렬이다. 이들을 모두 한 행렬로 표현할 수 있는 방법은 직선 [eqn: y = x tan theta] 에 대한 대칭이동 행렬을 구하는 것으로 그 결과만을 적으면 다음과 같다.

[eqn: S(theta) = pmatrix{~ cos` 2theta ~&~~~ sin` 2theta # sin` 2theta ~&~~ -cos` 2theta ~}]

위의 식에 [eqn: theta= 0,~ pi over 2 ,~ pi over 4] 등을 대입하여 확인해 보자. 만약 평행이동까지 생각한다면 다음과 같은 행렬을 사용하면 된다.

[eqn: pmatrix {~ x' `# y' # 1}~ = pmatrix{~ cos 2 theta &~~~~ sin 2 theta &~~ 0 ~#~ sin 2 theta &~~ - cos 2 theta &~~ 0 ~#~ 0 &~~~~ 0 &~~ 1 ~}~ pmatrix {~ x `# y # 1}]

좌표평면위의 점[eqn: {rm P } (x,~y)]를 원점[eqn: {rm O } (0,~ 0)]로 점대칭 시킨 점의 좌표를 [eqn: {rm P'} (x' ,~ y')]라 할 때, 행렬을 이용하여 이들 사이의 관계식을 표현하면 다음과 같다.

[eqn: pmatrix {` x'`# y' }` = pmatrix {` -1 &~~ 0 # ~~0 &~~ -1}` pmatrix {` x`# y }]

더 일반적인 경우로 점[eqn: {rm P } (x,~y)]를 점[eqn: {rm Q } (p,~q)]로 점대칭 시킨 점의 좌표를 [eqn: {rm P'} (x' ,~ y')]이라 하면 네 변수 사이에는 [eqn: 3]차 정사각행렬을 이용하여 다음과 같은 관계식으로 표현된다.

[eqn: pmatrix {` x'`# y' #1 }` = pmatrix {` -x + 2p `# -y + 2q # 1}` = pmatrix { -1 &~~~ 0 &~~ 2p ~#~ ~0 &~~ -1 &~~ 2q ~#~ ~0 &~~~ 0 &~~1 ~}` pmatrix {` x`# y # 1 }]

좌표평면위의 점을 회전시킨다는 말은 원점을 회전축으로 반시계방향(counter-clockwise)으로 회전시킨다는 뜻이다. 점[eqn: {rm P} (x,~y)]를 [eqn: theta]만큼 회전시킨 점의 좌표를 [eqn: {rm P'} (x' ,~ y')]라 할 때, 이들 사이의 관계식은 다음과 같이 행렬을 이용하여 표현할 수 있다. 그 이유는 설명하지 않겠다.

[eqn: pmatrix {` x' # y' `}` = pmatrix{`` cos theta ``&~~ -sin theta ``# sin theta &~~~ cos theta }` pmatrix {` x # y `}]

삼차원 공간에서의 회전은 회전축과 회전 방향을 둘 다 설명해야 하기 때문에 조금 복잡하다. 이 때 회전 방향은 우리가 일상생활에서 사용하는 ‘시계방향, 시계 반대방향’같은 표현법은 사용하지 않고 오른손 법칙을 이용해서 표현한다. 회전축을 나타내는 벡터의 화살표 방향과 엄지손가락 방향이 일치하도록 오른손으로 잡으면 나머지 네 손가락이 가리키는 방향이 회전 방향이 된다. 오른쪽 그림을 참고하면서 다시 설명하면 [eqn: x]축 방향으로 회전한다는 말은 [eqn: x]축을 회전축으로 [eqn: z]축이 왼쪽으로 움직이게(시계 반대방향) 회전시킨다는 뜻이다. 직접 오른손으로 [eqn: x]축을 잡아 보면 이해할 수 있을 것이다. [eqn: -z]축으로 회전시킨다는 말은 [eqn: z]축을 회전축으로 [eqn: x]축이 왼쪽으로 움직이게([eqn: z]축 위에서 보았을 때 시계방향) 회전시킨다는 것이다. 역시 오른손 엄지가 [eqn: z]축의 음의 방향을 향하게 [eqn: z]축을 잡아보면 이해할 수 있을 것이다. [eqn: -z]축으로 [eqn: theta]만큼 회전시켰다는 말은 [eqn: z]축으로 [eqn: - theta]만큼 회전시켰다는 말과 같다. 참고로 [eqn: 3]차원 좌표계는 보통 왼손좌표계와 오른손좌표계를 쓰는데 수학과 물리에서는 주로 오른손좌표계를 사용한다. 컴퓨터그래픽을 하는 사람은 왼손좌표계를 쓴다.

[eqn: y]

[eqn: z]

[eqn: rm O]

[eqn: x]

회전축 방향 :

오른손 엄지방향

물체의 회전방향 :

오른손 네 손가락 방향

오른손법칙을 확인하는 의미에서 다음을 생각해 보자. 오른손법칙을 이용하여 지구의 회전을 설명하면 지구의 자전 및 공전방향 그리고 태양의 연주운동 방향은 북극을 회전축으로 회전한다. 또한 태양의 일주운동방향은 남극을 회전축으로 회전한다. 이 말은 오른손 엄지손가락이 북극을 향할 때, 네 손가락이 가리키는 방향이 지구의 자전방향이 되며 오른손 엄지손가락을 남극으로 향할 때, 네 손가락이 가리키는 방향이 태양의 일주방향이 된다는 말이다. 우리가 흔히 사용하는 오른나사 역시 오른손 법칙이 적용된다. 드라이버를 오른손으로 잡고 네 손가락 방향으로 회전시키면 나사는 엄지손가락 방향으로 움직인다.

쓸데없는 내용을 너무 복잡하게 이야기 했는데 [eqn: 3]차원 회전에 관해서는 이렇게만 설명하겠다. 만약 평행이동과 함께 표현하려면 다음과 같이 [eqn: 3]차 정사각행렬을 이용하여 표현한다.

[eqn: pmatrix{`` x' ``# y' # 1 } `= pmatrix{`` x cos theta - y sin theta ``# x sin theta + y cos theta # 1 } ` = pmatrix{`` cos theta ``&~~ -sin theta ``&~ 0 ``# sin theta &~~~ cos theta ``&~ 0 ``# 0 &~~~ 0 ``&~ 1 ``}` pmatrix{`` x ``# y # 1 }]

점 [eqn: (x,~y)]과 원점과의 거리를 [eqn: k]배 만큼 확대･축소 할 때는 다음과 같은 식으로 표현된다.

[eqn: pmatrix{`` x' ``# y' } `= pmatrix{`` kx ``# ky} ` = pmatrix{`` k ``& 0 ``# 0 & k } ` pmatrix{`` x ``# y }]

당연한 이야기지만 [eqn: 0<k<1]이면 축소변환, [eqn: k=1]이면 항등변환, 그리고[eqn: k>1]이면 확대변환, 이다. [eqn: k=-1]인 경우는 원점대칭변환이 되며, [eqn: k<0]이면 원점대칭 한 후 확대･축소변환을 한 것이다. 위의 내용은 좌표축을(좌표축의 눈금을) [eqn: 1 over k]배로 확대･축소한 것과 같은 효과이다.

지금까지 좌표의 여러 가지 변환을 살펴보았는데, 이들을 섞어서 사용할 때는 행렬을 곱하는 순서에 주의해야 한다. 만약 회전시킨 후 평행이동을 시킨다면 다음과 같은 식으로 써야 한다.

[eqn: pmatrix{`` x' ``# y' # 1 } ` = pmatrix{`` 1 ``& 0 ``& a ``# 0 & 1 & b # 0 & 0 & 1 } left[ pmatrix{`` cos theta ``&~~ -sin theta ``& 0 ``# sin theta &~~~ cos theta & 0 ``# 0 &~~~ 0 & 1 ``}` pmatrix{`` x ``# y # 1 } right]]

또한, 평행이동을 한 다음에 회전시키는 경우는 다음과 같은 식으로 써야 한다.

[eqn: pmatrix{`` x' ``# y' # 1 } ` = pmatrix{`` cos theta ``&~~ -sin theta ``& 0 ``# sin theta &~~~ cos theta & 0 ``# 0 &~~~ 0 & 1 ``}` left[ pmatrix{`` 1 ``& 0 ``& a ``# 0 & 1 & b # 0 & 0 & 1 }` pmatrix{`` x ``# y # 1 } right]]

우리가 사는 세상이 [eqn: 3]차원 공간이기 때문에 실제로는 [eqn: 3]차원의 경우를 해야 한다. 앞의 결과를 참고하면 [eqn: 3]차원의 경우는 [eqn: 4]차 정사각행렬을 이용하여 스스로 할 수 있으리라 생각한다.

행렬과 복소수

행렬과 아무런 관련이 없어 보이는 복소수를 아래와 같이 대응시켜 보자.

[eqn: Z = pmatrix{`` x `` & -y ``# y & x } ~~Lrarrow~~ z = x + iy]

구체적인 예를 들면

[eqn: E = pmatrix{`` 1 `` & 0 ``# 0 & 1 } ~~Lrarrow~~ 1 = 1 + i cdot 0]

[eqn: pmatrix{`` 0 `` & -1 ``# 1 & 0 } ~~Lrarrow~~ i = 0 + i cdot 1]

[eqn: pmatrix{`` cos theta `` &~~ -sin theta ``# sin theta &~~~ cos theta } ~~Lrarrow~~ e^{i theta} = cos theta + i sin theta]

등이 된다. 이러한 대응관계에서 행렬의 연산(합과 곱)과 복소수의 연산은 같아진다. 어려운 말로 isomorphic 하다. 실제로 그런지 확인해 보자.

[eqn: Z_1 + Z_2 = pmatrix{`` x_1 `` & -y_1 ``# y_1 & x_1 } + pmatrix{`` x_2 `` & -y_2 ``# y_2 & x_2 } = pmatrix{`` x_1 + x_2 `` & -(y_1 + y_2 ) ``# y_1 + y_2 & x_1 + x_2 }] 이고

[eqn: z_1 + z_2 = (x_1 + iy_1 ) + (x_2 + i y_2 ) = (x_1 + x_2 ) + i(y_1 + y_2 )] 이므로

[eqn: Z_1 + Z_2 ~~Lrarrow~~z_1 + z_2] 임을 알 수 있다.

뺄셈도 비슷하다는 것은 쉽게 보일 수 있을 것이며 곱셈과 그 역원의 경우는 다음과 같다.

[eqn: Z_1 Z_2 = pmatrix{`` x_1 `` & -y_1 ``# y_1 & x_1 } pmatrix{`` x_2 `` & -y_2 ``# y_2 & x_2 } = pmatrix{`` x_1 x_2 - y_1 y_2 `` &~~ -(x_1 y_2 + x_2 y_1 ) ``# x_1 y_2 + x_2 y_1 & x_1 x_2 - y_1 y_2 } ~~ Lrarrow ~~ z_1 z_2]

[eqn: Z ^{`-1} = 1 over { x^2 + y^2} pmatrix{` ~~ x~ &~ y ``# -y~ & x } ~~ Lrarrow ~~ 1 over { x^2 + y^2} (x - iy ) = 1 over z]

그리고 복소수의 절대값과 켤레복소수는 다음과 같이 대응된다.

[eqn: det(Z) = x^2 + y^2 = | z |^2] 이 되고

[eqn: Z^{`T} = { pmatrix {`` x~ & -y ``# y & x } }^T = pmatrix{`` x & y ``# -y~ & x } = pmatrix{`` x `` &~~ -(-y ) ``# (-y ) & x } ~~ Lrarrow ~~ bar z = z ^* = x - iy] 이 된다.

추가로 복소수는 덧셈, 곱셈에 대하여 닫혀있으므로 위와 같은 형식의 행렬 역시 그러하며, 복소수는 곱셈에 대한 교환법칙이 성립하므로 위와 같은 형식의 행렬 역시 교환법칙이 성립한다. 실제로 그렇게 되는지는 스스로 확인해 보자.

위에서 눈여겨 볼 것 가운데 하나는 복소수 [eqn: e^{i theta } = cos theta + i sin theta]에 대응하는 행렬이 회전변환 행렬과 일치한다는 점이다. 이 말은 복소평면위의 점 [eqn: z = x + iy]를 [eqn: theta]만큼 회전시킨 점을 [eqn: z']이라 할 때,

[eqn: z' = z e^{i theta} = z(cos theta + i sin theta)]

라는 관계가 있다는 뜻이다. 이제 좌표평면위의 점을 회전시킬 때 행렬을 이용할 수도 있고 복소수를 이용할 수도 있다. 이를 이용하면 [eqn: z^n = 1] 형태의 방정식의 근을 아주 쉽게 찾을 수 있다.

앞에서 말한 행렬과 복소수의 대응(isomorphism)은 다음과 같이 [eqn: y]의 부호를 바꾸어도 같은 결과를 얻는다.

[eqn: Z = pmatrix{``~~ x `` &~ y ``# -y &~ x ``} ~~Lrarrow~~ z = x + iy]

행렬과 미분, 적분

미적분은 수학II 과정에서 배우기 때문에 수학I만 배운 사람은 잘 모를 것이다. 그래도 한번 적어본다. 미분 역시 행렬로 표현할 수 있다. 간단한 예로 이차함수를 생각해 보자.

[eqn: f(x) = a_0 + a_1 x + a_2 x^2] 이라고 하자. 오름차순으로 정리한 이유가 있다.

그러면 이 함수는 앞에서 [eqn: (a_0 ,~a_1 ,~a_2 )]와 같은 벡터로 나타낼 수 있음을 보였다.

[eqn: f`'(x) = a_1 + 2a_2 x] 인데 이것은 [eqn: (a_1 ,~2a_2 ,~0)]으로 나타낼 수 있다. 이제 처음 벡터에 어떤 행렬을 곱하면 이 벡터를 얻을 수 있을지 생각해 보자. 답을 먼저 제시한다면 그렇게 어렵게 느껴지지 않을 것이다.

[eqn: pmatrix{`` a_1 ``# 2a_2 # 0 }` = pmatrix{`` 0 ``& 1 ``& 0 ``# 0 & 0 & 2 # 0 & 0 & 0 }` pmatrix{`` a_0 ``# a_1 # a_2 }]

이처럼 미분 역시 행렬로 나타낼 수 있게 된다. 일반적으로 [eqn: n]차 정사각행렬은 [eqn: n]개의 고유값을 갖는다. 미분을 행렬로 표현할 경우 무한차원 정사각행렬로 표현되는데 이때 행렬의 열의 수(혹은 행의 수)는 자연수 개수([eqn: ALEPH _0])만큼 된다. 앞에서 잠깐 말했지만 미분의 고유값은 임의의 실수를 가질 수 있으므로 고유값의 개수는 실수의 개수[eqn: left ( 2^ {ALEPH _0} right)]만큼 된다. 무한차원일 경우는 왜 행렬의 차수와 고유값의 개수가 다른지는 나도 모른다.

행렬과 이차곡선

이차곡선이란 원, 포물선, 타원, 쌍곡선을 뜻한다. 이들과 행렬이 아무런 관련이 없어 보이지만 실제로 깊은 관계가 있다. 나는 대학교 때 이 사실을 알았는데, 그 때 정말 기뻤던 기억이 있다. 좌표평면위의 이차곡선은 일반적으로 다음 형태로 표현된다.

[eqn: Ax^2 + B `y^2 + C`xy + D`x + E`y + F = 0]    ...... (*)

포물선을 제외할 경우, 일차항([eqn: x,~y])은 적당한 평행이동에 의해서 없앨 수 있고, 교차항([eqn: xy])은 적당한 회전을 이용해서 없앨 수 있다. 회전도 없고 평행이동도 하지 않은 이차 곡선은 다음과 같은 식으로 표현된다.

[eqn: x^2 over a^2 + y^2 over b^2 = 1]

이 식에서 [eqn: a = b = r] 이라면 원의 방정식 [eqn: x^2 + y^2 = r^2]이 되고, [eqn: a>b>0] 이라하면 [eqn: x]축이 장축인 타원의 방정식이 되며, [eqn: b^2 < 0] 일 경우 [eqn: x]축을 주축으로 하는 쌍곡선이 된다. 우선 다음 행렬에 관한 등식을 계산해 보자.

[eqn: pmatrix{`` x ``&`` y } pmatrix{`` p `` & r ``# r & q } pmatrix{`` x ``# y } `= 1]

[eqn: pmatrix{`` x ``&`` y } pmatrix{`` p x + r y ``# r x + q y } ` = 1]

[eqn: p x^2 + q y^2 + 2rxy = 1]

이 식을 위의 식 (*)와 비교해 보면, [eqn: A=p ,~ B=q ,~ C=2r ,~ D=E=0 ,~ F=1] 인 이차곡선의 방정식임을 알 수 있다. 이로부터 행렬은 이차곡선에 대응한다는 사실을 알 수 있을 것이다.

타원 [eqn: pmatrix{`` 1 over 16 `` & 0 ``# 0 & 1 over 9 }]의 장축의 길이와 단축의 길이를 구하시오.

위와 같이 행렬을 이용하여 타원의 방정식을 구하라는 뜻이다. 계산하면,
[eqn: pmatrix{`` x ``&`` y } pmatrix{`` 1 over 16 `` & 0 ``# 0 & 1 over 9 } pmatrix{`` x ``# y } ` = pmatrix{`` x ``&`` y } pmatrix{`` 1 over 16 x ``# 1 over 9 y } `= x^2 over 4^2 + y^2 over 3^2 = 1] 이므로 주어진 타원은 장축이 [eqn: x]축에 있고 그 길이가 [eqn: 4]이며 단축은 [eqn: y]축에 있고 그 길이는 [eqn: 3]이 된다.

타원 [eqn: A =pmatrix{`` 5 `` & 4 ``# 4 & 5 }]의 장축의 길이와 단축의 길이를 구하시오.

[eqn: pmatrix{`` x ``&`` y } pmatrix{`` 5 `` & 4 ``# 4 & 5 } pmatrix{`` x ``# y } ` = pmatrix{`` x ``&`` y } pmatrix{`` 5x + 4y ``# 4x + 5y } `= 5x^2 + 5y^2 + 8xy = 1]

이 식은 교차항 [eqn: xy]가 있기 때문에 어떤 타원을 회전시킨 것이다. 회전시키기 전의 타원의 방정식을 알아야만 장축과 단축의 길이를 구할 수 있는데, 처음의 타원 방정식도 모르고 몇 도를 돌렸는지도 알 수 없다. 만약 회전변환 행렬을 배웠다면 그것을 이용해서 문제를 풀 수도 있지만, 그 계산은 정말 복잡하다. 그러나 고유값 문제를 풀 줄 안다면 훨씬 쉬운 방법이 있다. 주어진 타원을 적당히 회전시키면 장축을 [eqn: x]축이나 [eqn: y]축에 일치시킬 수 있다. 그렇게 된다면 타원을 나타내는 행렬은 교차항이 사라지기 때문에 대각행렬이 될 것이다. 행렬의 대각화만 할 수 있다면 이 문제의 풀이는 훨씬 쉬워지는 것이다. 위 고유값 문제를 풀면 고유값은 [eqn: 9,~ 1]을 얻고, 이에 대응하는 고유벡터는 [eqn: pmatrix{`` 1 ``# 1 } ,~pmatrix{`` 1 ``# -1 }]을 얻는다. [eqn: P = pmatrix{`` 1 `` &~~ 1 ``# 1 & -1 }]이라 하면 [eqn: P^-1 A P = pmatrix{`` 9 `` & 0 ``# 0 & 1 }] 이므로 단축이 벡터 [eqn: pmatrix{`` 1 ``# 1 }]와 평해하고 그 길이는 [eqn: 1 over 3]이며 장축의 길이는 [eqn: 1]이다. 내가 이 사실을 깨달았을 때 기뻤던 이유는 회전변환을 이용한 복잡하고 끔찍한 계산이 이렇게 쉬운 계산으로 바뀌었기 때문이다. 타원과 아무리 관련 없어 보이는 행렬, 고유값, 고유벡터들이 실제로는 깊은 관련이 있다.

지금까지의 결과를 이용하면 행렬 [eqn: pmatrix{`` 9 `` &~~ 0 ``# 0 & -1 }]은 쌍곡선의 방정식이라는 것을 쉽게 짐작할 수 있을 것이다. 다시 말하면 타원의 방정식은 행렬의 두 고유값이 양수이고, 쌍곡선의 방정식은 하나는 양수이고 다른 하나는 음수이다. 이것을 통해 짐작할 수 있는 것은 이차곡선의 방정식이 행렬 [eqn: A]로 표현될 때 [eqn: det(A) >0 ,~ { rm tr } (A)>0] 이면 행렬 [eqn: A]는 타원임을 알 수 있고, [eqn: det(A) <0] 일 경우 쌍곡선임을 알 수 있다.