민돌이2 2022. 1. 4. 20:10

점곱(dot product) 또는 내적(inner product)은 스칼라 값을 내는 벡터 곱셈의 일종이다. 결과가 스칼라 값이여서 스칼라 곱(scalar product)이라고 부르기도 한다.

u = (ux, uy, uz)이고 v = (vx, vy, vz)라고 가정하고 u와 v의 내적은 다음과 같다.

정리하자면, 내적은 대응되는 성분들의 곱들의 합이다.

코사인 법칙을 사용하면 다음과 같은 관계로 표현할 수 있다.

위 식에서 θ는 벡터 u와 v 사이의 각도이고, 0 ≤ θ ≤ π 이다. 

 

위 식으로 부터 내적의 기하학적 공식을 이끌어 낼 수 있다.

1.u · v = 0이면 u⟂v이다(두 벡터는 직교).

2.u · v > 0이면 두 벡터 사이의 각도 θ는 90°보다 작다(두 벡터는 예각).

3.u · v < 0이면 두 벡터 사이의 각도 θ는 90°보다 크다(두 벡터는 둔각).

 

 

1.직교화(orthogonalization)

벡터들의 집합 {v0, ..., vn-1}이 주어졌을 때, 만일 그 벡터들이 서로 직교이고 단위 길이면, 그 벡터 집합을 정규직교 집합이라고 부른다. 벡터들이 대부분 정규직교이지만 완전히 정규직교는 아닐때, 벡터 집합을 직교베터 집합으로 만드는 것을 직교화라고 부른다.

2차원 벡터 집합 {v0, v1}을 정규직교 집합 {w0, w1}로 만들어보자. w0 = v0으로 시작해서, 벡터 v1을 w0과 직교가 되도록 수정한다. 방법은 v1에서 w0의 방향으로 작용하는 부분을 빼는 것이다. w1 = v1 - projw0(v1)으로 정리할 수 있다.

w0과 w1을 정규화해서 단위 벡터로 만들면 정규직교 집합이 완성된다.

 

3차원의 경우도 2차원 경우와 같은 방식이되 단계가 추가된다. 벡터 집합 {v0, v1, v2}을 정규직교 집합{w0, w1, w2}로 만든다면 w0 = v0으로 시작해서 벡터 v1을 w0과 직교가 되도록 수정한다. 다음으로 벡터 v2를 w0과 w1 모두에 직교가 되도록 만든다. v2에서 w0의 방향으로 작용하는 부분과 w1의 방향으로 작용하는 부분을 빼는것이다.

w2 = v2 - projw0(v2) - projw1(v2)

직교 벡터들의 집합 {w0, w1, w2}를 단위 벡터로 만들면 정규직교 집합이 완성된다.

 

일반적인 경우 n개의 벡터들의 집합 {v0, ..., vn-1}을 직교화는 그림-슈미트 직교화(Gram-Schmidt Orthogonalization)라고 부르는 절차를 따르면 된다.

정리하면, 입력 집합에서 벡터 vi를 택하고, 그 벡터에서 이미 직교 벡터 집합에 들어 있는 다른 벡터 (w0, w1, ..., wi-1)들의 방향으로의 부분을 빼서 그 벡터들과 직교가 되게 만들어서 직교벡터 집합에 추가한다. 이 과정을 반복해서 직교벡터 집합을 완성한 후 그 집합의 모든 벡터를 정규화한다.

728x90