def test_transpose(self): M = Mat(({0, 1}, {0, 1}), {(0, 1): 3, (1, 0): 2, (1, 1): 4}) self.assertEqual(M.transpose(), Mat(({0, 1}, {0, 1}), {(0, 1): 2, (1, 0): 3, (1, 1): 4})) M = Mat(({'x', 'y', 'z'}, {2, 4}), {('x', 4): 3, ('x', 2): 2, ('y', 4): 4, ('z', 4): 5}) Mt = Mat(({2, 4}, {'x', 'y', 'z'}), {(4, 'x'): 3, (2, 'x'): 2, (4, 'y'): 4, (4, 'z'): 5}) self.assertEqual(M.transpose(), Mt)
def test_matrix_matrix_mul(self): A = Mat(({0, 1, 2}, {0, 1, 2}), {(1, 1): 4, (0, 0): 0, (1, 2): 1, (1, 0): 5, (0, 1): 3, (0, 2): 2}) B = Mat(({0, 1, 2}, {0, 1, 2}), {(1, 0): 5, (2, 1): 3, (1, 1): 2, (2, 0): 0, (0, 0): 1, (0, 1): 4}) self.assertEqual(A * B, Mat(({0, 1, 2}, {0, 1, 2}), {(0, 0): 15, (0, 1): 12, (1, 0): 25, (1, 1): 31})) C = Mat(({0, 1, 2}, {'a', 'b'}), {(0, 'a'): 4, (0, 'b'): -3, (1, 'a'): 1, (2, 'a'): 1, (2, 'b'): -2}) D = Mat(({'a', 'b'}, {'x', 'y'}), {('a', 'x'): 3, ('a', 'y'): -2, ('b', 'x'): 4, ('b', 'y'): -1}) self.assertEqual(C * D, Mat(({0, 1, 2}, {'x', 'y'}), {(0, 'y'): -5, (1, 'x'): 3, (1, 'y'): -2, (2, 'x'): -5})) M = Mat(({0, 1}, {'a', 'c', 'b'}), {}) N = Mat(({'a', 'c', 'b'}, {(1, 1), (2, 2)}), {}) self.assertEqual(M * N, Mat(({0, 1}, {(1, 1), (2, 2)}), {})) E = Mat(({'a', 'b'}, {'A', 'B'}), {('a', 'A'): 1, ('a', 'B'): 2, ('b', 'A'): 3, ('b', 'B'): 4}) F = Mat(({'A', 'B'}, {'c', 'd'}), {('A', 'd'): 5}) self.assertEqual(E * F, Mat(({'a', 'b'}, {'d', 'c'}), {('b', 'd'): 15, ('a', 'd'): 5})) self.assertEqual(F.transpose() * E.transpose(), Mat(({'d', 'c'}, {'a', 'b'}), {('d', 'b'): 15, ('d', 'a'): 5}))
def test_transpose(self): M = Mat(({0, 1}, {0, 1}), {(0, 1): 3, (1, 0): 2, (1, 1): 4}) self.assertEqual( M.transpose(), Mat(({0, 1}, {0, 1}), { (0, 1): 2, (1, 0): 3, (1, 1): 4 })) M = Mat(({'x', 'y', 'z'}, {2, 4}), { ('x', 4): 3, ('x', 2): 2, ('y', 4): 4, ('z', 4): 5 }) Mt = Mat(({2, 4}, {'x', 'y', 'z'}), { (4, 'x'): 3, (2, 'x'): 2, (4, 'y'): 4, (4, 'z'): 5 }) self.assertEqual(M.transpose(), Mt)
R = {'gnome', 'hoop', 'slinky', 'putty', 'shooter'} u = Vec(R, {'putty': 133, 'gnome': 240, 'slinky': 150, 'hoop': 55, 'shooter': 90}) print(u * M) # Example 5.5.12 B = coldict2mat(button_vectors(5)) print(B) s = Vec(B.D[0], {(2, 2): one}) # Example 5.5.15 b = Vec(D, {'water': 373.1, 'concrete': 312.0, 'plastic': 215.4, 'metal': 51.0, 'electricity': 356.0}) # help(solve) print(isinstance(M, Mat)) print(isinstance(b, Vec)) print(b.D == M.transpose().D[0]) solution = solve(M.transpose(), b) print(solution) residual = b - solution * M print(residual * residual) # Example 5.5.16 # sol = solve(B, s) # print(sol) # print(B * sol == s) # print([(i, j) for (i, j) in sol.D if sol[i, j] == one]) # Example 5.6.4 # D_high = {(i, j) for i in range(3000) for j in range(2000)}
print(B) s = Vec(B.D[0], {(2, 2): one}) # Example 5.5.15 b = Vec( D, { 'water': 373.1, 'concrete': 312.0, 'plastic': 215.4, 'metal': 51.0, 'electricity': 356.0 }) # help(solve) print(isinstance(M, Mat)) print(isinstance(b, Vec)) print(b.D == M.transpose().D[0]) solution = solve(M.transpose(), b) print(solution) residual = b - solution * M print(residual * residual) # Example 5.5.16 # sol = solve(B, s) # print(sol) # print(B * sol == s) # print([(i, j) for (i, j) in sol.D if sol[i, j] == one]) # Example 5.6.4 # D_high = {(i, j) for i in range(3000) for j in range(2000)}
def test_matrix_matrix_mul(self): A = Mat(({0, 1, 2}, {0, 1, 2}), { (1, 1): 4, (0, 0): 0, (1, 2): 1, (1, 0): 5, (0, 1): 3, (0, 2): 2 }) B = Mat(({0, 1, 2}, {0, 1, 2}), { (1, 0): 5, (2, 1): 3, (1, 1): 2, (2, 0): 0, (0, 0): 1, (0, 1): 4 }) self.assertEqual( A * B, Mat(({0, 1, 2}, {0, 1, 2}), { (0, 0): 15, (0, 1): 12, (1, 0): 25, (1, 1): 31 })) C = Mat(({0, 1, 2}, {'a', 'b'}), { (0, 'a'): 4, (0, 'b'): -3, (1, 'a'): 1, (2, 'a'): 1, (2, 'b'): -2 }) D = Mat(({'a', 'b'}, {'x', 'y'}), { ('a', 'x'): 3, ('a', 'y'): -2, ('b', 'x'): 4, ('b', 'y'): -1 }) self.assertEqual( C * D, Mat(({0, 1, 2}, {'x', 'y'}), { (0, 'y'): -5, (1, 'x'): 3, (1, 'y'): -2, (2, 'x'): -5 })) M = Mat(({0, 1}, {'a', 'c', 'b'}), {}) N = Mat(({'a', 'c', 'b'}, {(1, 1), (2, 2)}), {}) self.assertEqual(M * N, Mat(({0, 1}, {(1, 1), (2, 2)}), {})) E = Mat(({'a', 'b'}, {'A', 'B'}), { ('a', 'A'): 1, ('a', 'B'): 2, ('b', 'A'): 3, ('b', 'B'): 4 }) F = Mat(({'A', 'B'}, {'c', 'd'}), {('A', 'd'): 5}) self.assertEqual( E * F, Mat(({'a', 'b'}, {'d', 'c'}), { ('b', 'd'): 15, ('a', 'd'): 5 })) self.assertEqual( F.transpose() * E.transpose(), Mat(({'d', 'c'}, {'a', 'b'}), { ('d', 'b'): 15, ('d', 'a'): 5 }))