# ore_algebra.generalized_series¶

Generalized series found in expansions at singularities

Classes

 ContinuousGeneralizedSeries(parent, tail[, …]) Objects of this class represent generalized series objects. DiscreteGeneralizedSeries(parent, data[, …]) Objects of this class represent generalized series objects. GeneralizedSeriesFunctor(x, type) GeneralizedSeriesMonoid(base, x, type) Objects of this class represent parents of generalized series objects.
class ore_algebra.generalized_series.ContinuousGeneralizedSeries(parent, tail, exp=0, ramification=1, make_monic=False)

Objects of this class represent generalized series objects.

See the docstring of GeneralizedSeriesMonoid for further information.

base()

Returns the parent’s coefficient domain.

base_extend(ext, name='a')

Lifts self to a domain with an enlarged coefficient domain.

INPUT:

• ext – either a univariate irreducible polynomial over self.base() or an algebraic extension field of self.base()
• name (optional) – if ext is a polynomial, this is used as a name for the generator of the algebraic extension.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: s = G(1+x+x^2, exp=3*x^2, ramification=3)
sage: s.parent()
Monoid of continuous generalized series in x over Rational Field
sage: x = ZZ['x'].gen()
sage: s.base_extend(x^2 + 2, 'a')
exp(-9/2*x^(-2/3))*(1 + x^(1/3) + x^(2/3))
sage: _.parent()
Monoid of continuous generalized series in x over Number Field in a with defining polynomial x^2 + 2
sage: s == s.base_extend(x^2 + 2, 'a')
True
sage: s is s.base_extend(x^2 + 2, 'a')
False

derivative()

Returns the derivative of self

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G(1+x+x^2, exp=1+x+x^2, ramification=2)
exp(-x^(-2/2) - 2*x^(-1/2))*x*(1 + x^(1/2) + x^(2/2))
sage: _.derivative()
exp(-x^(-2/2) - 2*x^(-1/2))*x^(-1)*(1 + 2*x^(1/2) + 3*x^(2/2) + 5/2*x^(3/2) + 2*x^(4/2))
sage: G([0,0,0,1])
log(x)^3
sage: _.derivative()
x^(-1)*3*log(x)^2

exponential_part()

Returns the exponential part of this series.

This is the series obtained from self by discarding the tail.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G(1+x+x^2, exp=2*x+x^2)
exp(-1/2*x^(-2) - 2*x^(-1))*(1 + x + x^2)
sage: _.exponential_part()
exp(-1/2*x^(-2) - 2*x^(-1))
sage: G(x^3+x^4+x^5)
x^3*(1 + x + x^2)
sage: _.exponential_part()
x^3

has_exponential_part()

True if self has a nontrivial exponential part.

Note that the exponential part may not show up in form of an “exp” term in the printout, but may also simply consist of some power x^lpha with nonzero lpha.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G(1+x+x^2).has_exponential_part()
False
sage: G(1+x+x^2, exp=2*x+x^2).has_exponential_part()
True
sage: G(x+x^2).has_exponential_part()
True
sage: G(x+x^2) == G(1+x, exp=1)
True

has_logarithms()

True if self contains logarithmic terms.

is_one()

True if self is the monoid’s one element.

is_zero()

True if self is the monoid’s zero element.

order()

Returns the order of this series.

The order is defined as the maximal coefficient ring element alpha such that for all terms x^ilog(x)^j appearing in this series we have i - alpha is a nonnegative rational number whose denominator divides the ramification. Note that alpha itself may be a complex number.

The order is also the constant coefficient of the polynomial used to represent the exponential part.

The order of the zero series is infinity.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G(1+x+x^2,exp=17/24+5*x+7*x^2, ramification=9)
exp(-63/2*x^(-2/9) - 45*x^(-1/9))*x^(17/24)*(1 + x^(1/9) + x^(2/9))
sage: _.order()
17/24
sage: G(x^5+x^6, exp=-3)
x^2*(1 + x)
sage: _.order()
2

prec()

The precision of self is the minimum of the precisions of all the power series objects contained in it.

ramification()

Returns the ramification of this series object.

This is the smallest positive integer r such that replacing x by x^r in the series clears the denominators of all exponents.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G(1+x+x^2, ramification=2)
1 + x^(1/2) + x^(2/2)
sage: _.ramification()
2
sage: G(1+x^2+x^4, ramification=2)
1 + x + x^2
sage: _.ramification()
1

similar(other, reference=Integer Ring)

Checks whether self and other are similar.

Similarity is defined as follows. Let A and B be two generalized series objects with exponential part exp(int_0^x a(t^{1/r})/t dt) and exp(int_0^x b(t^{1/r})/t dt) respectively. Then A and B are called similar if r*(a-b) is an integer.

An alternative reference set can be specified as optional argument.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: A = G(1+x+x^2, exp=1+x+x^2, ramification=2)
sage: B = G(1+x+x^2, exp=-3/2+x+x^2, ramification=2)
sage: A.similar(B)
True
sage: B.similar(A)
True
sage: C = G(1+x+x^2, exp=-2/3+x+x^2, ramification=2)
sage: A.similar(C)
False
sage: A.similar(C, reference=QQ)
True
sage: D = G(1+x+x^2, exp=1+x^2+x^4, ramification=4)
sage: A.similar(D)
True

substitute(e)

Returns the series object obtained from self by replacing x by x^e, where e is a positive rational number.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G(1+x+x^2, ramification=2)
1 + x^(1/2) + x^(2/2)
sage: _.substitute(3/5)
1 + x^(3/10) + x^(6/10)
sage: _.substitute(10/3)
1 + x + x^2
sage: _.ramification()
1
sage: G(1, exp=1+x+x^2, ramification=2)
exp(-x^(-2/2) - 2*x^(-1/2))*x
sage: _.substitute(3/5)
exp(-x^(-6/10) - 2*x^(-3/10))*x^(3/5)
sage: G([1,x,x^2], ramification=2)
x^(2/2)*log(x)^2 + x^(1/2)*log(x) + 1
sage: _.substitute(3/5)
9/25*x^(6/10)*log(x)^2 + 3/5*x^(3/10)*log(x) + 1

tail()

Returns the tail of this series.

This is the series object which is obtained from self by dropping the exponential part.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G(1+x+x^2, exp=2*x+x^2)
exp(-1/2*x^(-2) - 2*x^(-1))*(1 + x + x^2)
sage: _.tail()
1 + x + x^2
sage: G(x+x^2)
x*(1 + x)
sage: _.tail()
1 + x

class ore_algebra.generalized_series.DiscreteGeneralizedSeries(parent, data, make_monic=False)

Objects of this class represent generalized series objects.

See the docstring of GeneralizedSeriesMonoid for further information.

base_extend(ext, name='a')

Lifts self to a domain with an enlarged coefficient domain.

INPUT:

• ext – either a univariate irreducible polynomial over self.base() or an algebraic extension field of self.base()
• name (optional) – if ext is a polynomial, this is used as a name for the generator of the algebraic extension.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: s = G(1+x+x^2, exp=3*x^2, ramification=3)
sage: s.parent()
Monoid of continuous generalized series in x over Rational Field
sage: x = ZZ['x'].gen()
sage: s.base_extend(x^2 + 2, 'a')
exp(-9/2*x^(-2/3))*(1 + x^(1/3) + x^(2/3))
sage: _.parent()
Monoid of continuous generalized series in x over Number Field in a with defining polynomial x^2 + 2
sage: s == s.base_extend(x^2 + 2, 'a')
True
sage: s is s.base_extend(x^2 + 2, 'a')
False

prec()

The precision of self is the minimum of the precisions of all the power series objects contained in it.

class ore_algebra.generalized_series.GeneralizedSeriesMonoid(base, x, type)

Objects of this class represent parents of generalized series objects. They depend on a coefficient ring, which must be either QQ or a number field, and a variable name. The type must be “continuous” or “discrete”

base_extend(ext, name='a')

Returns a monoid with an extended coefficient domain.

INPUT:

• ext – either a univariate irreducible polynomial over self.base() or an algebraic extension field of self.base()
• name (optional) – if ext is a polynomial, this is used as a name for the generator of the algebraic extension.

EXAMPLES:

sage: from ore_algebra.generalized_series import GeneralizedSeriesMonoid
sage: G = GeneralizedSeriesMonoid(QQ, 'x', 'continuous')
sage: G
Monoid of continuous generalized series in x over Rational Field
sage: x = ZZ['x'].gen()
sage: G1 = G.base_extend(x^2 + 2, 'a')
sage: G1
Monoid of continuous generalized series in x over Number Field in a with defining polynomial x^2 + 2
sage: G2 = G1.base_extend(x^3 + 5, 'b')
sage: G2
Monoid of continuous generalized series in x over Number Field in b with defining polynomial x^3 + 5 over its base field
sage: G2(G1.random_element()).parent() is G2
True
sage: G1.random_element().parent() is G2
False

exp_ring()

Returns the ring which is used to store the exponential part of a generalized series. It is the univariate polynomial ring in over self.base() in the variable self.var().

A polynomial p represents the exponential part exp(int_0^x p(t^{1/r})/t dt), where r is the object’s ramification.

In particular, a constant polynomial alpha represents exp(alphalog(x))=x^alpha.

gen()

Returns the generator of this monoid

is_commutative()

Returns True.

is_exact()

Returns False, because series objects are inherently approximate.

random_element()

Returns a random element of this monoid.

tail_ring()

Returns the ring which is used to store the non-exponential part (the tail) of a generalized series. It is the univariate polynomial ring in the variable “LOG” over the power series ring in self.var() over self.base().

A polynomial p(x,y) represents the tail p(x^{1/r}, log(x)).

var`()

Returns the variable name associated to this monoid.