|
Calling Sequence
|
|
1/p
Inverse(p)
Inverse(s, nonzero_pso_bound, smallest_term_bound)
|
|
Parameters
|
|
p
|
-
|
power series generated by this package
|
s
|
-
|
Puiseux series generated by this package
|
nonzero_pso_bound
|
-
|
(optional) non-negative integer
|
smallest_term_bound
|
-
|
(optional) non-negative integer
|
|
|
|
|
Description
|
|
•
|
The commands 1/p and Inverse(p) compute the multiplicative inverse of the power series p. This requires that p is invertible, that is, that p has a nonzero constant term; if that is not the case, an error is signaled.
|
•
|
The calling sequence Inverse('s', 'nonzero_pso_bound', 'smallest_term_bound') computes the multiplicative inverse of the Puiseux series s, whenever this is possible. To explain the algorithm used, we first need to review some basic information on Puiseux series.
|
•
|
A Puiseux series is a power series in rational powers of the variables. More precisely:
|
–
|
Let and be ordered lists of variables.
|
–
|
Let be a list of grevlex-positive -dimensional rational vectors.
|
–
|
Let be a point in .
|
–
|
Let be a multivariate power series in with homogeneous components .
|
|
For any in and any list , we write for . Moreover, we write for the list of products of powers of the variables in . Then is a Puiseux series, and every Puiseux series can be written in this way. This can be understood as evaluating at and then multiplying the result by .
|
•
|
We call the internal power series of the Puiseux series ; the variable order of ; the variable order of ; and the rays of . The rays generate the cone containing the support of , meaning the set of exponent vectors of that occur in with a nonzero coefficient, as in the paper by Monforte and Kauers (see References). The vertex of this cone is .
|
•
|
The algorithm used depends of a few different things, which are verified in the following order:
|
–
|
First, if the power series used to create s is invertible, then we compute the inverse of s by computing the inverse of its internal power series.
|
–
|
Second, if the power series used to generate s has a rational function as its analytic expression, then we compute the inverse of s by algebraic manipulations.
|
–
|
Otherwise, we start by looking for the first nonzero monomial in the internal power series of s. This process is done by examining all monomials in the internal power series with total degree less than or equal to some bound b. If no monomial different from zero is found, the command will fail.
|
•
|
If we have at least a ray of weight zero, then we cannot guarantee that the inverse has been found. In order to compute the inverse correctly, we must find the grevlex minimum element of the support of s, that is, the grevlex minimum element between the exponents of all nonzero monomials of s. Having at least a ray of weight zero makes this process not always possible. So, we use some bound d and we find the minimum among the monomials of the internal power series that are at most d greater than the first nonzero monomial found. Unfortunately, it is possible that one might need to look for arbitrarily high degrees in the internal power series to find the monomial that is truly the grevlex smallest in the Puiseux series. In cases where we cannot prove that the term we find is the smallest, Maple generates an error message if subsequent examination of higher degree terms results in finding a smaller monomial. In this case, one can rerun the computation with a higher value for d.
|
–
|
If the argument smallest_term_bound is given, its value is used for d. Otherwise, if SetSmallestTermDegreeBound has been called on s, its value is used. Otherwise, the global value for this bound is used; this can also be set using SetSmallestTermDegreeBound, and its default value is 10.
|
•
|
When using the MultivariatePowerSeries package, do not assign anything to the variables occurring in the power series, Puiseux series, and univariate polynomials over these series. If you do, you may see invalid results.
|
|
|
Examples
|
|
>
|
|
We define a power series, , representing a polynomial.
| (1) |
We can define its inverse in two equivalent ways:
| (2) |
| (3) |
We verify that the two definitions are equal, at least for the terms up to homogeneous degree 10.
A different power series represents the sine of .
>
|
|
| (5) |
Because the constant coefficient of is zero, we cannot invert it. (Its multiplicative inverse is a Laurent series, not a power series.)
We create a Puiseux series s1.
>
|
|
| |
>
|
|
| (7) |
We create a Puiseux series s2.
>
|
bproc1 := proc(d) if d = 13 then return u^(12)*v + u*v^(12); elif d = 14 then return u^(14); else return 0; end if; end proc;
|
| (8) |
>
|
|
| |
| (9) |
>
|
|
| (10) |
We create a Puiseux series s3.
>
|
bproc2 := proc(d) if d = 1 then return u^1; elif d = 2 then return u^2; elif d = 3 then return u^3; elif d = 25 then return v^25; else return 0; end if; end proc;
|
| (11) |
>
|
|
| |
| (12) |
>
|
|
| (13) |
We invert and check its indeed its inverse.
| (14) |
| (15) |
We try to invert and check if the inverse was found.
| (17) |
| (18) |
We try to invert and check if the inverse was found.
| (20) |
>
|
|
| (21) |
| (22) |
|
|
References
|
|
|
Monforte, A.A., & Kauers, M. "Formal Laurent series in several variables." Expositiones Mathematicae. Vol. 31 No. 4 (2013): 350-367.
|
|
|
Compatibility
|
|
•
|
The MultivariatePowerSeries[Inverse] command was introduced in Maple 2021.
|
•
|
The MultivariatePowerSeries[Inverse] command was updated in Maple 2023.
|
•
|
The s, nonzero_pso_bound and smallest_term_bound parameters were introduced in Maple 2023.
|
•
|
The nonzero_pso_bound and smallest_term_bound options were introduced in Maple 2023.
|
|
|
|