示例#1
0
文件: test.py 项目: egaoneko/study
    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)
示例#2
0
文件: test.py 项目: egaoneko/study
    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}))
示例#3
0
    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)
示例#4
0
文件: task.py 项目: egaoneko/study
    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)}
示例#5
0
    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)}
示例#6
0
    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
            }))