# Series vs Asymptotic in 12.1

The functionality of Series and Asymptotic (new in V12.1) is very similar. In fact, they are both listed in the Asymptotics guide page. That same guide page hints that Asymptotic is more general than Series: while Series is just for functions, Asymptotic can handle integral transformations among other things.

This begs the question of when should one ever use Series if Asymptotic can apparently do everything Series could before? I remember this same question being raised during the development of V12.1, but I don't think it was ever really answered (term ordering and "propagation" of accuracy were mentioned). Now that V12.1 is out, has that changed? Is there something Series is better at than Asymptotic, or is Asymptotic going to supersede Series, which is now being kept for backwards compatibility only?

Extended comment, I won't accept this as an answer.

Here are some cases I've found where Series might be a better choice than Asymptotic. This list doesn't show when Asymptotic could be better, since those cases are fairly well documented.

• Series returns a SeriesData object, while Asymptotic returns a simple expression. Because of this, computations with the generated series is significantly easier with Series.

• As an example of the previous point, exponentiating a series expansion gives more sensible results when using Series:

Exp[Series[Sin[x], {x, 0, 5}]]
(* 1 + x + x^2/2 - x^4/8 - x^5/15 + O(x^6) *)

Exp[Asymptotic[Sin[x], {x, 0, 5}]]
(* Exp[x - x^3/6 + x^5/120] *)

• Similarly, arithmetic operations with SeriesData automatically cuts off higher-order terms when needed. If I add two series, where one has five terms and the other only two, the resulting sum is also only second-degree, which is not what happens with Asymptotic:

Series[Sin[x], {x, 0, 5}] + Series[Cos[x], {x, 0, 2}]
(* 1 + x - x^2/2 + O(x^3) *)

Asymptotic[Sin[x], {x, 0, 5}] + Asymptotic[Cos[x], {x, 0, 2}]
(* 1 + x - x^2/2 - x^3/6 + x^5/120 *)

• Two series with different expansion centers cannot be combined with Series:

Series[Exp[x], {x, 0, 3}] + Series[Exp[x], {x, 1, 3}]
(* Series in x to be combined have unequal expansion points 0 and 1 *)


Asymptotic will, for better or for worse, happily combine them:

Asymptotic[Exp[x], {x, 0, 3}] + Asymptotic[Exp[x], {x, 1, 3}]
(* 1 + E/3 + x + (E x)/2 + x^2/2 + x^3/6 + (E x^3)/6 *)

• Series supports "multivariate" series expansions out-of-box, while Asymptotic does not:

Series[Sin[x + y], {x, 0, 2}, {y, 0, 2}]
(* (y + O(y^3)) + x(1 - y^2/2 + O(y^3)) + x^2(-(y/2) + O(y^3)) + O(x^3) *)

Asymptotic[Asymptotic[Sin[x + y], {x, 0, 2}], {y, 0, 2}]
(* x + y - (x^2 y)/2 - (x y^2)/2 *)

• Asymptotic is significantly slower for hypergeometric functions (and possibly other special functions):

Series[Hypergeometric2F1[a, b, c, x], {x, Infinity, 1}] // AbsoluteTiming
(* {0.030965, ...} *)

Asymptotic[Hypergeometric2F1[a, b, c, x], {x, Infinity, 1}] // AbsoluteTiming
(* {15.3086, ...} *)


This may be a bug, as running Series with the new input notation x->Infinity

Series[Hypergeometric2F1[a, b, c, x], x -> Infinity]


runs for more than two minutes (didn't wait for completion, reported to WRI).

• Many thanks for this Q&A. But, why are there two separate functions for this? I'm not particularly happy with this design choice. The vast majority of analytic functions that scientists and engineers want to approximate have an asymptotic approximation that has the form exponential/trigonometric controlling factor times a Froebenius series. Series already had that capability, and simply needed a refresh, and SeriesData can already accomodate Froebenius series. The data structure could have been simply extended to include the controlling factor. Mar 18, 2020 at 19:24
• @QuantumDot Apologies if I have misunderstood your comment, but I wanted to clarify that I'm not involved with Wolfram, I'm just a random person interested in asymptotics, although I definitely agree with you. This "answer" is just from poking around and trying things and I really hope we get some more official clarification as to how these two are related, or why things wasn't implemented within Series. This should've absolutely been in the documentation. Mar 18, 2020 at 19:47
• It is indeed meaningless to combine expansions at locations in one expression. For multidimensional expansion x and y come into scope. It is too not so mathematical sense to have SeriesTermGoal with Series. Series is the Taylor expansion around a location on a polynomial basis up to a certain degree. Give a variable name or use % to work in the same way as with the Series symbol. Mar 19, 2020 at 9:17
• Series is definitely not the Taylor expansion. Things like Series[Zeta[x], {x, Infinity, 5}] and Series[BesselI[2, x], {x, Infinity, 5}] are examples. Mar 20, 2020 at 5:00
• @Quantum, yes, Series[] can also do Puiseux series and expansions at infinity. imas: as user states, it is not quite sensible to combine different expressions with different expansion points, but of course you can add together the results of two SeriesData[] objects only after you use Normal[] on them to convert them into a finite sum. Mar 21, 2020 at 4:29