Lazy Laurent Series Rings¶
The ring of lazy Laurent series over a ring has usual arithmetic operations, but it is actually not a ring in the usual sense since every arithmetic operation gives a new series.
EXAMPLES:
The definition of Laurent series rings is not initially imported into the global namespace. You need to import it explicitly to use it:
sage: L.<z> = LazyLaurentSeriesRing(QQ)
sage: L.category()
Category of magmas and additive magmas
sage: 1/(1 - z)
1 + z + z^2 + z^3 + z^4 + z^5 + z^6 + ...
sage: 1/(1 - z) == 1/(1 - z)
True
Lazy Laurent series ring over a finite field:
sage: L.<z> = LazyLaurentSeriesRing(GF(3)); L
Lazy Laurent Series Ring in z over Finite Field of size 3
sage: e = 1/(1 + z)
sage: e.coefficient(100)
1
sage: e.coefficient(100).parent()
Finite Field of size 3
Generating functions of integer sequences are Laurent series over the integer ring:
sage: L.<z> = LazyLaurentSeriesRing(ZZ); L
Lazy Laurent Series Ring in z over Integer Ring
sage: 1/(1 - 2*z)^3
1 + 6*z + 24*z^2 + 80*z^3 + 240*z^4 + 672*z^5 + 1792*z^6 + ...
Power series can be defined recursively:
sage: L.<z> = LazyLaurentSeriesRing(ZZ)
sage: L.series(lambda s,n: (1 + z*s^2)[n], valuation=0)
1 + z + 2*z^2 + 5*z^3 + 14*z^4 + 42*z^5 + 132*z^6 + ...
AUTHORS:
Kwankyu Lee (2019-02-24): initial version
- class sage.rings.lazy_laurent_series_ring.LazyLaurentSeriesRing(base_ring, names, category=None)¶
Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.parent.Parent
Lazy Laurent series ring.
INPUT:
base_ring
– base ring of this Laurent series ringnames
– name of the generator of this Laurent series ring
EXAMPLES:
sage: LazyLaurentSeriesRing(ZZ, 't') Lazy Laurent Series Ring in t over Integer Ring
- Element¶
- gen(n=0)¶
Return the generator of this Laurent series ring.
EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.gen() z sage: L.gen(3) Traceback (most recent call last): ... IndexError: there is only one generator
- gens()¶
Return the tuple of the generator.
EXAMPLES:
sage: L.<z> = LazyLaurentSeriesRing(ZZ) sage: 1/(1 - z) 1 + z + z^2 + z^3 + z^4 + z^5 + z^6 + ...
- ngens()¶
Return the number of generators of this Laurent series ring.
This is always 1.
EXAMPLES:
sage: L.<z> = LazyLaurentSeriesRing(ZZ) sage: L.ngens() 1
- one()¶
Return the constant series 1.
EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.one() 1
- series(coefficient, valuation, constant=None)¶
Return a lazy Laurent series.
INPUT:
coefficient
– Python function that computes coefficientsvaluation
– integer; approximate valuation of the seriesconstant
– eitherNone
or pair of an element of the base ring and an integer
Let the coefficient of index i mean the coefficient of the term of the series with exponent i.
Python function
coefficient
returns the value of the coefficient of index i from input s and i where s is the series itself.Let
valuation
be n. All coefficients of index below n are zero. Ifconstant
isNone
, then thecoefficient
function is responsible to compute the values of all coefficients of index ≥n. Ifconstant
is a pair (c,m), then thecoefficient
function is responsible to compute the values of all coefficients of index ≥n and <m and all the coefficients of index ≥m is the constant c.EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.series(lambda s, i: i, 5, (1,10)) 5*z^5 + 6*z^6 + 7*z^7 + 8*z^8 + 9*z^9 + z^10 + z^11 + z^12 + ... sage: def g(s, i): ....: if i < 0: ....: return 1 ....: else: ....: return s.coefficient(i - 1) + i sage: e = L.series(g, -5); e z^-5 + z^-4 + z^-3 + z^-2 + z^-1 + 1 + 2*z + ... sage: f = e^-1; f z^5 - z^6 - z^11 + ... sage: f.coefficient(10) 0 sage: f.coefficient(20) 9 sage: f.coefficient(30) -219
Alternatively, the
coefficient
can be a list of elements of the base ring. Then these elements are read as coefficients of the terms of degrees starting from thevaluation
. In this case,constant
may be just an element of the base ring instead of a tuple or can be simply omitted if it is zero.EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: f = L.series([1,2,3,4], -5) sage: f z^-5 + 2*z^-4 + 3*z^-3 + 4*z^-2 sage: g = L.series([1,3,5,7,9], 5, -1) sage: g z^5 + 3*z^6 + 5*z^7 + 7*z^8 + 9*z^9 - z^10 - z^11 - z^12 + ...
- zero()¶
Return the zero series.
EXAMPLES:
sage: L = LazyLaurentSeriesRing(ZZ, 'z') sage: L.zero() 0