線形代数

Posted by Whale Fall on November 26, 2019

Numpyで実装

ベクトルの生成

a = np.array([[1,  2],  [3,  4]])  
print (a)
>> [1, 2, 3]

行列の生成

a = np.array([[1,  2],  [3,  4]])  
print (a)
>>[[1, 2] 
   [3, 4]]

転置

c1 = np.array([[1,2],[3,4]])
>>[[1 2]
   [3 4]]

d1 = c1.T
>>[[1 3]
   [2 4]]

行列の足し算

# 前述の行列Aに対して
A_plus = A + A

引き算も同様である.

行列の定数倍

A_double = 2*A

行列の積 (ベクトルの場合は内積)

# 前述の行列Aに対して
A_dot = np.dot(A, A.T)

ベクトルの内積もこの方法で算出できる.

アダマール積 (要素ごとの積)

# 前述の行列Aに対して
A_hadamard = A * A

逆行列の生成

P = np.array([[1+1j,2+2j],[3+3j,4+4j]])
P_inverse = np.linalg.inv(P)

ここでPとP_inverseの積を求めると確かに単位行列になる.

行列式

# 前述の行列Pに対して
P_det = np.linalg.det(P)

ゼロ化

Y = np.zeros((2,3), dtype = complex)

実数のみを扱う場合は省略してよい. 整数の場合は dtype = int にする.

単位行列

I = np.eye(3)

np.eye(2,3) といったような正方行列でないものも可能.

行列の結合

yoko = np.concatenate((U,V), axis=1)

縦に結合する場合は axis=0 とすればよい.