Module: sage.rings.laurent_series_ring
Laurent Series Rings
sage: R = LaurentSeriesRing(QQ, "x") sage: R.base_ring() Rational Field sage: S = LaurentSeriesRing(GF(17)['x'], 'y') sage: S Laurent Series Ring in y over Univariate Polynomial Ring in x over Finite Field of size 17 sage: S.base_ring() Univariate Polynomial Ring in x over Finite Field of size 17
Module-level Functions
base_ring, [name=None], [names=None], [sparse=False]) |
sage: R = LaurentSeriesRing(QQ, 'x'); R Laurent Series Ring in x over Rational Field sage: x = R.0 sage: g = 1 - x + x^2 - x^4 +O(x^8); g 1 - x + x^2 - x^4 + O(x^8) sage: g = 10*x^(-3) + 2006 - 19*x + x^2 - x^4 +O(x^8); g 10*x^-3 + 2006 - 19*x + x^2 - x^4 + O(x^8)
You can also use more mathematical notation when the base is a field:
sage: Frac(QQ[['x']]) Laurent Series Ring in x over Rational Field sage: Frac(GF(5)['y']) Fraction Field of Univariate Polynomial Ring in y over Finite Field of size 5
Here the fraction field is not just the Laurent series ring, so you can't
use the Frac
notation to make the Laurent series ring.
sage: Frac(ZZ[['t']]) Fraction Field of Power Series Ring in t over Integer Ring
Laurent series rings are determined by their variable and the base ring, and are globally unique.
sage: K = Qp(5, prec = 5) sage: L = Qp(5, prec = 200) sage: R.<x> = LaurentSeriesRing(K) sage: S.<y> = LaurentSeriesRing(L) sage: R is S False sage: T.<y> = LaurentSeriesRing(Qp(5,prec=200)) sage: S is T True sage: W.<y> = LaurentSeriesRing(Qp(5,prec=199)) sage: W is T False
x) |
Class: LaurentSeriesRing_domain
self, base_ring, [name=None], [sparse=False]) |
Special Functions: __init__
Class: LaurentSeriesRing_field
self, base_ring, [name=None], [sparse=False]) |
Special Functions: __init__
Class: LaurentSeriesRing_generic
sage: K, q = LaurentSeriesRing(CC, 'q').objgen(); K Laurent Series Ring in q over Complex Field with 53 bits of precision sage: loads(K.dumps()) == K True
self, base_ring, [name=None], [sparse=False]) |
Functions: base_extend,
change_ring,
characteristic,
default_prec,
gen,
is_dense,
is_exact,
is_field,
is_sparse,
ngens,
power_series_ring,
set_default_prec
self, R) |
Returns the laurent series ring over R in the same variable as self, assuming there is a canonical coerce map from the base ring of self to R.
self) |
If this is the Laurent series ring
, return the power
series ring
.
sage: R = LaurentSeriesRing(QQ, "x") sage: R.power_series_ring() Power Series Ring in x over Rational Field
Special Functions: __call__,
__cmp__,
__init__,
__reduce__,
__repr__,
_coerce_impl,
_is_valid_homomorphism_
self, x, [n=0]) |
Coerces the element x into this Laurent series ring.
Input:
sage: R.<u> = LaurentSeriesRing(Qp(5, 10)) sage: S.<t> = LaurentSeriesRing(RationalField()) sage: print R(t + t^2 + O(t^3)) (1 + O(5^10))*u + (1 + O(5^10))*u^2 + O(u^3)
Note that coercing an element into its own parent just produces that element again (since Laurent series are immutable):
sage: u is R(u) True
Rational functions are accepted:
sage: I = sqrt(-1) sage: K.<I> = QQ[I] sage: P.<t> = PolynomialRing(K) sage: L.<u> = LaurentSeriesRing(QQ[I]) sage: L((t*I)/(t^3+I*2*t)) 1/2 + 1/4*I*u^2 - 1/8*u^4 - 1/16*I*u^6 + 1/32*u^8 + 1/64*I*u^10 - 1/128*u^12 - 1/256*I*u^14 + 1/512*u^16 + 1/1024*I*u^18 + O(u^20)
sage: L(t*I) / L(t^3+I*2*t) 1/2 + 1/4*I*u^2 - 1/8*u^4 - 1/16*I*u^6 + 1/32*u^8 + 1/64*I*u^10 - 1/128*u^12 - 1/256*I*u^14 + 1/512*u^16 + 1/1024*I*u^18 + O(u^20)
self, x) |
Return canonical coercion of x into self.
Rings that canonically coerce to this power series ring R:
* R itself * Any laurent series ring in the same variable whose base ring canonically coerces to the base ring of R. * Any ring that canonically coerces to the power series ring over the base ring of R. * Any ring that canonically coerces to the base ring of R