메모내용
Nav

선형 대수학

선형대수학(線型代數學, 영어: linear algebra)은 벡터 공간, 벡터, 선형 변환, 행렬, 연립 선형 방정식 등을 연구하는 대수학의 한 분야이다. 현대 선형대수학은 그중에서도 벡터 공간이 주 연구 대상이다. 추상대수학, 함수해석학에 널리 쓰이고 있다.

선형 대수의 유용성에 대해서 공간의 조작이 가능하다는 점이다. 이는 그래픽이나 로봇 분야에서 유용하다.

학생들은 행렬 같은 수로써의 연산은 잘 알지만, 그 밑에 깔려있는 기하학적 모습은 잘 알지 못하는 것이 현실이다. 그리고 선형 대수학을 수로써의 수준에서 배우는것과 기하적 수준에서 배우는 데에는 근본적인 차이가 있다. 각자의 역할이 있지만, 간단하게 말하면 기하적 이해는 구체적인 문제를 풀 방법을 판단하게 해주고, 풀리는 이유를 느끼게 해주고, 결과를 이해할 수 있게 해줍니다. 수로써의 이해는 실제 계산으로써 문제를 풀 수 있도록 해준다. 그러니 기초적인 기하적 이해 없이 선형대수학을 배운다면, 추구하는 분야 속으로 더 깊이 들어가지 않고서는 문제를 풀 방법을 잘 파악하지 못할 때가 오게 됩니다. 그것이 컴퓨터 과학, 공학, 통계학, 경제학, 순수 수학 어떤 분야가 됐든 말이죠. 선형대수학 실력을 요구하는 쪽으로 취직하게 된다면, 교수님이나 직장동료가 그 분야를 이용하는 모습은 완전히 마법같아 보일것입니다. 그들은 어떤 도구를 쓸까를 빠르게 알아내고, 그 쓰임새가 어떻게 보일지 까지도 대강 알아냅니다. 머릿속에 모든 걸 집어넣고 암산해내는 묘기를 보여주는 게 아닐까 싶겠죠. 선형대수학의 밑에는 시각적 직관이라는 것이 깔려 있습니다. 이들은 계산과 이 시각적 직관 사이의 관계가 상당히 직설적이죠. 우리가 만약 이것을 소화해내고 숫자들과 기하학 사이의 관계를 이해한다면, 과목의 세세한 것들이 실용적인 것들과 마찬가지로 꽤 합리적으로 보이기 시작할 것입니다. 스스로 시간을 갖고 생각하는 것이 모든 배움의 시작 아니겠습니까?

여러가지 관점에서의 Vector 개념

물리학 관점 에서의 벡터는 공간에서의 화살표 이다. 벡터는 길이와 방향을 가진다. 이 두가지가 같다면 공간 어디로 이동시키든 같은 벡터이다. 평평한 공간에 존재하는 벡터는 2차원 ( Two Dimensional ) 벡터이고, 우리가 살고 있는 공간같이 확장된 공간에 있다면 3차원 ( Three Dimensional ) 벡터이다. 컴퓨터과학 관점에서의 벡터는 순차 숫자 리스트 입니다. Vectors <==> Lists of Number 단순히 숫자 쌍입니다. 어떤 것에 대한 데이터를 나열해서 묶는 용도로 사용하는 예를들어 어떤 상품에 대한 이름과, 가격 등을 묶어 표현할때 사용하는 {사과, 3000},{바나나, 2000},{배, 4000 }, .... 벡터란 단순히 리스트에 대한 장식같은 단어 이다. 수학자 는 위 관점들을 좀더 일반화하는 방법을 찾습니다. 그래서 이 관점에서 보자면, 무엇이든 벡터가 될 수 있습니다. 두 벡터를 합한다, 벡터에 숫자를 곱한다. 개념에 맞기만 하면 된다. 또 여러 연산을 만족해야 합니다. 특히 벡터 합과, 벡터 숫자곱셈 이라는 개념은 선형 대수 전반에 걸쳐 중요한 역할을 담당한다. 이제부터의 벡터는 기하학에서의 벡터로 숫자쌍과 화살표를 같이 생각하기로 합니다. ---> (1,2,3) 그리고, 특정 좌표계 안에 있으며, 꼬리는 원점인 화살표를 떠올려야 합니다. 이것은 물리학의 관점과는 조금 다른데, 물리학에서의 벡터는 공간 어디든지 이동시킬 수 있지만, 선형대수에서는 거이 항상 원점에 뿌리를 둡니다. 이렇게 공간의 화살표라는 문맥에서 새 컨셉을 이해하면, 우리는 숫자-리스트 라는 관점으로 번역할 것입니다. 이 숫자 리스트는 벡터의 좌표를 의미합니다. 선형대수에서 이와같이 2가지 관점을 오가는 것은 도움이 됩니다. 두 관점을 오가는 과정속에서 중요한 것들이 나타나기 때문입니다. 모든 숫자쌍은 각각의 하나의 벡터와 대응되고, 반대로 모든 벡터는 각각 대응하는 숫자쌍이 있다.

벡터는 힘(힘은 특정 방향과 세기로 가해진다)이나, 변위(Displacement ; 한 입자의 최종적인 이동방향 및 거리), 속도(빠르기와 방향)를 나타내는데 쓰인다. 또한 3차원 게임에서 플레이어가 바라보는 방향이나 다각형이 향한 방향, 광선이 이동하는 방향, 한 표면에서 광선이 반사되는 방향등 순수한 방향만 나타낼 때도 쓰인다. 벡터가 그려져 있는 위치는 중요하지 않다. 위치를 바꾸어도 벡터의 크기와 방향은 변하지 않기 때문이다. (크기와 방향은 벡터가 가지는 두가지 속성) 길이가 같고, 같은 방향을 가리키는 두 벡터가 있다면, 오직 그럴때만 상등(equal) 이다. 벡터는 위치가 중요하지 않으므로, 벡터를 다른 곳으로 병진이동(translation, 이동) 해도 그 벡터의 의미는 변하지 않는다. ( 이동은 길이나 방향에 영항을 주지 않기 때문이다. )

벡터와 좌표계

컴퓨터에서 벡터들을 기하학적으로 다루지 못하므로, 벡터들을 수치적으로 지정하는 방법이 필요하다. 그 방법은, 공간에 하나의 3차원 좌표계를 도입하고, 모든 벡터를 그 꼬리가 그 좌표계의 원점과 일치하도록 이동하는 것이다. ( 벡터의 시작점을 원점과 일치 시키는것 ) 그러면 하나의 벡터를 그머리(화살표 끝) 의 좌표로 규정할 수 있으며, 벡터를 v= (x,y,z) 로 표기할 수 있다. 이렇게 하면, 3차원 벡터를 컴퓨터 프로그램 안에서 부동소수점(float, double) 값 3개로 표현할 수 있다.

좌표계

좌표계 == 기준계 ( frame of reference ) == 공간 ( space ) == 좌표계 ( coordinate system )

꼬리가 좌표계 원점과 일치하도록 이동된 벡터를 가리켜서 “표준 위치에 있다” 고 말한다. 같은 벡터라고 해도 기준계가 다르면 좌표표현이 달라진다. 이를 온도에 비유할 수 있다. 물이 끓는 온도는 섭씨에서는 100도 이고 화씨에서는 212도 이다. 끓는 물의 물리적 온도는 측정 단위의 종류와는 무관하계 일정하다 (다른 척도를 사용한다고 해서 끓는점이 낮아지거나 올라가지는 않는다) 단지 사람들이 자신에게 익숙한 척도에 맞추어서 온도를 재는것일 뿐이다. ( 마치 같은 상태라도 상황에 따라 다르게 해석될 수 있다는 철학적인 해석의 여지가 있다. ) 마찬가지로, 화살표 선분에 내포된 벡터의 방향과 크기는 바뀌지 않는다. 좌표계에 따라 바뀌는 것은 벡터를 표현하는 좌표 뿐이다. 이것이 중요한 이유는 우리가 어떤 벡터를 좌표로 규정하거나 식별할 때 그 좌표가 절대적인 수치들이 아니라 항상 어떤 기준계에 상대적인 수치들임을 뜻하기 때문이다. 3차원 컴퓨터 그래픽에서는 여러개의 기준계들을 사용하는 경우가 많으므로, 벡터를 다룰 때에는 주어진 벡터의 좌표가 현재 어떤 기준계에 상대적인지를 기억할 필요가 있다. 또한 기준계에서 벡터 좌표를 다른 기준계로 변환하는 방법도 알아야 한다. 다

좌표계와 기저벡터

좌표계에는 특별한 벡터들이 있다. x 축 방향으로의 길이가 1인 벡터, 숫자쌍으로는 (1,0,0) y 축 방향으로의 길이가 1인 벡터, 숫자쌍으로는 (0,1,0) z 축 방향으로의 길이가 1인 벡터, 숫자쌍으로는 (0,0,1) 이들을 기저 백터 "basis Vector" 라고 부르며, 햇 이라는 단어도 붙여서 사용하는 경우가 있다. 벡터 i^ "아이햇" 그리고 좌표상의 모든 벡터는 기저벡터의 스케일링(Scale, Scalar)된 벡터들의 합으로 표현할 수 있다. 이는 매우 중요하다 (1,0,0)를 i^ (0,1,0)를 j^ (0,0,1)를 k^ i^, j^, k^ 을 xyz 좌표계의 "Basis Vectors" 이다. 우리는 좌표계(Coordinate System)를 이 n개(Dimension)의 특별한 기저벡터(Basis Vector) 로 구성(Framing) 하는 것이다. 이말은 좌표계는 기저벡터로 구성되었기 때문에, 새로운 기저벡터를 선택한다면, 또하나의 완전한 새 좌표계를 얻게 됩니다. 또한, 수치로 벡터들을 표현할때, 우리는 암묵적으로 특정 기저벡터들을 선택한 상태라는 것이다.

Linear Combination ( 선형결합 )

벡터를 스케일링하고 더하는것을 두 벡터의 선형 결합 (Linear Combination) 이라고 부릅니다.

Span ( 공간 확장 )

기저벡터가 구성한 좌표계상의 모든 벡터들은 기저벡터의 선형결합으로 표현할 수 있다.

2차원에서, 두 벡터쌍의 조합으로 나타날 수 있는 결과 벡터들의 집합을 벡터의 span (공간확장) 이라고 합니다. 2차원 벡터 쌍의 span 은, 대부분의 경우 2차원 공간 전체가 되지만, span 이 특정 선 위로 제한되는 경우도 있다.

기저 벡터 Basis Vector

우리는 어떤 벡터를 수적으로 표현할 때 암묵적으로 기저벡터에 의존한다. 어떤 벡터의 머리에 해당하는 좌표를 말할때, 해당 벡터의 머리가 (2,4) 인지, (5,-1) 인지 어떻게 논할수 있겠는가. 어떤 좌표계 ( 기저벡터 )에 대해서, 즉 흔히 말하는 x, y 축이 어떤 방향이냐에 따라 x,y 값이 달라지기 때문이다. 또한 , 해당 좌표는, 각 기저벡터의 스칼라배 를 더한것과 같다. 예를 들어, 어떤 좌표계 (기저벡터) x, y, z 축에 대해서, (2,3,4) 는 기저벡터 x축 (1,0,0) 의 2배 기저벡터 y축 (0,1,0) 의 3배 기저벡터 z축 (0,0,1) 의 4배 를 더한것과 같다.

                        
기저벡터 가 아래와 같을때, ( 좌표계 )
x = (1,0,0);
y = (0,1,0);
z = (0,0,1);

v1 = (2,3,4); 가 있다면,

v1 == 2x + 3y + 4z
v1 == 2(1,0,0) + 3(0,1,0) + 4(0,0,1) 이다.
v1 == (2,3,4)
                        
                    

이에 대해 다른 벡터를 기저 벡터로 삼는것이 가능하며, 그에 따른 완전히 새로운 좌표계를 얻을 수 있다 는 것을 알 수 있다.

각 기저벡터에 스칼라배 해서 얻을 수 있는 벡터는, 기저벡터가 이루는 평면위를 가리키는 벡터로, 무한이 얻을 수 있다.

벡터공간의 기저는 공간 전체를 생성하는 선형 독립인 벡터의 집합이다.

선형결합

두 벡터를 스케일하고 더하여 새 벡터를 얻는 모든 연산

av + bw

1차 결합 예를 들면 벡터를 ㄹㅁㅁㅁㅁㅁㅁㅁㅈ ㅈ제곱하거나 그런 고차원의 연산이 아니라, 2차 함수도 아니고 딱 벡터의 1차함수식 으로만 표현할 수 있는 모든 벡터 라고도 할 수 있다.

벡터의 선형 집합은 점으로 표현하는 것이 좋다. 벡터의 머리를 점으로 표현하고 벡터의 꼬리를 원점으로 이동시켜 벡터의 집합을 화살표가 아닌, 점으로 간결하게 표현할 수 있다. 그리고 이 점을 이어, 선으로 표현할 수도 있다. (1,0),(1.1,0),(1.2, 0),(2,0),(3,0)....(n,0) 을 이어서, x 축으로 표현 할 수 있고. 마찬가지로 (0,1) (0,2) (0,3) ... (0, n) 을 쭉 이어서 , y 축으로 표현할 수 있다. (qa,kb), (2qa,2kb), (3qa, 3kb) .... ( nqa, nkb) 를 쭉 이어서 또하나의 직선을 표현할 수 있다.

변환

기저벡터가 어떻게 변했는지만 알면 변환은 끝이다.

  • Directed Line Segment (지향선분) : 방향이 있는 선분
  • Unit Vector (단위벡터) : 크기가 1인 벡터
  • Normalization (정규화) : 임의의 벡터를 단위벡터로 만드는 것
  • Translation (병진이동) : 이동

벡터의 연산

벡터의 길이(크기) 구하기

벡터의 크기는 벡터의 길이이며, 피타고라스 정리에 의해 구할 수 있다. vector ( x,y,z ) 인 경우, 벡터의 길이 (크기) 는 (x^2, y^2, z^2) 의 제곱근이다.

Normalization

벡터의 크기는 벡터의 길이이며, 피타고라스 정리에 의해 구할 수 있다. vector ( x,y,z ) 인 경우, 벡터의 길이 (크기) 는 (x^2, y^2, z^2) 의 제곱근이다.

각 벡터의 성분을, 벡터의 크기로 나누면 벡터의 정규화가 된다.

벡터를 순전히 방향으로 나타내는 용도로만 사용하는 경우에는 백터의 길이가 중요하지 않다.

벡터 합

두 벡터의 성분들 끼리 더하면 된다.

벡터 * 스칼라 곱

벡터의 각 성분에 스칼라 값을 더하면 된다.

벡터의 내적 ( Dot Product, Inner Product, Scalar Product )

결과가 스칼라 값을 내는 벡터의 일종이다 대응되는 성분들의 곱의 합

                            
U DotProduct V
=== UxVx + UyVz + UzVz
== ||u|| * ||v|| * cos(a)

u = (Ux, Uy, Uz);
v = (Vx, Vy, Vz);
a = 두 벡터 사이의 각도 ;

// 벡터의 내적
u.v 
== UxVx + UyVy + UzVz;
== ||u||*||v||cos(a); // a 는 u 와 v 사이의 0<= a <= pi 를 만족하는 각도이다.

if( ||u|| == 1 && ||v|| == 1 )
{ 1 * 1 * cos(a) = cos(a) ; } // 만약 두 벡터가 단위 벡터라면, 벡터의 내적은 cos(a) 이다.
// 그렇다면, cos(a) 가 0 이라면, 두 벡터는 직교 , 한다는것을 알 수 있다.

UxVx + UyVy + UzVz == ||u||*||v||cos(a)
내적한 결과가 0 이라면, 두 벡터는 직교이다.
                            
                        

내적의 결과가 0 이라면, 두 벡터는 직교하는 벡터이다.

직교투영 ( 정사영 )

- 벡터 V 와 단위벡터 N 이 있을때, 단위벡터 N 에 대한 벡터 V 의 직교투영(정사영) 된 벡터 P 를 구할수 있다. 단위벡터 N 을 기준으로 한 벡터 V 의 직교투영(정사영) 한 벡터 P를 구할 수 있다. P = (||V|| cos(a))N = (||V|| *1* cos(a))N = ( ||V|| * ||N|| * cos(a) )N =( V dotProduct N )*N - 만약 N 이 단위벡터가 아니라면, 정규화를 통해 단위벡터를 구한 다음, V 의 정사영을 구할수 있다. 즉 일반화 한다면, 두 벡터 V 와 N 이 있을때, N 에 대한 V 의 직교투영한 벡터를 구하는 식은 아래와 같다. P = Proj N ( V ) = ( V dotProduct N / ||N|| ) N/||N| = ( V dotProduct N ) / || N ||^2 * N - 벡터 P 는, 벡터 V 가 벡터 N 방향의 얼마만큼 받았는지를 알 수 있다. - P2 = V - P 하면, P 에 대한 직교 하는 벡터이자, V 를 이루는 또하나의 벡터 P2 를 얻을 수 있다. V = P + P2 - 만약 직교투영을 연속적으로 행하는, 정규직교 집합을 만든다며느 특정 벡터를 축으로 좌표계를 재 정의하고, 기준 벡터 기준으로 얼마만큼의 벡터인지 재정의 할 수 있지 않을까? 마치 MakeRotX 함수처럼 좌표계 변환에 쓸 수 있지 않을까?

벡터의 외적 ( Cross Product, Outer Product )

- 3차원 벡터에 대해서만 정의 된다. ( 2차원 벡터에 대해서는 외적이 없다 ) - 외적으로 두 벡터에 대해 직교하는 벡터를 구할 수 있다. - 두 3차원 벡터 U 와 V 의 외적을 취하면 U 와 V 모두에 직교인 또다른 벡터 W 가 나온다

외적

                            
U = (Ux, Uy, Uz)
V = (Vx, Vy, Vz)

W = U CrossProduct V = ( UyVz - UzVy , UxVz - UzVx , UxVy - UyVx )
                            
                        

외적은 교환법이 성립하지 않는다.

                            

U CrossProduct V ≠ V CrossProduct U
U CrossProduct V == -V CrossProduct U                                
                            
                        

2차원 유사 외적

- 2차원에서는 두 벡터에 수직인 벡터가 존재 하지 않는다. - 하나의 2차원 벡터에 대한 수직인 벡터는 구할 수 있다.

                            
U = ( Ux , Uy ) 일때
V = ( -Uy , Ux ) 이다.

// 증명
U DotProduct V = Ux(-Uy) + (UyUx) = 0
                            
                        

3D Object 의 좌표계 기저벡터 LocalX, LocalY, LocalZ 로 이루어진 3차원 공간 LocalSpace 의 벡터 Vector A 의 수치값은 기저벡터 WorldX, WorldY, WorldZ 로 이루어진 3차원 공간 WorldSpace 에서의 Vector A 의 수치값과 다르다. 벡터의 기준이 되는 기저벡터 (좌표계) 에 따라, 같은 벡터라도 수치가 다를 수 있다는 것이다.

방정식 계

또한 선형대수가 훨씬 광범위하게 적용가능하다고 하는 주된 이유는, 어떤 기술적 분야이든지 필요하다고 하는 이유는, 어떤 방정식계 ( System of Equalation ) 이든지 해결할 수 있기 때문이다.

스케일된 변수를 더하는 게 전부인 방정식을 아래와 같이 표현할 수 있다. 좌변에는 변수항을 열에 맞추워 배치하고, 우변에는 상수항을 배치한다. (어떤 지수함수나, 변수끼리의 곱이 없는 방정식만) 이런 변수들을 조직화 한것이 일종의 특수한 방정식 계라고 할 수 있다.

2x + 5y + 3z = -3 4x + 0y + 8z = 0 1x + 3y + 0z = 2

선형 방정식계 ( Linear System of Equation ) 이렇게 하면, 행렬-벡터 곱셈이랑 비슷해 보인다.

열공간

집합 선형 변환으로 나올 수 있는 집합

NullSpace,Kernel

선형변환의 결과가 0이 되는 해의 집합