👩‍💻LEARN : ML&Data/Book Study

[알고리즘 구현으로 배우는 선형대수] #9. 다양한 곱 연산

쟈니유 2023. 4. 13. 11:29
728x90

1. 외적과 크로네커 곱 

벡터의 외적 (텐서곱)

벡터의 내적과 달리 외적의 연산 결과는 행렬로 도출됨 

 

크로네커 곱

외적의 특수한 경우로, 표기법은 동일함

행렬 A가 nxp행렬이고 B가 mxd 행렬일 때, A,B의 크로네커 곱은 크기가 nmxpd인 행렬이다. 

2. 벡터곱 (크로스곱)

정의

3차원 공간의 벡터들 간에 적용할 수 있는 연산으로, 벡터 u,v의 벡터곱 uxv의 의미는 uv에 수직인 벡터를 의미한다  

귀찮아서 결국 아이패드 메모앱을 켜버림

 

기하학적 의미

  • 벡터 a,b가 있을 때 a x b는 두 벡터에 수직인 벡터를 의미한다. 
    • ||a x b|| = 0 : 만약 벡터 a,b가 평행한다면 (같은 선 상에 있다면) 벡터 곱의 크기는 0이다. 
  • ||a x b||의 의미 
    • 벡터 a,b와 수직하는 벡터의 길이 
    • a,b가 만드는 평행사변형의 넓이(!) 
    • 평행사변형의 넓이는 평행사변형의 양 변 x 높이인데 양 변은 각각 ||a||,||b||이며 높이는 ||b||sin 이다. 
    • 그러므로 ||a x b|| = ||a||||b||sin 

3. 삼중곱

스칼라 삼중곱

  • 벡터 b,c를 벡터곱한 이후 a와 내적하는 것을 의미함 
  • 기하학적으로는 a,b,c의 벡터로 정의되는 평행 육면체의 부피를 의미한다. 

벡터 삼중곱 

  • a x (b x c) 
  • 스칼라 삼중곱에서 벡터 간 연산을 모두 벡터곱으로 수행하는 것을 의미한다. 

파이썬 실습 

#외적 연산 실습 
#1. numpy 

import numpy as np

a = np.array([1,2,3])
b = np.array([4,5])

res = np.outer(a,b)

#2. python 

def outer_product(a,b):
    res= []
    n1 = len(a)
    n2 = len(b)

    for i in range(0,n1):
        row = []
        for j in range(0,n2):
            val = a[i]*b[i]
            row.append(val)
        res.append(row)

    return res