def H(self): k = self.neqs Lk = tsa.elimination_matrix(k) Kkk = tsa.commutation_matrix(k, k) Ik = np.eye(k) # B = Lk @ (np.eye(k**2) + commutation_matrix(k, k)) @ \ # np.kron(self.P, np.eye(k)) @ Lk.T # return Lk.T @ L.inv(B) B = Lk @ (np.kron(Ik, self.P) @ Kkk + np.kron(self.P, Ik)) @ Lk.T return np.dot(Lk.T, L.inv(B))
def H(self): k = self.neqs Lk = tsa.elimination_matrix(k) Kkk = tsa.commutation_matrix(k, k) Ik = np.eye(k) # B = chain_dot(Lk, np.eye(k**2) + commutation_matrix(k, k), # np.kron(self.P, np.eye(k)), Lk.T) # return np.dot(Lk.T, L.inv(B)) B = chain_dot(Lk, np.dot(np.kron(Ik, self.P), Kkk) + np.kron(self.P, Ik), Lk.T) return np.dot(Lk.T, L.inv(B))
def test_elimination_matrix(): for k in range(2, 10): m = np.random.randn(k, k) Lk = tools.elimination_matrix(k) assert (np.array_equal(vech(m), np.dot(Lk, vec(m))))
def test_elimination_matrix(): for k in range(2, 10): m = np.random.randn(k, k) Lk = tools.elimination_matrix(k) assert(np.array_equal(vech(m), np.dot(Lk, vec(m))))