Objects of this class represent generalized series objects.
See the docstring of GeneralizedSeriesMonoid for further information.
Returns the parent’s coefficient domain.
Lifts self to a domain with an enlarged coefficient domain.
INPUT:
EXAMPLES:
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
Returns the derivative of self
EXAMPLE:
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
Returns the exponential part of this series.
This is the series obtained from self by discarding the tail.
EXAMPLES:
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
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: 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
True if self contains logarithmic terms.
True if self is the monoid’s one element.
True if self is the monoid’s zero element.
Returns the order of this series.
The order is defined as the maximal coefficient ring element \(\alpha\) such that for all terms \(x^i\log(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: 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
The precision of self is the minimum of the precisions of all the power series objects contained in it.
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: 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
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.
EXAMPLE:
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
Returns the series object obtained from self by replacing \(x\) by \(x^e\), where \(e\) is a positive rational number.
EXAMPLES:
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
Returns the tail of this series.
This is the series object which is obtained from self by dropping the exponential part.
EXAMPLES:
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
Objects of this class represent generalized series objects.
See the docstring of GeneralizedSeriesMonoid for further information.
Lifts self to a domain with an enlarged coefficient domain.
INPUT:
EXAMPLES:
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
The precision of self is the minimum of the precisions of all the power series objects contained in it.
Creates a monoid of generalized series objects.
INPUT:
If the type is "continuous", the domain contains series objects of the form
\(\exp(\int_0^x \frac{p(t^{-1/r})}t dt)*q(x^{1/r},\log(x))\)
where
Any two such objects can be multiplied and differentiated. Objects whose exponential parts differ by an integer (“similar” series) can also be added.
If the type is "discrete", the domain contains series objects of the form
\((x/e)^{x u/v}\rho^x\exp\bigl(c_1 x^{1/(m*v)} +...+ c_{v-1} x^{1-1/(m*v)}\bigr)x^\alpha p(x^{-1/(m*v)},\log(x))\)
where
Any two such objects can be multiplied and shifted. Objects with the same superexponential, exponential, and subexponential part can also be added.
Also there is also a zero element which acts neutrally with respect to addition, and whose product with any other object is zero. In a strict mathematical sense, the set of all generalized series therefore does not form a monoid.
Nonzero objects involving no logariths (i.e., deg(q)==0) admit a multiplicative inverse if the series part has finite precision.
Coercion is supported from constants, polynomials, power series and Laurent series and other generalized series, provided that the respective coefficient domains support coercion.
There are functions for lifting the coefficient field to some algebraic extension.
EXAMPLES:
sage: G = GeneralizedSeriesMonoid(QQ, 'x')
sage: G
Monoid of continuous generalized series in x over Rational Field
sage: x = QQ['x'].gen()
sage: G(x+2*x^3 + 4*x^4 + O(x^5))
x*(1 + 2*x^2 + 4*x^3 + O(x^4))
sage: G(x+2*x^3 + 4*x^4 + O(x^5), ramification=2)
x^(1/2)*(1 + 2*x^(2/2) + 4*x^(3/2) + O(x^(4/2)))
sage: G(x+2*x^3 + 4*x^4 + O(x^5), ramification=3)
x^(1/3)*(1 + 2*x^(2/3) + 4*x^(3/3) + O(x^(4/3)))
sage: f = _
sage: f.derivative()
x^(-2/3)*(1/3 + 2*x^(2/3) + 16/3*x^(3/3) + O(x^(4/3)))
sage: _*f
x^(-1/3)*(1/3 + 8/3*x^(2/3) + 20/3*x^(3/3) + O(x^(4/3)))
sage: (G(1+x, ramification=2)*G(1+x, ramification=3)).ramification()
6
sage: K = QQ.extension(x^2-2, 'a'); a = K.gen()
sage: a*G(x)
x*a
sage: _.parent()
Monoid of continuous generalized series in x over Number Field in a with defining polynomial x^2 - 2
sage: G(x).base_extend(x^3+5, 'b')
x
sage: _.parent()
Monoid of continuous generalized series in x over Number Field in b with defining polynomial x^3 + 5
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”
Returns a monoid with an extended coefficient domain.
INPUT:
EXAMPLES:
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
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`.
Returns the generator of this monoid
Returns True.
Returns False, because series objects are inherently approximate.
Returns a random element of this monoid.
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))\).
Returns the variable name associated to this monoid.