Exemplo n.º 1
0
class test_base_matrix(unittest.TestCase):
    """The default matrix is a 5x5 matrix with the following setup:
    |  1.0  0.0  1.0 -1.0  2.5 |
    |  0.0  3.1  0.1  0.0 -7.9 |
    | -9.8  1.1  6.7  2.2 -4.0 |
    | 19.3  1.1  1.1  4.5 -9.9 |
    |  2.7  0.1  0.1 -3.0  1.0 |"""
    def setUp(self):
        self.m=Matrix(5)
        # Pull the matrix out of the docstring for the class. I'm lazy.
        rows=[x.strip() for x in self.__doc__.split('\n')]
        rows=[x for x in rows if x[0]=='|']
        rows=[[float(x) for x in y.strip('|').split()] for y in rows]
        for i in xrange(len(rows)):
            self.m.set_row(i, rows[i])
    def testConstruction(self):
        self.assert_(isinstance(self.m, Matrix))
        self.assertEquals(self.m[1, 1], 3.1)
        self.assertEquals(self.m[4, 1], 0.1)
        self.assertEquals(self.m[3, 0], 19.3)
        self.assertEquals(self.m[4, 3], -3.0)
    def testIndexError(self):
        self.assertRaises(IndexError, self.m.__getitem__, (7, 8))
    def testRowSum(self):
        self.assertAlmostEquals(self.m.rowsum(0), 3.5)
        self.assertAlmostEquals(self.m.rowsum(2), -3.8)
    def testColSum(self):
        self.assertAlmostEquals(self.m.colsum(3), 2.7)
    def testMax(self):
        self.assertAlmostEquals(self.m.max(), 19.3)
    def testSize(self):
        self.assertEquals(len(self.m), 5)
    def testRowNonZero(self):
        self.assertEquals(self.m.row_nonzero(2), 5)
        self.assertEquals(self.m.row_nonzero(1), 3)
    def testColNonZero(self):
        self.assertEquals(self.m.col_nonzero(0), 4)
        self.assertEquals(self.m.row_nonzero(4), 5)
    def testTranspose(self):
        t=self.m.transpose()
        for j in xrange(len(self.m)):
            for i in xrange(len(self.m)):
                self.assertEquals(self.m[i, j], t[j, i])
    def testEquals(self):
        t=self.m.transpose()
        tt=t.transpose()
        self.assertEquals(self.m, tt)
    def testNormalize(self):
        norm=self.m.normalize()
        self.assertAlmostEquals(norm[3, 0], 1.0)
        self.assertAlmostEquals(norm[3, 2], 0.05699481865285)
Exemplo n.º 2
0
 def transpose(self):
     # Needs a special transpose operation because it must return a
     # LinkMatrix
     return Matrix.transpose(self, LinkMatrix)
Exemplo n.º 3
0
class test_base_matrix(unittest.TestCase):
    """The default matrix is a 5x5 matrix with the following setup:
    |  1.0  0.0  1.0 -1.0  2.5 |
    |  0.0  3.1  0.1  0.0 -7.9 |
    | -9.8  1.1  6.7  2.2 -4.0 |
    | 19.3  1.1  1.1  4.5 -9.9 |
    |  2.7  0.1  0.1 -3.0  1.0 |"""
    def setUp(self):
        self.m = Matrix(5)
        # Pull the matrix out of the docstring for the class. I'm lazy.
        rows = [x.strip() for x in self.__doc__.split('\n')]
        rows = [x for x in rows if x[0] == '|']
        rows = [[float(x) for x in y.strip('|').split()] for y in rows]
        for i in xrange(len(rows)):
            self.m.set_row(i, rows[i])

    def testConstruction(self):
        self.assert_(isinstance(self.m, Matrix))
        self.assertEquals(self.m[1, 1], 3.1)
        self.assertEquals(self.m[4, 1], 0.1)
        self.assertEquals(self.m[3, 0], 19.3)
        self.assertEquals(self.m[4, 3], -3.0)

    def testIndexError(self):
        self.assertRaises(IndexError, self.m.__getitem__, (7, 8))

    def testRowSum(self):
        self.assertAlmostEquals(self.m.rowsum(0), 3.5)
        self.assertAlmostEquals(self.m.rowsum(2), -3.8)

    def testColSum(self):
        self.assertAlmostEquals(self.m.colsum(3), 2.7)

    def testMax(self):
        self.assertAlmostEquals(self.m.max(), 19.3)

    def testSize(self):
        self.assertEquals(len(self.m), 5)

    def testRowNonZero(self):
        self.assertEquals(self.m.row_nonzero(2), 5)
        self.assertEquals(self.m.row_nonzero(1), 3)

    def testColNonZero(self):
        self.assertEquals(self.m.col_nonzero(0), 4)
        self.assertEquals(self.m.row_nonzero(4), 5)

    def testTranspose(self):
        t = self.m.transpose()
        for j in xrange(len(self.m)):
            for i in xrange(len(self.m)):
                self.assertEquals(self.m[i, j], t[j, i])

    def testEquals(self):
        t = self.m.transpose()
        tt = t.transpose()
        self.assertEquals(self.m, tt)

    def testNormalize(self):
        norm = self.m.normalize()
        self.assertAlmostEquals(norm[3, 0], 1.0)
        self.assertAlmostEquals(norm[3, 2], 0.05699481865285)
Exemplo n.º 4
0
 def transpose(self):
     # Needs a special transpose operation because it must return a 
     # LinkMatrix
     return Matrix.transpose(self, LinkMatrix)