Beispiel #1
0
 def decompose(self, matrix):
     orthogonal_matrix = MatrixFactory.identity(size=matrix.row_count)
     for j in range(matrix.column_count - 1):
         e = numpy.zeros((matrix.column_count - j, 1))
         e[0, 0] = 1
         e = Matrix(e)
         h = self.create_householder_reflection(
             matrix.get_column_vector(j, j), e)
         h = MatrixFactory.build_block_matrix(
             d=h,
             row_count=orthogonal_matrix.row_count,
             col_count=orthogonal_matrix.row_count)
         for i in range(j):
             h.matrix_vectors[i, i] = 1
         matrix = h * matrix
         orthogonal_matrix = h * orthogonal_matrix
     return orthogonal_matrix.transpose(), matrix
Beispiel #2
0
 def test_create_identity(self):
     for matrix in MatrixCollection.complete:
         matrix = Matrix(matrix)
         self.assertEqual(matrix,
                          MatrixFactory.identity(matrix.row_count) * matrix)