There are two separate things going on here.

I think this is a bug:

sage: vector(range(3))
TypeError: unable to find a common ring for all elements

since this does work:
sage: vector(srange(3))
(0, 1, 2)

The difference is that the elements of range(3) are python ints while
the elements of srange(3) are Sage Integers.

It also works if you specify the coordinate ring:

sage: vector(RR,range(3))
(0.000000000000000, 1.00000000000000, 2.00000000000000)
sage: vector(ZZ,range(3))
(0, 1, 2)

The problem lies in the function prepare() in
sage/modules/free_module_element.pyx, since Sequence(range(3)) has
universe <type 'int'> and is_Ring() fails on that.

The fix would therefore appear to be to test for the case where the
universe is <type 'int'>
and change it to ZZ.

The second issue is just that after w=range(3), w is a python list,
and for lists, multiplying by 2 just repeats the list.  Similarly
sage: range(3) + range(3)
[0, 1, 2, 0, 1, 2]

If you want to do mathematical operations such as scalar
multiplcation, convert to a vector.
(You could also do [2*i for i in range(3)], but I don't think you like
that construction.)

I have CC's this to sage-devel so that the bug will be fixed (if
people agree with me that i is a bug).

John Cremona

2008/8/28 Stan Schymanski <[EMAIL PROTECTED]>:


> Dear all,
>
> I use pylab for plotting, which requires creating lists of x and y
> values. Now, in order to manipulate the lists, I would like to perform
> simple operations on them, like for example multiply by 2. However,
> lists seem to behave very differently to vectors when performing
> mathematical operations on them (see below). Is there an easy way of
> converting between lists and vectors to use them in mathematical
> computations without having to loop through all elements? Intuitively,
> I thought that vector(list) would work to convert a list to a vector,
> but it does not (see below).
>
> Thanks already for your help, and I'm sorry if I missed this issue in
> the documentation.
>
> Stan
>
> ----------------------------------------------------------------------
> | SAGE Version 3.1.1, Release Date: 2008-08-17                       |
> | Type notebook() for the GUI, and license() for information.        |
> ----------------------------------------------------------------------
>
> sage: v = vector([1,2,3]); v
> (1, 2, 3)
> sage: 2*v
> (2, 4, 6)
> sage: w=range(1,4); w
> [1, 2, 3]
> sage: 2*w
> [1, 2, 3, 1, 2, 3]
> sage: w1=vector(w)
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call
> last)
>
> /Users/sschym/modelling/VegPat/<ipython console> in <module>()
>
> /Users/sschym/modelling/VegPat/free_module_element.pyx in
> sage.modules.free_module_element.vector (sage/modules/
> free_module_element.c:2376)()
>
> /Users/sschym/modelling/VegPat/free_module_element.pyx in
> sage.modules.free_module_element.prepare (sage/modules/
> free_module_element.c:2622)()
>
> TypeError: unable to find a common ring for all elements
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to