LaurentSeries expansion

12 views
Skip to first unread message

Martin Albrecht

unread,
Jan 15, 2008, 11:46:52 AM1/15/08
to sage-support
Hi everybody,

in a nutshell I want to compute something like this MAGMA session in Sage:

%magma
P<a,b,c,d> := PolynomialRing(GF(127),4);
I := ideal<P|c^3-b*d^2,b*c-a*d,b^3-a^2*c,a*c^2-b^2*d>;
S<t> := HilbertSeries(I);
S;
L<u> := LaurentSeriesRing(IntegerRing());
L ! S;

The first part is quite easy as I wrapped the appropriate Singular function
(singular.hilb(I,1)/(1-t^n)). It is the second part that gives me trouble,
i.e. I need the first n Laurent series terms for the rational function which
describes the Hilbert series.

Tips?
Martin

--
name: Martin Albrecht
_pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99
_www: http://www.informatik.uni-bremen.de/~malb
_jab: martinr...@jabber.ccc.de

William Stein

unread,
Jan 15, 2008, 11:55:25 AM1/15/08
to sage-s...@googlegroups.com
On Jan 15, 2008 8:46 AM, Martin Albrecht <ma...@informatik.uni-bremen.de> wrote:
>
> Hi everybody,
>
> in a nutshell I want to compute something like this MAGMA session in Sage:
>
> %magma
> P<a,b,c,d> := PolynomialRing(GF(127),4);
> I := ideal<P|c^3-b*d^2,b*c-a*d,b^3-a^2*c,a*c^2-b^2*d>;
> S<t> := HilbertSeries(I);
> S;
> L<u> := LaurentSeriesRing(IntegerRing());
> L ! S;
>
> The first part is quite easy as I wrapped the appropriate Singular function
> (singular.hilb(I,1)/(1-t^n)). It is the second part that gives me trouble,
> i.e. I need the first n Laurent series terms for the rational function which
> describes the Hilbert series.

It might be a lot easier to help if you gave the rational function. Depending
on how complicated the denominator is, you basically just have to compute the
Taylor series of the rational function, by differentiation and evaluation (using
Taylor's formula), i.e., kind of like this is doing, but over GF(p):

sage: f = (x^3 + x +1)/((x^4 + x^2 + 2)*x^3*(x^3-5))
sage: f.taylor(x, 0, 4)
-1/(10*x^3) - 1/(10*x^2) + 1/(20*x) - 7/100 + x/200 + 17*x^2/200 -
103*x^3/2000 - 23*x^4/2000

-- William

Martin Albrecht

unread,
Jan 15, 2008, 1:44:10 PM1/15/08
to sage-s...@googlegroups.com
> It might be a lot easier to help if you gave the rational function.
> Depending on how complicated the denominator is, you basically just have to
> compute the Taylor series of the rational function, by differentiation and
> evaluation (using Taylor's formula), i.e., kind of like this is doing, but
> over GF(p):
>
> sage: f = (x^3 + x +1)/((x^4 + x^2 + 2)*x^3*(x^3-5))
> sage: f.taylor(x, 0, 4)
> -1/(10*x^3) - 1/(10*x^2) + 1/(20*x) - 7/100 + x/200 + 17*x^2/200 -
> 103*x^3/2000 - 23*x^4/2000

Hi,

sorry for not being specific enough earlier. In my particular application

f(t) = p(t)/(1-t)^n

where p is a polynomial with integer coefficients. So I am not actually
working over GF(p) and in that case the Taylor expansion seems to give me
what I want. However as I am looking into this now, I try to come up with
something more general. I am wondering what Magma is doing (maybe just Taylor
as well?) and if we want this too, e.g. that

sage: L.<t> = LaurentSeriesRing(IntegerRing())
sage: L(f)

returns the expansion? Would that make sense? Is it feasible?

William Stein

unread,
Jan 15, 2008, 2:17:49 PM1/15/08
to sage-s...@googlegroups.com
On Jan 15, 2008 10:44 AM, Martin Albrecht <ma...@informatik.uni-bremen.de> wrote:
>
> > It might be a lot easier to help if you gave the rational function.
> > Depending on how complicated the denominator is, you basically just have to
> > compute the Taylor series of the rational function, by differentiation and
> > evaluation (using Taylor's formula), i.e., kind of like this is doing, but
> > over GF(p):
> >
> > sage: f = (x^3 + x +1)/((x^4 + x^2 + 2)*x^3*(x^3-5))
> > sage: f.taylor(x, 0, 4)
> > -1/(10*x^3) - 1/(10*x^2) + 1/(20*x) - 7/100 + x/200 + 17*x^2/200 -
> > 103*x^3/2000 - 23*x^4/2000
>
> Hi,
>
> sorry for not being specific enough earlier. In my particular application
>
> f(t) = p(t)/(1-t)^n
>
> where p is a polynomial with integer coefficients. So I am not actually
> working over GF(p) and in that case the Taylor expansion seems to give me
> what I want. However as I am looking into this now, I try to come up with
> something more general. I am wondering what Magma is doing (maybe just Taylor
> as well?) and if we want this too, e.g. that
>
> sage: L.<t> = LaurentSeriesRing(IntegerRing())
> sage: L(f)
>
> returns the expansion? Would that make sense? Is it feasible?

Yes that makes sense and would be a great idea to do.

In your particular case above, you should write

p(t)/(1-t)^n = p(t) * (1/(1-t))^n

then expand 1/(1-t) out as a geometric series, raise it to the
power of n, and multiply it by p(t). You actually will get
a power series rather than a Laurent series, (1-t) has no pole
at 0.

William

Reply all
Reply to author
Forward
0 new messages