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[[1]]},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
Answer
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]]
Then for your examples:
leadingSeries[(1/x + 2)/(4 + 1/x^2 + x), x]
leadingSeries[Exp[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)}$
Comments
Post a Comment