Python 無料で独習 【超特訓】Numpy20本ノック 05

Python
この記事は約2分で読めます。

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]])

コメント

タイトルとURLをコピーしました