On Tue, May 5, 2009 at 6:23 AM, Paul Zimmermann <paul.zimmerm...@loria.fr> wrote: > > Hi, > > I got the following error in a Sage program I wrote: > > TypeError: unsupported operand parent(s) for '*': 'Full MatrixSpace of 2 by 1 > dense matrices over Integer Ring' and 'Full MatrixSpace of 2 by 2 dense > matrices over Rational Field' > > for the following instruction: > > --> 152 vA = v.transpose() * invA > > Here, v is a vector of dimension n, and invA is a n x n matrix. > > In mathematics, a vector of dimension n is usually considered as a n x 1 > matrix, thus to multiply it to the left of a n x n matrix, one has first > to transpose it. > > sage: m = matrix(SR,[[a,b],[c,d]]); m > > [a b] > [c d] > > sage: v = vector(SR, [d,e]); v > (d, e) > > sage: m * v > (a*d + e*b, c*d + e*d) > > sage: v.transpose() * m > --------------------------------------------------------------------------- > TypeError Traceback (most recent call last) > > /users/cacao/zimmerma/.sage/temp/patate.loria.fr/9803/_users_cacao_zimmerma_Adm_Cacao_ANC_Hadamard_algo2_sage_6.py > in <module>() > > /usr/local/sage-3.4-core2/sage/local/lib/python2.5/site-packages/sage/structure/element.so > in sage.structure.element.Matrix.__mul__ (sage/structure/element.c:11263)() > > /usr/local/sage-3.4-core2/sage/local/lib/python2.5/site-packages/sage/structure/coerce.so > in sage.structure.coerce.CoercionModel_cache_maps.bin_op > (sage/structure/coerce.c:5848)() > > TypeError: unsupported operand parent(s) for '*': 'Full MatrixSpace of 2 by 1 > dense matrices over Symbolic Ring' and 'Full MatrixSpace of 2 by 2 dense > matrices over Symbolic Ring' > > but v * m works: > > sage: v * m > (a*d + e*c, b*d + e*d) > > I find this rather counter-intuitive wrt mathematics. Is there any rationale? > > Paul Zimmermann
Vectors in Sage (and Magma) are row vectors, not column vectors. If you do v.transpose(), Sage then constructs a column matrix from the row vector. The reason vectors in Sage are row vectors by default is because that's the convention in Magma, and for quite some time when early design decisions were being made, compatibility with the Magma API was important. -- William --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---