# Get leading series expansion term?

Given a function f[x], I would like to have a function leadingSeries that returns just the leading term in the series around x=0. For example:

leadingSeries[(1/x + 2)/(4 + 1/x^2 + x)]


x

and

leadingSeries[(1/x + 2 + (1 - 1/x^3)/4)/(4 + x)]


-(1/(16 x^3))

Is there such a function in Mathematica? Or maybe one can implement it efficiently?

EDIT

I finally went with the following implementation, based on Carl Woll's answer:

lds[ex_,x_]:=( (ex/.x->(x+O[x]^2))/.SeriesData[U_,Z_,L_List,Mi_,Ma_,De_]:>SeriesData[U,Z,{L[]},Mi,Mi+1,De]//Quiet//Normal)


The advantage is, that this one also properly works with functions whose leading term is a constant:

lds[Exp[x],x]


1

Update 1

Updated to eliminate SeriesData and to not return additional terms

Perhaps you could use:

leadingSeries[expr_, x_] := Normal[expr /. x->(x+O[x]^2) /. a_List :> Take[a, 1]]


leadingSeries[(1/x + 2)/(4 + 1/x^2 + x), x]
leadingSeries[(1/x + 2 + (1 - 1/x^3)/4)/(4 + x), x] // TeXForm


x

1

$-\frac{1}{16 x^3}$

One more example:

leadingSeries[x^100 (1/x + 2 + (1 - 1/x^2)/4)/(4 + x), x] // TeXForm


$-\frac{x^{98}}{16}$

This last example shows that leadingSeries works even when the leading term has a very high order. Using something like Series[expr, {x, 0, 1}] will not get the leading order, although it does return something that would be useful as a stepping stone towards the answer.

Update 2

Updated to support arbitrary expansion points

Here is a version for arbitrary expansion points:

leadingSeries[expr_, {x_, x0_}] := Normal[
expr /.
x -> Series[x, {x, x0, 1}] /.
Verbatim[SeriesData][a__, {b_, ___}, c__] :> SeriesData[a, {b}, c]
]


For example:

leadingSeries[Gamma[x],{x,Infinity}]//TeXForm


$\sqrt{2 \pi } \sqrt{\frac{1}{x}} e^{x \left(-\log \left(\frac{1}{x}\right)-1\right)}$

• This is amazing! Simple and powerful. Thank you! Jun 16 '17 at 5:23
• The only trouble is with things that start with a constant though... Exp[x] /. x -> (x + O[x]^2). But it should be easy enough to catch these cases. Jun 16 '17 at 5:26

Those using recent versions of Mathematica (12.1 or later, I believe) can achieve this with the built-in function Asymptotic

examples = {(1/x + 2)/(4 + 1/x^2 + x),
Exp[x], (1/x + 2 + (1 - 1/x^3)/4)/(4 + x)};

Asymptotic[examples, x -> 0]
(* {x, 1, -(1/(16 x^3))} *)