이번 포스팅에서는 Vector를 살짝 소개하려고 한다. 더불어서 Linear Algebra에서 가장 많이 쓰이는 연산 두 가지에 대해서도 알아보자.

 

Vector는 무엇인가? 우선 선이 무엇인지는 모두가 알고 있을 것이다. 그 선에 방향성을 추가시킨 것이라고 생각하면 된다.



보시다 시피, 같은 Vector인지 다른 Vector인지 판단하는 기준은 길이와 방향이다.

 

Linear Algebra에서 가장 많이 쓰이는 계산은 Vector에 대한 addtion(+)과 multiplication(x)이다. addition은 말 그대로 덧셈을 의미하고 multiplication은 scalar multiplication을 의미한다. 하나하나 예를 들어 설명해보자.

 

우선, addition이다.

a = (1, 2), b = (3, 4)
a + b = (4, 6)

 

그 다음은 Scalar Multipication이다. Vector에 Vector를 곱하는 것이 아니라, Scalar를!! 즉, 숫자를 곱하는 것이다. 그렇다면 어떻게 될까? 아래와 같다.

이 두 연산이 Linear Algebra의 핵심적인 연산이라고 한다. 이 두 연산을 조합하여 dot product 연산을 만들 수 있다. 이와 같이 addition과 scalar multiplication을 조합해둔 것을 우리는 Linear Combination이라는 용어를 사용해서 이야기하련다. 즉, dot product 역시 Linear Combination이다.

a = (a1, a2), b = (b1, b2)
a·b = a1*b1 + a2*b2

 

dot product 연산은 두 Vector 사이에서 중요한 역할을 하는데, 가장 중요한 역할로는 두 Vector 사이의 각을 구할 수 있다는 점이다. 우리가 고등학교 때 배웠던 식을 기억해보면 a·b = |a|*|b|*cos 이었다. 즉, a의 길이와 b의 길이 그리고 두 개의 dot product을 알면, 그 사이의 각에 대한 cos값을 구할 수 있다.

 

a·b/(|a|*|b|) = cosine, -1 <= cosine <= 1

 

이것을 기억했을 때, 우리는 두 vector의 방향성을 확인할 수 있다. 두 vector가 직각을 이루고 있을 때는 cosine값이 0이므로 a·b의 값은 0이다. 두 vector가 이루는 사이각이 0 - 90 사이일 경우에는 cosine이 양수이고, 90 - 180일 경우에는 음수이므로 a·b값이 양수인지 음수인지에 따라 두 vector가 이루는 각이 90보다 큰지 작은지 역시 알 수 있다.

 

마지막으로 zero vector에 대해서 살짝 언급하고 이번 포스팅 마치려고 한다. 모든 Vector에 0을 곱하면 zero vector가 되고, 그 vector 만큼에 대하여 빼기 연산을 해도 zero vector가 된다. 또한 zero vector는 모든 vector를 포함하는 vector이다. 너무 당연한 얘기를 왜 이렇게 하고 있을까? 그냥 한번 zero vector를 언급하고 싶었다. -_-

 

a = (a1, a2, .., an)
0*a = (0, 0, .., 0)
a - a = (0, 0, .., 0)


너무 허접한 포스팅에 놀래시지 마시길 바라며... 몰라 나는 계속 공부하련다.


 

Posted by 빛나유

댓글을 달아 주세요

왜 Linear Algebra를 공부하는가? 수학과 출신도 아니고 그렇다고 수학에 조예가 깊은 사람도 절대 아닌데도 불구하고 이 이야기를 한번이라도 간단하게 하고 시작하고 싶다. 다시 한번 말하지만 "왜~를 공부하는가"와 같은 교수님정도는 되어야 답할만 한 대답을 아무 것도 모르는 내가 한번이라도 언급하고 가고 싶은 것은 그만큼 중요하다고 생각되기 때문이다.


우리 머리 속에는 1차원 점은 간단하게 그려진다. 2차원인 선 역시 아주 쉽게 그려진다. 3차원도 그럭 저럭 그려진다. 4차원 이상이 되어버리면, "우리는 z축 다음에 뭘 어떻게 그리지? 아인슈타인처럼 똑똑하지 않은 우리는 4차원 이상은 어떻게 공부하라고!!" 이것의 해답, Solution이 Linear Algebra 아닌가 싶다.


우리는 보통 아래의 수학식을 xy 좌표에서 이렇게 푼다.


# 2D Equations

x + 2y = 5

2x = y = 4


# Graph for the Equations


두 2d equation의 답은 x축 2와 y축 1이다. 초등학교만 나오면 풀 수 있는 문제이다. 그런데 이것이 차수가 높아지면 그래프로 풀기는 조금 어려워진다. 3d equation만 되어도 조금 머리속에서 좌표 그리는 것이 헛깔리기 시작해지고, 4차원은 엄두도 못 낸다.


Linear Algebra에서는 이러한 것을 차수가 아무리 높아져도 간단하게 풀 수 있는 방법을 제공해준다. 


가장 기본적을 Elimination을 사용한 기법을 보자. 의 두 식을 행렬화 하면 아래와 같은 식이 된다.


-3y = -6 이므로, y = 2이다. y값을 x + 2y = 5식에 넣으면 x = 1이 나온다. (이와 같이 y값부터 차례대로 하나씩 하나씩 뒤에서부터 구해나가는 방법을 Back substitution이라고 한다.) 이와 같은 방법이 Elimination 기법이다. 한국으로는 소거법이라고 하든가? 그렇다.


Elimination 기법으로 다차원 Equation을 푼다고 생각했을 떄 차수가 높아져도 푸는 방법은 같다. 다만, 조금 시간이 더 걸릴 뿐이다.


"다차원의 개념을 생각하기 편하게 해준다"를 말하기 위해 너무 장황하게 이야기 한 것 같다. 다음 포스팅에서는 Linear Algebra에서 가장 기본적인 연산과 Vector의 성질에 대해서 이야기해보려고 한다.

Posted by 빛나유

댓글을 달아 주세요

  1. Linearity 2017.03.31 18:07  댓글주소  수정/삭제  댓글쓰기

    현미경과 망원경이 인간이 바라볼 수 있는 세계의 지평을 넓혔다. 하지만 선형대수는 그것으로도 볼 수 없는 세계를 보게 하는 인간의 순수하고도 위대한 제 7의 감각이다.

  2. Lineritiy 2017.03.31 18:19  댓글주소  수정/삭제  댓글쓰기

    먼지가 묻은 조약돌이 있었다. 나는 그것을 깨끗한 물에 씻겨 내 방 창가에 놓았다. 요돌요돌 빛나는 그 조약돌을 보니 내 마음에 아름다움이 꽃폈다.

    먼지가 묻은 조약돌은 본래의 행렬이며, 그것을 고히 씻겨내는 행위는 소거법이고 그렇게 태어난 아름다운 조약돌은 그 결과물이다.

시작하며...

Linear Algebra 2015. 6. 14. 22:52

Linear Algebra... 선형대수이다. 왜 컴퓨터 블로그에서 선형대수를 논하고 있는가? Data Mining 공부하기 위해서이다. 영어를 공부하려면 아무리 싫어도 단어를 외워야 되는 것처럼, Data Mining을 공부하기 위해서는 반드시 Linear Algebra를 공부해야 될 것 같다는 생각이 들어서.. 그리고 실제로 Data Mining을 공부한 사람들 역시 Linear Algebra는 반드시 공부해야 한다고 하니!! 공부하기로 하자.


이래뵈도 왕년에 수학선생님이 꿈이었던 사람이다. 할 수 있겠지? 사실, 공부한지 한 2주 정도됐다. 갑자기 Matrix에 Vector를 손으로 적고 있으니 뭔가 재미있기도 하면서 그렇다. 그래도 한가지 확실한 것은 시간낭비하고 있다는 생각은 한번도 든 적이 없다. 그러면 됐다!!


자, 공부해보자!! Linear Algebra

Posted by 빛나유

댓글을 달아 주세요

  1. 학생 2016.09.03 00:53  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. C언어를 공부 중인 학생입니다.
    머리가 나빠서인지 공부하기가 많이 어렵고 힘들었었는데...
    처음으로 주인장님의 블로그를 통해 아~! 하고 바보 도통하는 소리까지
    내가며 많은 깨달음과 가르침을 얻게 되어 감사의 마음을 댓글로 남깁니다.
    진정 천재가 아니신가 싶을 만큼 그간 어려웠던 부분들을 정말 진짜
    알기 쉽게 잘 설명을 해 주셔서 저같이 머리 나쁜 사람도 깨달음과 공부의
    즐거움을 느끼게 해 주셨어요... 감탄사가 나올 만큼 정말 대단하신듯 싶습니다.
    교과서에 나오는 통계나 방정식이나 미적분 같은 그런 수학적인 부분이 분명
    프로그래밍의 기초를 튼튼하게 해줄 거라는걸 막연히 알면서도 머리가 나쁜지
    꽉 막힌 느낌이었는데, 선형대수부터 시작하여 한 걸음 한 걸음 실질적으로 필요한
    부분에 대하여 잘 가르쳐 주시게 되어 정말 감사드립니다.
    수학이 이렇게 재미있는 것이었다니...
    직업적으로 선생님이 안 되셨다 할지라도 이미 참된 선생님이세요.

    • 빛나유 2016.09.04 09:51 신고  댓글주소  수정/삭제

      안녕하세요!!! 극찬이옵니다ㅋㅋ 겸손하기 위해서 하는 말이 아니라 진짜로 저도 머리가 나빠요. 남들이랑 똑같은 양 공부하면 훨씬 이해도가 떨어져요. 근데 공부양은 남보다 훨씬 많아서 결과적으로는 남들이 보기에는 "이해가 빠른 사람"으로 보이게 되는거 같아요. 머리가 나쁜것처럼 좋은 것도 없는거 같아요. 초등학생도 이해할 정도의 수준까지 알아야 이해를 되니까 그만큼 정확하고 직관적으로 설명할 수도 있는거죠ㅋㅋ

      학생님도 좌절하지마시고 열심히 사시길 바랄게요!!ㅋㅋ 화이팅임니다!!

  2. JJ 2018.02.06 14:03  댓글주소  수정/삭제  댓글쓰기

    안녕하세요
    이제 막 컴퓨터 배우려고 하는 학생인데요
    컴퓨터 java나 c언어 배우기전에 선형대수학을 배우는게 도움이 되나요?
    아니면 언어를 배운 후에 배우는게 도움이 되나요??

    이산수학도 필요한 건가요?_?

    도통 모르겠어서 질문드립니당 ㅠ_ㅠ

  3. 끼약 2018.03.08 16:08  댓글주소  수정/삭제  댓글쓰기

    감사합니다 쏙쏙 이해가 잘 됩니다. 혹시 선형대수학 서적도 추천해주실 수 있나요?