def raw_sim_one_disc(start, steps, cur_step, dy_data): result = [] prev_affine_val = np.zeros(len(start)) for idx in range(cur_step, cur_step + steps, 1): a_exp = mat_pow(dy_data.dense_a_matrix, idx - 1) new_affine_val = np.array( np.matmul(a_exp, dy_data.dense_b_vector).flatten().tolist() [0]) + np.array(prev_affine_val) prev_affine_val = new_affine_val # abc = np.matmul(mat_pow(dy_data.dense_a_matrix, idx), np.array(start)).tolist()[0] new_state = np.matmul(mat_pow(dy_data.dense_a_matrix, idx), np.array(start)).tolist()[0] + prev_affine_val result.append(new_state) return result
def try_conjecture_1(n, m, cap=10000): for _ in xrange(cap): M_m = get_H(n) M_p = get_H(m) C = get_M(n, m) Cp = np.transpose(C) terms = [] for i in xrange(5): M1 = mat_pow(M_m, 4 - i) M2 = mat_pow(M_p, i) MM = np.dot(M1, C) MM2 = np.dot(M2, Cp) MM3 = np.dot(MM, MM2) terms.append(np.trace(MM3) * binom(4, i)) ans = sum(terms) if (ans < -eps): print "FAIL" print ans exit(0)
def simulate_origin_disc(self, start, steps, cur_step): Timers.tic("simulation") result = [] prev_val = start for idx in range(cur_step, cur_step + steps, 1): a_exp = mat_pow(self.dy_data.dense_a_matrix, idx - 1) new_val = np.array( np.matmul(a_exp, self.dy_data.dense_b_vector).flatten().tolist( )[0]) + np.array(prev_val) prev_val = new_val result.append(new_val) Timers.toc("simulation") return result