Thanks again! I got the idea now. However, there is a problem which
sticks me in the first stage and if I can solve it so your code work
as prefect for me. The problem is that the instruction

v(z)

is not strong enough for my popuse. It works prefect when z is in k =
GF(2^5) but it is not working when z is in the polynomial ring of
GF(2^5)[x]. I can show it by  an example:

k.<a> = GF(2^5, name='a');
V = k.vector_space();
R.<x> = k['x'];

FieldElm= a;
PolyRingElm = x*a;

print V(FieldElm);
print V(PolyRingElm);

And the result is:

(0, 1, 0, 0, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File
"/home/amadi/Programmes/Sage/sage-2.8.3-linux-32bit-debian-4.0-i686-
Linu\
x/sage_notebook/worksheets/admin/0/code/35.py", line 12, in <module>
    exec compile(ur'print V(PolyRingElm);' + '\n', '', 'single')
  File
"/home/amadi/Programmes/Sage/sage-2.8.3-linux-32bit-debian-4.0-i686-
Linu\
x/data/extcode/sage/", line 1, in <module>

  File
"/home/amadi/Programmes/Sage/sage-2.8.3-linux-32bit-debian-4.0-i686-
Linu\
x/local/lib/python2.5/site-packages/sage/modules/free_module.py", line
2802, in __call__
    return FreeModule_generic_field.__call__(self,e)
  File
"/home/amadi/Programmes/Sage/sage-2.8.3-linux-32bit-debian-4.0-i686-
Linu\
x/local/lib/python2.5/site-packages/sage/modules/free_module.py", line
504, in __call__
    w = self._element_class(self, x, coerce, copy)
  File "vector_modn_dense.pyx", line 134, in
vector_modn_dense.Vector_modn_dense.__init__
TypeError: can't initialize vector from nonzero non-list


Could you please help me to make the vector space aspect of my finite
field works for its polynomial ring as well and give me something
like:

(0, x, 0, 0, 0)

Thank you in advance!

Bests,
Ahmad




On Sep 4, 5:53 pm, "William Stein" <[EMAIL PROTECTED]> wrote:
> On 9/4/07, David Joyner <[EMAIL PROTECTED]> wrote:
>
>
>
> > > I have to define two functions below in order to
> > > do this.  If people think something like this would be generally
> > > useful, then it could be made "built in" to SAGE:
>
> > I think it would be nice to have in_terms_of_normal_basis
> > (of course you need to change "2" to "p" in general).
> > However, I don't understand what to_V does that built-in
> > coersion doesn't already do:
>
> > sage: k.<a> = GF(2^5)
> > sage: V = k.vector_space()
> > sage: z = (1+a)^17; z
> > a^3 + a + 1
> > sage: V(z)
> > (1, 1, 0, 1, 0)
>
> > This seems to be the same output you gave for to_V(z),
> > or am I missing something?
>
> Hey, good point!
>
> Just change to_V(z) to "V(z)" everywhere.  Here's a new worksheet:
>
> ahmad -- sage-support
> system:sage
>
> {{{id=0|
> k.<a> = GF(2^5)
>
> }}}
>
> {{{id=1|
> k
> ///
> Finite Field in a of size 2^5
>
> }}}
>
> {{{id=2|
> V = k.vector_space()
>
> }}}
>
> {{{id=3|
> z = (1+a)^17; z
> ///
> a^3 + a + 1
>
> }}}
>
> {{{id=6|
> B2 = [(a+1)^(2^i) for i in range(k.degree())]
>
> }}}
>
> {{{id=7|
> W = [V(b) for b in B2]
>
> }}}
>
> {{{id=8|
> V.span(W).dimension()
> ///
> 5
>
> }}}
>
> {{{id=9|
> W0 = V.span_of_basis(W)
>
> }}}
>
> {{{id=10|
> def in_terms_of_normal_basis(z):
>    return W0.coordinates(z)
>
> }}}
>
> {{{id=11|
> in_terms_of_normal_basis(a+1)
> ///
> [1, 0, 0, 0, 0]
>
> }}}
>
> {{{id=12|
> in_terms_of_normal_basis(1 + a + a^2 + a^3)
> ///
> [1, 0, 0, 1, 0]
>
> }}}


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@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-support
URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to