とある掲示板に行列の問題に関する質問があったのだが
問題は端折るが、この行列計算は間違っているのか、という質問で、4×4行列を掛け算すればいいだけの話だ。これを手でやるのも面倒なので、numpy を使って計算してやった。
>>> import numpy as np >>> i = np.array([[0,-1,0,0],[1,0,0,0],[0,0,0,1],[0,0,-1,0]]) >>> i array([[ 0, -1, 0, 0], [ 1, 0, 0, 0], [ 0, 0, 0, 1], [ 0, 0, -1, 0]]) >>> j = np.array([[0,0,-1,0],[0,0,0,-1],[1,0,0,0],[0,1,0,0]]) >>> j array([[ 0, 0, -1, 0], [ 0, 0, 0, -1], [ 1, 0, 0, 0], [ 0, 1, 0, 0]]) >>> k = np.array([[0,0,0,1],[0,0,-1,0],[0,1,0,0],[-1,0,0,0]]) >>> k array([[ 0, 0, 0, 1], [ 0, 0, -1, 0], [ 0, 1, 0, 0], [-1, 0, 0, 0]]) >>> (np.dot(i, j) == k).all() True >>> (-np.dot(j, i) == k).all() True >>> (np.dot(j, k) == i).all() True >>> (-np.dot(k,j) == i).all() True >>> (np.dot(k,i) == j).all() True >>> (-np.dot(i,k) == j).all() True
ちょっと気になったのは、こんな回答で果たして質問した人が納得してくれるかどうかである。蛇足しておくと、np.dot() は配列を行列として積を求める関数で、all() は全て True であるときに True とする関数。all() を付けないと、各要素毎に比較して True かどうかを表示する。それでも別に構わないのだが、掲示板には文字数制限があるので、なるべく文字数を節約するということで。
JUGEMテーマ:python
- 2019.05.30 Thursday
- Python
- 18:36
- comments(0)
- trackbacks(0)
- by phinloda