Numpy20本ノック
問題その9 逆行列
下記の値を求めてください。
・行列の行列式の値
・行列式の値が0でなければその逆行列
そもそも行列式とは??
なのですが、とりあえず行列を作ります。
A = np.array([[4,-2],[1,0]])
A
array([[ 4, -2],
[ 1, 0]])
で、本題の行列式ですが
np.linalg.det() 行列式を計算する
だそうです。
動画の中でもあまり触れていなかったので
行列式について少し調べてみました。
計算としてはこんな感じみたいです。
あまり深く考えず、こうゆうものだとして、軽く理解しときます(笑)
det = np.linalg.det(A)
det
2.0
で、この後もよくわからない話になるのですが、
行列式が0でない場合は逆行列というものが存在するそうです。
今回は2.0という値が返ってきたので
逆行列が存在するということらしいです。
逆行列の求め方は下記となります。
Ainv = np.linalg.inv(A)
Ainv
array([[ 0. , 1. ],
[-0.5, 2. ]])
さらに行列と逆行列を行列積すると単位行列になるそうです。
やってみます。
A @ Ainv
array([[1., 0.],
[0., 1.]])
問題その10 ブロードキャスト
Numpyで定義されたベクトル、行列にスカラーを掛けた場合の
計算結果を確認してください。
もう、問題の意味がよくわかりません(笑)
でもめげずにくらいついていきます(笑)
ブロードキャストとは
行列、ベクトルの計算を
簡易的に書けるしくみだそうです。
スカラーとは
ベクトルでも行列でも無い「普通の数字」
なのでこの問題はベクトルと行列に普通の数字を掛ける
ということみたいです。
とりあえず問題の行列を定義します。
A = np.array([[4,-2],[1,0]])
A
array([[ 4, -2],
[ 1, 0]])
B = np.array([[8,1,5],[-3,0,-7]])
B
array([[ 8, 1, 5],
[-3, 0, -7]])
まずは行列Aに0.5を掛けます。
全ての要素に0.5が掛けられます。
A * 0.5
array([[ 2. , -1. ],
[ 0.5, 0. ]])
つぎにBに対して2を掛けます。
こちらも全ての要素に2が掛けられます。
B * 2
array([[ 16, 2, 10],
[ -6, 0, -14]])
コメントを書く