Vector operation
선형 대수(linear algebra) 에서, 두 좌표 벡터(coordinate vectors) 의 밖의 곱 (outer product )은 행렬(matrix) 입니다. 만약 두 벡터가 차원 n 과 m 을 가지면, 그것들의 밖의 곱은 n × m 행렬입니다. 보다 일반적으로, 두 개의 텐서(tensors , 숫자의 다차원 배열)가 주어지면, 그것들의 밖의 곱은 텐서입니다. 텐서의 밖의 곱은 역시 텐서 곱(tensor product) 이라고 참조되고, 텐서 대수(tensor algebra) 를 정의하기 위해 사용될 수 있습니다.
밖의 곱은 다음과 대조됩니다:
Definition
각각 크기
m
×
1
{\displaystyle m\times 1}
과
n
×
1
{\displaystyle n\times 1}
의 두 벡터가 주어졌을 때,
u
=
[
u
1
u
2
⋮
u
m
]
,
v
=
[
v
1
v
2
⋮
v
n
]
{\displaystyle \mathbf {u} ={\begin{bmatrix}u_{1}\\u_{2}\\\vdots \\u_{m}\end{bmatrix}},\quad \mathbf {v} ={\begin{bmatrix}v_{1}\\v_{2}\\\vdots \\v_{n}\end{bmatrix}}}
u
⊗
v
{\displaystyle \mathbf {u} \otimes \mathbf {v} }
으로 표시되는 그것들의 밖의 곱은
u
{\displaystyle \mathbf {u} }
의 각 원소에
v
{\displaystyle \mathbf {v} }
의 각 원소를 곱함으로써 얻은
m
×
n
{\displaystyle m\times n}
행렬
A
{\displaystyle \mathbf {A} }
로 정의됩니다:[1]
u
⊗
v
=
A
=
[
u
1
v
1
u
1
v
2
…
u
1
v
n
u
2
v
1
u
2
v
2
…
u
2
v
n
⋮
⋮
⋱
⋮
u
m
v
1
u
m
v
2
…
u
m
v
n
]
{\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {A} ={\begin{bmatrix}u_{1}v_{1}&u_{1}v_{2}&\dots &u_{1}v_{n}\\u_{2}v_{1}&u_{2}v_{2}&\dots &u_{2}v_{n}\\\vdots &\vdots &\ddots &\vdots \\u_{m}v_{1}&u_{m}v_{2}&\dots &u_{m}v_{n}\end{bmatrix}}}
또는 인덱스 표기법에서:
(
u
⊗
v
)
i
j
=
u
i
v
j
{\displaystyle (\mathbf {u} \otimes \mathbf {v} )_{ij}=u_{i}v_{j}}
점 곱(dot product) 을
⋅
{\displaystyle \,\cdot }
로 표시하여, 만약
n
×
1
{\displaystyle n\times 1}
벡터
w
{\displaystyle \mathbf {w} }
가 주어졌을 때,
(
u
⊗
v
)
w
=
(
v
⋅
w
)
u
{\displaystyle (\mathbf {u} \otimes \mathbf {v} )\mathbf {w} =(\mathbf {v} \cdot \mathbf {w} )\mathbf {u} }
입니다. 만약
1
×
m
{\displaystyle 1\times m}
벡터
x
{\displaystyle \mathbf {x} }
가 주어졌을 때,
x
(
u
⊗
v
)
=
(
x
⋅
u
)
v
T
{\displaystyle \mathbf {x} (\mathbf {u} \otimes \mathbf {v} )=(\mathbf {x} \cdot \mathbf {u} )\mathbf {v} ^{\operatorname {T} }}
입니다.
만약
u
{\displaystyle \mathbf {u} }
와
v
{\displaystyle \mathbf {v} }
가 1보다 큰 같은 차원의 벡터이면,
det
(
u
⊗
v
)
=
0
{\displaystyle \det(\mathbf {u} \otimes \mathbf {v} )=0}
입니다.
밖의 곱
u
⊗
v
{\displaystyle \mathbf {u} \otimes \mathbf {v} }
은 행렬 곱셈(matrix multiplication)
u
v
T
{\displaystyle \mathbf {u} \mathbf {v} ^{\operatorname {T} }}
과 동등하며,
u
{\displaystyle \mathbf {u} }
를
m
×
1
{\displaystyle m\times 1}
열 벡터(column vector) 로 나타내고
v
{\displaystyle \mathbf {v} }
를
n
×
1
{\displaystyle n\times 1}
열 벡터 (이는
v
T
{\displaystyle \mathbf {v} ^{\operatorname {T} }}
를 행 벡터로 만듬)로 나타낸다는 조건으로 합니다.[2] [3] 예를 들어, 만약
m
=
4
{\displaystyle m=4}
이고
n
=
3
{\displaystyle n=3}
이면, 다음과 같습니다:[4]
u
⊗
v
=
u
v
T
=
[
u
1
u
2
u
3
u
4
]
[
v
1
v
2
v
3
]
=
[
u
1
v
1
u
1
v
2
u
1
v
3
u
2
v
1
u
2
v
2
u
2
v
3
u
3
v
1
u
3
v
2
u
3
v
3
u
4
v
1
u
4
v
2
u
4
v
3
]
.
{\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {u} \mathbf {v} ^{\textsf {T}}={\begin{bmatrix}u_{1}\\u_{2}\\u_{3}\\u_{4}\end{bmatrix}}{\begin{bmatrix}v_{1}&v_{2}&v_{3}\end{bmatrix}}={\begin{bmatrix}u_{1}v_{1}&u_{1}v_{2}&u_{1}v_{3}\\u_{2}v_{1}&u_{2}v_{2}&u_{2}v_{3}\\u_{3}v_{1}&u_{3}v_{2}&u_{3}v_{3}\\u_{4}v_{1}&u_{4}v_{2}&u_{4}v_{3}\end{bmatrix}}.}
복소수(complex) 벡터에 대해, 그것은 종종
v
{\displaystyle \mathbf {v} }
의 켤레 전치(conjugate transpose) 를 취하는 것이 종종 유용하며,
v
†
{\displaystyle \mathbf {v} ^{\dagger }}
또는
(
v
T
)
∗
{\displaystyle \left(\mathbf {v} ^{\textsf {T}}\right)^{*}}
로 표시됩니다:
u
⊗
v
=
u
v
†
=
u
(
v
T
)
∗
.
{\displaystyle \mathbf {u} \otimes \mathbf {v} =\mathbf {u} \mathbf {v} ^{\dagger }=\mathbf {u} \left(\mathbf {v} ^{\textsf {T}}\right)^{*}.}
Contrast with Euclidean inner product
만약
m
=
n
{\displaystyle m=n}
이면, 행렬 곱을 다른 방법으로 취할 수 있으며, 스칼라 (또는
1
×
1
{\displaystyle 1\times 1}
행렬)를 생성합니다:
⟨
u
,
v
⟩
=
u
T
v
{\displaystyle \left\langle \mathbf {u} ,\mathbf {v} \right\rangle =\mathbf {u} ^{\textsf {T}}\mathbf {v} }
이는 유클리드 벡터 공간(Euclidean vector spaces) 에 대해 표준 안의 곱(inner product) 이며,[3] 점 곱(dot product) 으로 더 잘 알려져 있습니다. 점 곱은 밖의 곱의 대각합(trace) 입니다.[5] 점 곱과 달리, 밖의 곱은 교환적이지 않습니다.
벡터
w
{\displaystyle \mathbf {w} }
와 행렬
u
⊗
v
{\displaystyle \mathbf {u} \otimes \mathbf {v} }
의 곱셈은
(
u
⊗
v
)
w
=
u
⟨
v
,
w
⟩
{\displaystyle \left(\mathbf {u} \otimes \mathbf {v} \right)\mathbf {w} =\mathbf {u} \left\langle \mathbf {v} ,\mathbf {w} \right\rangle }
관계를 사용하여 안의 곱의 관점에서 쓸 수 있습니다.
The outer product of tensors
차원
(
k
1
,
k
2
,
…
,
k
m
)
{\displaystyle (k_{1},k_{2},\dots ,k_{m})}
과
(
l
1
,
l
2
,
…
,
l
n
)
{\displaystyle (l_{1},l_{2},\dots ,l_{n})}
를 갖는 두 개의 텐서
u
,
v
{\displaystyle \mathbf {u} ,\mathbf {v} }
가 주어졌을 때, 그것들의 밖의 곱
u
⊗
v
{\displaystyle \mathbf {u} \otimes \mathbf {v} }
는 차원
(
k
1
,
k
2
,
…
,
k
m
,
l
1
,
l
2
,
…
,
l
n
)
{\displaystyle (k_{1},k_{2},\dots ,k_{m},l_{1},l_{2},\dots ,l_{n})}
과 다음과 같은 엔트리를 갖는 텐서입니다:
(
u
⊗
v
)
i
1
,
i
2
,
…
i
m
,
j
1
,
j
2
,
…
,
j
n
=
u
i
1
,
i
2
,
…
,
i
m
v
j
1
,
j
2
,
…
,
j
n
{\displaystyle (\mathbf {u} \otimes \mathbf {v} )_{i_{1},i_{2},\dots i_{m},j_{1},j_{2},\dots ,j_{n}}=u_{i_{1},i_{2},\dots ,i_{m}}v_{j_{1},j_{2},\dots ,j_{n}}}
예를 들어, 만약
A
{\displaystyle \mathbf {A} }
가 차원
(
3
,
5
,
7
)
{\displaystyle (3,5,7)}
을 갖는 차수 3이고
B
{\displaystyle \mathbf {B} }
가 차원
(
10
,
100
)
{\displaystyle (10,100)}
을 갖는 차수 2이면, 그것들의 밖의 곱
C
{\displaystyle \mathbf {C} }
는 차원
(
3
,
5
,
7
,
10
,
100
)
{\displaystyle (3,5,7,10,100)}
을 갖는 차수 5입니다. 만약
A
{\displaystyle \mathbf {A} }
가 성분 A [2, 2, 4] = 11 을 가지고
B
{\displaystyle \mathbf {B} }
가 성분 B [8, 88] = 13 를 가지면, 밖의 곱에 의해 형성된
C
{\displaystyle \mathbf {C} }
의 성분은 C [2, 2, 4, 8, 88] = 143 입니다.
Connection with the Kronecker product
밖의 곱과 크로네커 곱은 밀접하게 관련되어 있습니다; 실제로 같은 기호가 공통적으로 두 연산을 나타내기 위해 사용됩니다.
만약
u
=
[
1
2
3
]
T
{\displaystyle \mathbf {u} ={\begin{bmatrix}1&2&3\end{bmatrix}}^{\textsf {T}}}
이고
v
=
[
4
5
]
T
{\displaystyle \mathbf {v} ={\begin{bmatrix}4&5\end{bmatrix}}^{\textsf {T}}}
이면, 다음을 가집니다:
u
⊗
Kron
v
=
[
4
5
8
10
12
15
]
,
u
⊗
outer
v
=
[
4
5
8
10
12
15
]
{\displaystyle {\begin{aligned}\mathbf {u} \otimes _{\text{Kron}}\mathbf {v} &={\begin{bmatrix}4\\5\\8\\10\\12\\15\end{bmatrix}},&\mathbf {u} \otimes _{\text{outer}}\mathbf {v} &={\begin{bmatrix}4&5\\8&10\\12&15\end{bmatrix}}\end{aligned}}}
열 벡터의 경우에서, 크로네커 곱은 밖의 곱의 벡터화(vectorization , 또는 평탄화)의 한 형식으로 볼 수 있습니다. 특히, 두 개의 열 벡터
u
{\displaystyle \mathbf {u} }
와
v
{\displaystyle \mathbf {v} }
에 대해, 다음과 같이 쓸 수 있습니다:
u
⊗
Kron
v
=
vec
(
v
⊗
outer
u
)
{\displaystyle \mathbf {u} \otimes _{\text{Kron}}\mathbf {v} =\operatorname {vec} (\mathbf {v} \otimes _{\text{outer}}\mathbf {u} )}
벡터의 순서는 방정식의 오른쪽 변에서 반전됨에 주목하십시오.
연산 사이의 유사성을 더욱 강조하는 또 다른 유사한 항등식은 다음과 같습니다:
u
⊗
Kron
v
T
=
u
v
T
=
u
⊗
outer
v
{\displaystyle \mathbf {u} \otimes _{\text{Kron}}\mathbf {v} ^{\textsf {T}}=\mathbf {u} \mathbf {v} ^{\textsf {T}}=\mathbf {u} \otimes _{\text{outer}}\mathbf {v} }
여기서 벡터의 순서는 뒤집을 필요가 없습니다. 중간 표현은 벡터 곱셈을 사용하며, 여기서 벡터는 열/행 행렬로 고려됩니다.
Connection with the matrix product
크기
m
×
p
{\displaystyle m\times p}
의 행렬
A
{\displaystyle \mathbf {A} }
와 크기
p
×
n
{\displaystyle p\times n}
의 행렬
B
{\displaystyle \mathbf {B} }
의 쌍이 주어졌을 때, 크기 보통 크기
m
×
n
{\displaystyle m\times n}
의 행렬로 정의된 행렬 곱(matrix product)
C
=
A
B
{\displaystyle \mathbf {C} =\mathbf {A} \,\mathbf {B} }
을 생각해 보십시오.
이제
a
k
col
{\displaystyle \mathbf {a} _{k}^{\text{col}}}
를
A
{\displaystyle \mathbf {A} }
의
k
{\displaystyle k}
-번째 열 벡터라고 놓고
b
k
row
{\displaystyle \mathbf {b} _{k}^{\text{row}}}
를
B
{\displaystyle \mathbf {B} }
의
k
{\displaystyle k}
-번째 행 벡터라고 놓습니다. 그런-다음
C
{\displaystyle \mathbf {C} }
는 행-x-열 밖의 곱의 합으로 표현될 수 있습니다:
C
=
A
B
=
(
∑
k
=
1
p
A
i
k
B
k
j
)
1
≤
i
≤
m
1
≤
j
≤
n
=
[
a
1
col
⋯
a
p
col
]
[
b
1
row
⋮
b
p
row
]
=
∑
k
=
1
p
a
k
col
⊗
b
k
row
{\displaystyle \mathbf {C} =\mathbf {A} \,\mathbf {B} =\left(\sum _{k=1}^{p}{A}_{ik}\,{B}_{kj}\right)_{\begin{matrix}1\leq i\leq m\\[-20pt]1\leq j\leq n\end{matrix}}={\begin{bmatrix}&&\\\mathbf {a} _{1}^{\text{col}}&\cdots &\mathbf {a} _{p}^{\text{col}}\\&&\end{bmatrix}}{\begin{bmatrix}&\mathbf {b} _{1}^{\text{row}}&\\&\vdots &\\&\mathbf {b} _{p}^{\text{row}}&\end{bmatrix}}=\sum _{k=1}^{p}\mathbf {a} _{k}^{\text{col}}\otimes \mathbf {b} _{k}^{\text{row}}}
행-x-열 안의 곱(inner product) 엔트리 (또는 점 곱(dot product) ):
C
i
j
=
⟨
a
i
row
,
b
j
col
⟩
{\displaystyle C_{ij}=\langle {\mathbf {a} _{i}^{\text{row}},\,\mathbf {b} _{j}^{\text{col}}}\rangle }
으로 구성된 행렬로 더 공통적인 것과 이 표현의 이중성에 주목하십시오.
이 관계는 특이 값 분해(Singular Value Decomposition (SVD) ) (및 특수한 경우로 스펙트럼 분해(Spectral Decomposition) ) 적용과 관련이 있습니다.[6] 특히, 분해는 대응하는 비-영 특이 값
σ
k
{\displaystyle \sigma _{k}}
로 스케일링된 각 왼쪽 (
u
k
{\displaystyle \mathbf {u} _{k}}
)와 오른쪽 (
v
k
{\displaystyle \mathbf {v} _{k}}
) 특이 벡터의 밖의 곱의 합으로 해석될 수 있습니다:
A
=
U
Σ
V
T
=
∑
k
=
1
rank
(
A
)
(
u
k
⊗
v
k
)
σ
k
{\displaystyle \mathbf {A} =\mathbf {U\Sigma V^{T}} =\sum _{k=1}^{\operatorname {rank} (A)}(\mathbf {u} _{k}\otimes \mathbf {v} _{k})\,\sigma _{k}}
이 결과는
A
{\displaystyle \mathbf {A} }
가 스펙트럼 노름(spectral norm)
σ
k
{\displaystyle \sigma _{k}}
가 내림차순을 갖는 랭크-1 행렬의 합으로 표현될 수 있음을 의미합니다. 이것은 일반적으로 마지막 항이 덜 기여하는 이유를 설명하며, 이는 근사로 잘린 SVD(Truncated SVD) 를 사용하도록 동기를 부여합니다. 첫 번째 항은 벡터의 밖의 곱에 대한 행렬의 최소 제곱 적합입니다.
Properties
벡터의 밖의 곱은 다음 속성을 만족시킵니다:
(
u
⊗
v
)
T
=
(
v
⊗
u
)
(
v
+
w
)
⊗
u
=
v
⊗
u
+
w
⊗
u
u
⊗
(
v
+
w
)
=
u
⊗
v
+
u
⊗
w
c
(
v
⊗
u
)
=
(
c
v
)
⊗
u
=
v
⊗
(
c
u
)
{\displaystyle {\begin{aligned}(\mathbf {u} \otimes \mathbf {v} )^{\textsf {T}}&=(\mathbf {v} \otimes \mathbf {u} )\\(\mathbf {v} +\mathbf {w} )\otimes \mathbf {u} &=\mathbf {v} \otimes \mathbf {u} +\mathbf {w} \otimes \mathbf {u} \\\mathbf {u} \otimes (\mathbf {v} +\mathbf {w} )&=\mathbf {u} \otimes \mathbf {v} +\mathbf {u} \otimes \mathbf {w} \\c(\mathbf {v} \otimes \mathbf {u} )&=(c\mathbf {v} )\otimes \mathbf {u} =\mathbf {v} \otimes (c\mathbf {u} )\end{aligned}}}
텐서의 밖의 곱은 추가 결합성(associativity) 속성을 만족시킵니다:
(
u
⊗
v
)
⊗
w
=
u
⊗
(
v
⊗
w
)
{\displaystyle (\mathbf {u} \otimes \mathbf {v} )\otimes \mathbf {w} =\mathbf {u} \otimes (\mathbf {v} \otimes \mathbf {w} )}
Rank of an outer product
만약 u 와 v 가 모두 비-영이면, 밖의 곱 행렬 uv T 는 항상 행렬 랭크(matrix rank) 1을 가집니다. 실제로, 밖의 곱의 열은 모두 첫 번째 열에 비례적입니다. 따라서, 그것들은 모두 해당 일 열에 선형적으로 종속(linearly dependent) 되므로, 행렬은 랭크 1입니다.
("행렬 랭크"는 "텐서 차수(tensor order) ", 또는 "tensor degree"와 혼동해서는 안되며, 이는 때때로 "랭크(rank)"로 참조됩니다.)
Definition (abstract)
V 와 W 를 두 개의 벡터 공간(vector spaces) 이라고 놓습니다.
v
∈
V
{\displaystyle \mathbf {v} \in V}
와
w
∈
W
{\displaystyle \mathbf {w} \in W}
의 밖의 곱은 원소
v
⊗
w
∈
V
⊗
W
{\displaystyle \mathbf {v} \otimes \mathbf {w} \in V\otimes W}
입니다.
만약 V 가 안의 곱 공간(inner product space) 이면, 밖의 곱을 선형 맵 V → W 으로 정의하는 것이 가능합니다. 이 경우에서, 선형 맵
x
↦
⟨
v
,
x
⟩
{\displaystyle \mathbf {x} \mapsto \langle \mathbf {v} ,\mathbf {x} \rangle }
은 V 의 이중 공간(dual space) 의 원소입니다. 밖의 곱 V → W 은 그런-다음 다음에 의해 제공됩니다:
(
w
⊗
v
)
(
x
)
=
⟨
v
,
x
⟩
w
{\displaystyle (\mathbf {w} \otimes \mathbf {v} )(\mathbf {x} )=\left\langle \mathbf {v} ,\mathbf {x} \right\rangle \mathbf {w} }
이것은 v 의 켤레 전치가 공통적으로 복소수 경우에서 취한다는 것을 보여줍니다.
In programming languages
일부 프로그래밍 언어에서, 두 개의-인수 함수 f
(또는 이항 연산자)가 주어지면, f
와 두 개의 일-차원 배열 A
와 B
의 밖의 곱은 C[i, j] = f(A[i], B[j]
를 만족하는 이-차원 배열 C
입니다. 이것은 구문적으로 다양한 방법으로 표현됩니다: APL 에서, 중위 이항 연산자 ∘. f
로; J 에서 접미사 부사 f /
로; R 에서 함수 outer ( A , B , f )
또는 특별한 %o%
로;[7] Mathematica 에서, Outer [ f , A , B ]
로. MATLAB에서, kron ( A , B )
함수가 이 곱에 대해 사용됩니다. 이들은 종종 다-차원 인수와 2보다 많은 인수로 일반화됩니다.
Python 라이브러리 NumPy 에서, 밖의 곱은 np.outer()
함수로 계산될 수 있습니다.[8] 대조적으로, np.kron
은 평면 배열을 생성합니다. 다차원 배열의 밖의 곱은 np.multiply.outer
를 사용하여 계산될 수 있습니다.
Applications
밖의 곱은 크로네커 곱(Kronecker product) 과 밀접한 관련이 있으므로, 크로네커 곱의 일부 응용은 밖의 곱을 사용합니다. 이들 응용은 양자 이론, 신호 처리(signal processing) , 및 이미지 압축(image compression) 에서 찾을 수 있습니다.[9]
Spinors
(s , t ) 가 (w , z ) 가 C 2 안에 있도록 s , t , w , z ∈ C 를 가정합니다. 그런-다음 이들 복소수 2-벡터의 밖의 곱은 2 × 2 복소수 행렬, M(2, C ) 의 원소입니다:
(
s
w
t
w
s
z
t
z
)
.
{\displaystyle {\begin{pmatrix}sw&tw\\sz&tz\end{pmatrix}}.}
이 행렬의 행렬식(determinant) 은 C 의 교환 속성(commutative property) 때문에 swtz − sztw = 0 입니다.
삼 차원에서 스피너(spinors in three dimensions) 이론에서, 이들 행렬은 이러한 널 속성(null property)으로 인해 등방적 벡터(isotropic vectors) 와 결합됩니다. 엘리 카르탕(Élie Cartan) 은 1937년에 이 구성을 설명했지만,[10] 1927년 볼프강 파울리(Wolfgang Pauli) 에 의해 도입되어,[11] M(2,C ) 가 파울리 대수(Pauli algebra) 라고 불리게 되었습니다.
Concepts
외부 곱의 블록 형식은 분류에 유용합니다. 개념 해석(Concept analysis) 은 특정 밖의 곱에 의존하는 연구입니다.
벡터가 오직 0과 1의 엔트리를 가질 때, 그것은 논리적 행렬(logical matrix) 의 특수한 경우, 논리적 벡터 (logical vector )라고 불립니다. 논리적 연산 and 는 곱셈을 대신합니다. 두 논리적 벡터 (u i ) 와 (v j ) 의 밖의 곱은 논리적 행렬
(
a
i
j
)
=
(
u
i
∧
v
j
)
{\displaystyle \left(a_{ij}\right)=\left(u_{i}\land v_{j}\right)}
에 의해 제공됩니다. 이러한 유형의 행렬은 이항 관계(binary relations) 연구에 사용되고, 직사각형 관계(rectangular relation) 또는 교차-벡터 (cross-vector )라고 불립니다.[12]
See also
Products
Duality
References
^ Lerner, R. G. ; Trigg, G. L. (1991). Encyclopaedia of Physics (2nd ed.). VHC. ISBN 0-89573-752-3 .
^ Lipschutz, S.; Lipson, M. (2009). Linear Algebra . Schaum’s Outlines (4th ed.). McGraw-Hill. ISBN 978-0-07-154352-1 .
^ a b Keller, Frank (February 23, 2020). "Algebraic Properties of Matrices; Transpose; Inner and Outer Product" (PDF) . inf.ed.ac.uk . Retrieved September 6, 2020 .
^ James M. Ortega (1987) Matrix Theory: A Second Course , page 7, Plenum Press ISBN 0-306-42433-9
^ Stengel, Robert F. (1994). Optimal Control and Estimation . New York: Dover Publications. p. 26. ISBN 0-486-68200-5 .
^ Trefethen, Lloyd N. ; Bau III, David (1997). Numerical linear algebra . Philadelphia: Society for Industrial and Applied Mathematics. ISBN 978-0-89871-361-9 .
^ "outer function | R Documentation" . www.rdocumentation.org . Retrieved 2020-09-07 .
^ "numpy.outer — NumPy v1.19 Manual" . numpy.org . Retrieved 2020-09-07 .
^ Steeb, Willi-Hans; Hardy, Yorick (2011). "Applications (Chapter 3)". Matrix Calculus and Kronecker Product: A Practical Approach to Linear and Multilinear Algebra (2 ed.). World Scientific. ISBN 981-4335-31-2 .
^ Élie Cartan (1937) Lecons sur la theorie des spineurs , translated 1966: The Theory of Spinors , Hermann, Paris
^ Pertti Lounesto (1997) Clifford Algebras and Spinors , page 51, Cambridge University Press ISBN 0-521-59916-4
^ Ki Hang Kim (1982) Boolean Matrix Theory and Applications , page 37, Marcel Dekker ISBN 0-8247-1788-0
Further reading