skew function should like this: def skew(x): # vector to skew R^3 -> so(3) x = x.ravel() # fixed by ljl X = np.array([[0, -x[2], x[1]], [x[2], 0, -x[0]], [-x[1], x[0], 0]]) return X