def test_conjugate(self):
        m = Matrx([
            Vector([Cartesian((-6, 1)), Cartesian((3, 8))]),
            Vector([Cartesian((2, -6)), Cartesian((3, 0))])
        ])
        mC = Matrx([
            Vector([Cartesian((-6, -1)),
                    Cartesian((3, -8))]),
            Vector([Cartesian((2, 6)), Cartesian((3, 0))])
        ])

        self.assertEqual(m.conjugate(), mC)
    def test_addInverse(self):
        m = Matrx([
            Vector([Cartesian((7, 3)), Cartesian((-1, 7))]),
            Vector([Cartesian((-9, -4)),
                    Cartesian((-7, -9))])
        ])
        mAI = Matrx([
            Vector([Cartesian((-7, -3)),
                    Cartesian((1, -7))]),
            Vector([Cartesian((9, 4)), Cartesian((7, 9))])
        ])

        self.assertEqual(m.addInverse(), mAI)
    def test_scalarProd(self):
        c = Cartesian((-2, 3))
        m = Matrx([
            Vector([Cartesian((3, -2)), Cartesian((8, -4))]),
            Vector([Cartesian((4, -10)),
                    Cartesian((-2, -8))])
        ])
        cm = Matrx([
            Vector([Cartesian((0, 13)),
                    Cartesian((-4, 32))]),
            Vector([Cartesian((22, 32)),
                    Cartesian((28, 10))])
        ])

        self.assertEqual(m.scalarProd(c), cm)
Пример #4
0
def to_Matrix(m):
    M = []
    for i in range(len(m)):
        temp = []
        for j in range(len(m)):
            temp.append( Cartesian(tuple(m[i][j])) )
        M.append( Vector(temp) )
    return Matrx(M)
    def test_mul(self):
        a = Matrx([
            Vector([Cartesian((-6, 2)),
                    Cartesian((0, 6)),
                    Cartesian((7, 2))]),
            Vector([Cartesian((6, 9)),
                    Cartesian((7, 7)),
                    Cartesian((-6, -6))]),
            Vector([Cartesian((5, 8)),
                    Cartesian((-6, 8)),
                    Cartesian((6, 9))])
        ])
        b = Matrx([
            Vector(
                [Cartesian((9, -6)),
                 Cartesian((-3, -4)),
                 Cartesian((5, -2))]),
            Vector(
                [Cartesian((3, 6)),
                 Cartesian((-1, -5)),
                 Cartesian((0, -5))]),
            Vector(
                [Cartesian((9, 9)),
                 Cartesian((8, -4)),
                 Cartesian((-8, -4))])
        ])
        c = Matrx([
            Vector([
                Cartesian((-33, 153)),
                Cartesian((120, 0)),
                Cartesian((-44, -22))
            ]),
            Vector([
                Cartesian((87, 0)),
                Cartesian((-26, -117)),
                Cartesian((107, 70))
            ]),
            Vector([
                Cartesian((0, 165)),
                Cartesian((147, 26)),
                Cartesian((69, -36))
            ])
        ])

        self.assertEqual(a * b, c)
    def test_dagger(self):
        m = Matrx([
            Vector([Cartesian((7, 7)),
                    Cartesian((3, 8)),
                    Cartesian((8, 4))]),
            Vector(
                [Cartesian((5, 0)),
                 Cartesian((8, -6)),
                 Cartesian((-10, -1))])
        ])
        mD = Matrx([
            Vector([Cartesian((7, -7)), Cartesian((5, 0))]),
            Vector([Cartesian((3, -8)), Cartesian((8, 6))]),
            Vector([Cartesian((8, -4)),
                    Cartesian((-10, 1))])
        ])

        self.assertEqual(m.dagger(), mD)
    def test_add(self):
        m1 = Matrx([
            Vector(
                [Cartesian((-8, -3)),
                 Cartesian((-6, -4)),
                 Cartesian((0, -4))]),
            Vector(
                [Cartesian((-1, 8)),
                 Cartesian((6, -10)),
                 Cartesian((8, -5))]),
            Vector([Cartesian((4, 0)),
                    Cartesian((8, 5)),
                    Cartesian((-7, -9))])
        ])
        m2 = Matrx([
            Vector(
                [Cartesian((-7, -2)),
                 Cartesian((-4, -2)),
                 Cartesian((7, 7))]),
            Vector([Cartesian((5, 9)),
                    Cartesian((0, 3)),
                    Cartesian((6, -5))]),
            Vector([Cartesian((1, 5)),
                    Cartesian((-6, -6)),
                    Cartesian((5, 8))])
        ])
        m3 = Matrx([
            Vector([
                Cartesian((-15, -5)),
                Cartesian((-10, -6)),
                Cartesian((7, 3))
            ]),
            Vector(
                [Cartesian((4, 17)),
                 Cartesian((6, -7)),
                 Cartesian((14, -10))]),
            Vector(
                [Cartesian((5, 5)),
                 Cartesian((2, -1)),
                 Cartesian((-2, -1))])
        ])

        self.assertEqual(m1 + m2, m3)
    def test_transposed(self):
        m = Matrx([
            Vector(
                [Cartesian((5, 9)),
                 Cartesian((-7, -5)),
                 Cartesian((-1, -4))]),
            Vector(
                [Cartesian((8, 2)),
                 Cartesian((-3, -7)),
                 Cartesian((7, -8))])
        ])
        mT = Matrx([
            Vector([Cartesian((5, 9)), Cartesian((8, 2))]),
            Vector([Cartesian((-7, -5)),
                    Cartesian((-3, -7))]),
            Vector([Cartesian((-1, -4)),
                    Cartesian((7, -8))])
        ])

        self.assertEqual(m.transposed(), mT)
    def test_isUnitary(self):
        a = Matrx([
            Vector([
                Cartesian((1 / math.sqrt(2), 0)),
                Cartesian((0, 1 / math.sqrt(2)))
            ]),
            Vector([
                Cartesian((0, 1 / math.sqrt(2))),
                Cartesian((1 / math.sqrt(2), 0))
            ])
        ])
        b = Matrx([
            Vector([Cartesian((0, 1)),
                    Cartesian((1, 0)),
                    Cartesian((0, 0))]),
            Vector([Cartesian((0, 0)),
                    Cartesian((0, 1)),
                    Cartesian((1, 0))]),
            Vector([Cartesian((1, 0)),
                    Cartesian((0, 0)),
                    Cartesian((0, 1))])
        ])

        self.assertEqual(a.isUnitary(), True)
        self.assertEqual(b.isUnitary(), False)
    def test_actOnVect(self):
        m = Matrx([
            Vector(
                [Cartesian((-1, 5)),
                 Cartesian((1, -7)),
                 Cartesian((-6, 3))]),
            Vector(
                [Cartesian((-3, -9)),
                 Cartesian((2, -5)),
                 Cartesian((1, -10))]),
            Vector(
                [Cartesian((-6, 5)),
                 Cartesian((6, -5)),
                 Cartesian((3, -2))])
        ])
        v = Vector([Cartesian((1, -3)), Cartesian((4, 3)), Cartesian((-3, 1))])
        mv = Vector(
            [Cartesian((54, -32)),
             Cartesian((0, 17)),
             Cartesian((41, 30))])

        self.assertEqual(m.actOnVect(v), mv)
    def test_isHermitian(self):
        a = Matrx([
            Vector([Cartesian((3, 0)),
                    Cartesian((2, -1)),
                    Cartesian((0, -3))]),
            Vector([Cartesian((2, 1)),
                    Cartesian((0, 0)),
                    Cartesian((1, -1))]),
            Vector([Cartesian((0, 3)),
                    Cartesian((1, 1)),
                    Cartesian((0, 0))])
        ])
        b = Matrx([
            Vector([Cartesian((1, 0)), Cartesian((3, -1))]),
            Vector([Cartesian((3, 1)), Cartesian((0, 1))])
        ])

        self.assertEqual(a.isHermitian(), True)
        self.assertEqual(b.isHermitian(), False)
m = Matrx([
    Vector([
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0))
    ]),
    Vector([
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0))
    ]),
    Vector([
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0))
    ]),
    Vector([
        Cartesian((1 / 6, 0)),
        Cartesian((1 / 3, 0)),
        Cartesian((0, 0)),
        Cartesian((1, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0))
    ]),
    Vector([
        Cartesian((1 / 6, 0)),
        Cartesian((1 / 3, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((1, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0))
    ]),
    Vector([
        Cartesian((1 / 3, 0)),
        Cartesian((1 / 3, 0)),
        Cartesian((1 / 3, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((1, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0))
    ]),
    Vector([
        Cartesian((1 / 6, 0)),
        Cartesian((0, 0)),
        Cartesian((1 / 3, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((1, 0)),
        Cartesian((0, 0))
    ]),
    Vector([
        Cartesian((1 / 6, 0)),
        Cartesian((0, 0)),
        Cartesian((1 / 3, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((0, 0)),
        Cartesian((1, 0))
    ])
])
Пример #13
0
import numpy as np
import matplotlib.pyplot as plt
from sys import stdin
from Matrx import *

a = 1/math.sqrt(12)
b = 1/math.sqrt(6)
c = -1/math.sqrt(12)
d = -1/math.sqrt(6)

m = Matrx([Vector([Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0))]),
           Vector([Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0))]),
           Vector([Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0))]),
           Vector([Cartesian((c, a)), Cartesian((d, b)), Cartesian((0, 0)), Cartesian((1, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0))]),
           Vector([Cartesian((c, c)), Cartesian((d, d)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((1, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0))]),
           Vector([Cartesian((0, 0)), Cartesian((d, b)), Cartesian((b, d)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((1, 0)), Cartesian((0, 0)), Cartesian((0, 0))]),
           Vector([Cartesian((c, c)), Cartesian((0, 0)), Cartesian((d, d)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((1, 0)), Cartesian((0, 0))]),
           Vector([Cartesian((c, a)), Cartesian((0, 0)), Cartesian((b, d)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((1, 0))])])

p = 1/math.sqrt(2)

v = Vector([Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((0, 0)), Cartesian((c, a)), Cartesian((c, c)), Cartesian((0, 0)), Cartesian((c, c)), Cartesian((c, a))])

clicks = 2
for i in range(clicks):
    v = m.actOnVect(v)

labels = ["Pto.0", "Pto.1", "Pto.2", "Pto.3", "Pto.4", "Pto.5", "Pto.6", "Pto.7"]
estado = [v.numbers[0].element_1,
          v.numbers[1].element_1,
          v.numbers[2].element_1,
    def test_tensorProduct(self):
        a = Matrx([
            Vector([Cartesian((1, 1)), Cartesian((0, 0))]),
            Vector([Cartesian((1, 0)), Cartesian((0, 1))])
        ])
        b = Matrx([
            Vector(
                [Cartesian((-1, 2)),
                 Cartesian((-2, -2)),
                 Cartesian((0, 2))]),
            Vector([Cartesian((2, 3)),
                    Cartesian((3, 1)),
                    Cartesian((2, 2))]),
            Vector([Cartesian((-2, 1)),
                    Cartesian((1, -1)),
                    Cartesian((2, 1))])
        ])
        c = Matrx([
            Vector([
                Cartesian((-3, 1)),
                Cartesian((0, -4)),
                Cartesian((-2, 2)),
                Cartesian((0, 0)),
                Cartesian((0, 0)),
                Cartesian((0, 0))
            ]),
            Vector([
                Cartesian((-1, 5)),
                Cartesian((2, 4)),
                Cartesian((0, 4)),
                Cartesian((0, 0)),
                Cartesian((0, 0)),
                Cartesian((0, 0))
            ]),
            Vector([
                Cartesian((-3, -1)),
                Cartesian((2, 0)),
                Cartesian((1, 3)),
                Cartesian((0, 0)),
                Cartesian((0, 0)),
                Cartesian((0, 0))
            ]),
            Vector([
                Cartesian((-1, 2)),
                Cartesian((-2, -2)),
                Cartesian((0, 2)),
                Cartesian((-2, -1)),
                Cartesian((2, -2)),
                Cartesian((-2, 0))
            ]),
            Vector([
                Cartesian((2, 3)),
                Cartesian((3, 1)),
                Cartesian((2, 2)),
                Cartesian((-3, 2)),
                Cartesian((-1, 3)),
                Cartesian((-2, 2))
            ]),
            Vector([
                Cartesian((-2, 1)),
                Cartesian((1, -1)),
                Cartesian((2, 1)),
                Cartesian((-1, -2)),
                Cartesian((1, 1)),
                Cartesian((-1, 2))
            ])
        ])

        self.assertEqual(a.tensorProduct(b), c)