a와 b의 내적 (Inner Product; Dot Product; a⋅b)
벡터×벡터 → 스칼라
두 벡터가 얼마나 같은 방향인지 비교하는 방법
(1) 기하학적 관점의 내적
a⋅b=∣a∣⋅∣b∣cosθ (크기⋅크기⋅각)
a⋅b=(∣a∣cosθ)⋅∣b∣ (정사영⋅길이)
cf. 정사영(orthogonal projection): 벡터를 수직으로 내린 발
(2) 대수적 관점의 내적
= \sum_{i=1}^n u_i v_i
= u_1 v_1 + \cdots + u_n v_n$$
- 두 벡터 $\mathbf{u}, \mathbf{v}$의 내적은 각 성분끼리 곱한 후 모두 더한 **스칼라 값**이다.
#### Python
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 1. np.dot 함수 사용
result1 = np.dot(a, b)
print("np.dot 결과:", result1) # 1*4 + 2*5 + 3*6 = 32
# 2. @ 연산자 사용 (Python 3.5 이상 지원, 가장 파이썬다운 방식)
result2 = a @ b
print("@ 연산자 결과:", result2) # 32
```
### 1.2. 내적의 기본 성질
- 내적은 공학에서 일을 구할 때 사용된다.
- 두 벡터의 내적의 결과는 **스칼라**이다.
- 하나 이상의 벡터가 영벡터이거나, 두 벡터가 서로 **직교**(orthogonal)/**수직**이면 내적은 0이다.
### 1.3. 내적의 연산법칙
- **내적공간**(inner product space)
- u⋅u >= 0
- 교환법칙 성립
- 분배법칙 성립
- cu⋅v = c(u⋅v)
- u⋅0=0⋅u=0
- $u⋅u=||u||^2$
- 코시-슈바르츠 부등식
- $||u⋅v||<=||u||||v||$
### 1.4. 두 벡터의 수직, 평행 조건
- 두 벡터가 수직이면 $\vec{a}⋅\vec{b}=0$이다.
- 두 벡터가 평행하면 $\vec{b}=k\vec{a}$이다.
- $R^n$ 벡터들의 집합 S가
- $\vec{v_i}⋅\vec{v_j}=0$을 만족하면 **직교 집합**(orthogonal set)
- $\vec{v_i}⋅\vec{v_j}=1$도 만족하면 **정규 직교 집합**(orthonormal set)
### 1.5. 노름과 두 벡터의 거리
- **노름**
- $|\mathbf{u}| = \sqrt{\mathbf{u}\cdot\mathbf{u}}$
- **두 벡터 사이의 거리**
- $|\mathbf{u}-\mathbf{v}| = \sqrt{(u_1-v_1)^2 + (u_2-v_2)^2 + \cdots}$
### 1.6. 두 벡터의 사잇각
$$\cosθ=\frac{\vec{a}⋅\vec{b}}{|\vec{a}||\vec{b}|}$$
- 이를 이용해 부호로 각도를 판별할 수 있다.
- 두 벡터의 사잇각이 **예각**이면 $\vec{a}⋅\vec{b}>0$ (양수)
- 두 벡터가 **직교**하면 0
- 두 벡터의 사잇각이 **둔각**이면 $\vec{a}⋅\vec{b}<0$ (음수)
### 1.7. 직교와 주요 성질
- 직교(orthogonal): u·v = 0이면 두 벡터는 수직
- 정규직교집합: 서로 직교하면서 각 벡터의 노름이 1인 집합 (vᵢ·vⱼ = 0, vᵢ·vᵢ = 1)
- 직교집합(영벡터 제외)은 선형독립
- **코시-슈바르츠 부등식**: $|\mathbf{u}\cdot\mathbf{v}| \le |\mathbf{u}||\mathbf{v}|$
- **삼각 부등식**: $|\mathbf{u}+\mathbf{v}| \le |\mathbf{u}| + |\mathbf{v}|$
- 정사영(orthogonal projection): 벡터 v를 u 방향으로 수직으로 내린 발
## 2. 벡터의 외적
### 2.1. 외적의 뜻과 기호
> $\vec{a}$와 $\vec{b}$의 **외적** (Cross Product; $\mathbf{u} × \mathbf{v}$)
> $R^3$의 두 벡터에 정의, 벡터×벡터 → **벡터**
> 두 벡터가 만드는 평면과 수직인 방향을 찾는 방법
#### (1) 기하학적 관점의 외적
- 3차원에서 외적은 두 벡터에 수직이며 크기가 평행사변형 넓이인 벡터이다.
$$\mathbf{u} × \mathbf{v}
= (|\mathbf{u}| |\mathbf{v}| \sin\theta) \mathbf{e}$$
- 여기서 e는 u, v가 만드는 평면에 수직인 단위벡터(법선벡터)로, 오른손 법칙으로 방향이 정해진다.
- 3차원 공간상의 두 벡터 $\vec{a},\ \vec{b}$가 이루는 평행사변형의 면적이 S일 때 $\vec{a}$와 $\vec{b}$에 수직임과 동시에 크기가 S인 벡터는 $\vec{a}×\vec{b}$이다.
- $|\vec{a}×\vec{b}|=|\vec{a}||\vec{b}|\sinθ$ (=두 벡터가 이루는 **평행사변형**의 면적 S)
#### (2) 대수적 관점의 외적
$$\mathbf{u} × \mathbf{v}
= \begin{bmatrix}
\hat{i}& \hat{j}& \hat{k}\\
u_1& u_2& u_3\\
v_1& v_2& v_3\end{bmatrix}
= (u_2v_3-u_3v_2,\
u_3v_1-u_1v_3,\
u_1v_2-u_2v_1)$$
- 두 벡터 $\mathbf{u}, \mathbf{v}$의 외적은 행렬식의 연산과 *유사*하다.
### 2.2. 성질
- 반교환: u×v = −(v×u)
- u×v는 u, v 모두와 직교
- u, v가 평행이면 u×v = 0
- 크기 ‖u×v‖는 u, v가 만드는 평행사변형의 넓이와 같음
### 2.3. 외적의 계산 법칙
- 하나 이상의 벡터가 영벡터이거나, 두 벡터가 서로 평행이면 외적은 0이다.
- 교대법칙
- 배분법칙
- 외적과 심볼행렬
### 2.4. 응용
- 평행사변형 면적 = $‖u×v‖$
- 삼각형 면적 = $½‖u×v‖$
- 평행육면체 체적 = $|u·(v×w)|$ (스칼라 삼중적)
- **스칼라 삼중적**
- $(\vec{a}×\vec{b})⋅\vec{c}$를 스칼라 삼중적이라 하며,
- 기하학적으로 세 벡터 $\vec{a},\ \vec{b},\ \vec{c}$가 이루는 **평행육면체**의 (부호를 갖는) 부피를 뜻한다.
- 사면체의 부피는 평행육면체 부피의 1/6이다.
- **스칼라 삼중적의 연산순서 변경**
- **스칼라 삼중적의 계산**: 사루스의 법칙 또는 라플라스 전개를 써서 구한다.
$$\vec{a}⋅(\vec{b}×\vec{c})=\begin{vmatrix}
a_1& a_2& a_3\\
b_1& b_2& b_3\\
c_1& c_2& c_3\end{vmatrix}$$
## 3. 평면의 방정식
### 3.1. 좌표평면에 평행한 평면의 방정식
- yz평면에 평행한 평면의 방정식 x=a
- xz평면에 평행한 평면의 방정식 y=b
- xy평면에 평행한 평면의 방정식 z=c
### 3.2. 한 점과 법선벡터가 주어졌을 때 평면의 방정식
- $P_0(x_0,\ y_0,\ z_0)$을 지나고 벡터 $\vec{n}=(a,\ b,\ c)$에 수직인 평면의 방정식은 다음과 같다.
- $a(x-x_0)+b(y-y_0)+c(z-z_0)=0$
### 3.3. 세 점이 주어졌을 때 평면의 방정식
- 세 점으로 두 벡터를 얻는다.
- 두 벡터를 외적하여 평면의 법선벡터를 얻는다.
- 법선벡터와 주어진 세 점 중 하나로 평면의 방정식을 세운다.
## 4. MATLAB
`dot(u, v)` 함수로 내적을 계산합니다. 예를 들어 u=[2;-5;-1], v=[3;2;-3]일 때 `dot(u,v)`는 −1을 반환합니다.
## 5. 활용
> 내적은 신경망 연산과 거리 기반 분류에,
> 외적은 물리학(토크, 로렌츠 힘)과 기하 계산에 응용된다.
- **신경망에서의 활용**
- 신경망 뉴런은 여러 입력값 $X_i$와 연결강도 $W_i$를 곱한 뒤 모두 더하고, 합성함수 f를 적용해 출력을 계산한다.
- 이 "곱하고 더하는" 연산이 바로 벡터 내적이며, 행렬 곱으로 효율적으로 처리할 수 있다.
- **유클리드 거리**
- 이 거리는 패턴 분류에 쓰이며, K-means, K-NN 같은 클러스터링 기법에 활용된다.
$$d = \sqrt{\sum_{i=1}^{n}(q_i - p_i)^2}$$
## Python 실습
- [[A3_NumPy 선형대수 실습#14-내적-dot-product|NumPy 내적: 원소별 곱과 행렬 곱의 차이]]