X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fmatrix_algebra.py;h=6817af1e046d65efeab32f45dc17396cd7fb4906;hb=HEAD;hp=29a37d1e7c9bdee3dee6b36960126d5f545753fe;hpb=9c7fc4d836d337fcba8846ee4538bb0571c60f08;p=sage.d.git diff --git a/mjo/matrix_algebra.py b/mjo/matrix_algebra.py index 29a37d1..6817af1 100644 --- a/mjo/matrix_algebra.py +++ b/mjo/matrix_algebra.py @@ -60,15 +60,16 @@ class MatrixAlgebraElement(IndexedFreeModuleElement): TESTS:: sage: MatrixAlgebra(0,ZZ,ZZ).zero() - 0 + [] """ if self.nrows() == 0 or self.ncols() == 0: - # Otherwise we get a crash or a blank space, depending - # on how hard we work for it. - return self.parent().entry_algebra().zero().__repr__() + # Otherwise we get a crash or a blank space, depending on + # how hard we work for it. This is what MatrixSpace(..., + # 0) returns. + return "[]" - return table(rs, frame=True)._repr_() + return table(self.rows(), frame=True)._repr_() def list(self): @@ -110,7 +111,12 @@ class MatrixAlgebraElement(IndexedFreeModuleElement): """ i,j = indices - return self.rows()[i][j] + d = self.monomial_coefficients() + A = self.parent().entry_algebra() + return A.sum( d[k]*k[2] + for k in d + if k[0] == i and k[1] == j ) + def trace(self): r""" @@ -135,8 +141,9 @@ class MatrixAlgebraElement(IndexedFreeModuleElement): [0 2] """ - zero = self.parent().entry_algebra().zero() - return sum( (self[i,i] for i in range(self.nrows())), zero ) + d = self.monomial_coefficients() + A = self.parent().entry_algebra() + return A.sum( d[k]*k[2] for k in d if k[0] == k[1] ) def matrix_space(self): r""" @@ -147,7 +154,6 @@ class MatrixAlgebraElement(IndexedFreeModuleElement): TESTS:: - sage: set_random_seed() sage: entries = QuaternionAlgebra(QQ,-1,-1) sage: M = MatrixAlgebra(3, entries, QQ) sage: M.random_element().matrix_space() == M @@ -203,7 +209,7 @@ class MatrixAlgebra(CombinatorialFreeModule): self._nrows = n - # Since the scalar ring is real but the entries are not, + # Since the scalar ring is (say) real but the entries are not, # sticking a "1" in each position doesn't give us a basis for # the space. We actually need to stick each of e0, e1, ... (a # basis for the entry algebra itself) into each position.