0. 前処理
$d=3$として
import numpy as np
x=np.array([1,2,3])
y=np.array([4,5,6])
z=np.array([7,8,9])
s=np.array([x,y,z])
とします.
1. 内積(inner product)
x,y\in\mathbb{R}^d,<x,y>=x^{\rm T}y=\sum^{n}_{i=1}x_iy_i
np.dot(x,y),x@y
>> (32,32)
2. 内積の逆(正式名称知りません)
x,y\in\mathbb{R}^d,xy^{\rm T}_{i,j}=x_iy_j,xy^{\rm T}\in\mathbb{R}^{d\times d}
np.outer(x,y)
>> array([[ 4, 5, 6],
[ 8, 10, 12],
[12, 15, 18]])
3. その他
from numpy import linalg as LA
# 二次形式
x@s@x==228
>> True
# lp-ノルム
p=2
LA.norm(x,ord=p)==3.7416573867739413
>> True
# 無限のるむ
np.max(x)==3
>> True
# 行列式
LA.det(s)==0.0
>> True
# 逆行列
try:
LA.inv(s)
except LA.LinAlgError:
print('not singular matrix')
>> not singular matrix
# フロベニウスノルム
LA.norm(s,'fro')==16.881943016134134
>> True
# 行列のpノルム
p=1
LA.norm(s,ord=p)==18.0
>> True
# 行列の無限ノルム
np.max(s)==9
>> True