# Command for approximating a function in variable limit?

The function

$f(T) = 1/T^2 Exp(1/T) [Exp(1/T) + 1]^{-2}$

in low $T$ limit is $f(T)=Exp(-1/T)$

and in high $T$ limit $(T)=1/T^2$.

Is there a command in mathematica to find the the function in low and high $T$ limit?

Following code does the trick:

limiter=Function[{input,variable,limit},
FullSimplify[TrigToExp[
Simplify[Normal[FullSimplify[
input SeriesData[variable,limit,List[1],0,1,1]
]]]]//.Plus[a_,b_]:>a/;AsymptoticEqual[a+b,a,variable->limit]]
];


For example:

f[x_] := 1/x^2 Exp[1/x] (Exp[1/x] + 1)^-2;

limiter[f[x], x, 0]


Sech[1/x]/(2 x^2)

limiter[f[x], x, Infinity]


1/(4 x^2)

limiter[f[x], x, a]


1/(2 a^2 (1 + Cosh[1/a]))

The main issue is that we are trying to obtain asymptotic forms around singular points hence naive series command would not work. Above, we use SeriesData command to force a series form, replace $a+b$ with $a$ if both produce same result in the limit, and simplify.

The asymptotic forms are exact, in the sense that they numerically converge appropriately. For example, for $x\rightarrow 0$ limit, you need both $e^{-1/x}$ and $e^{1/x}$ to approximate correct result, so we indeed need hyperbolic function:

\begin{align} f(0.005)=\text{5.53558610694695$\grave{ }$*${}^{\wedge}$-83}\\ \frac{\text{sech}\left(\frac{1}{x}\right)}{2 x^2}\text{/.}\, x\to 0.005=\text{5.53558610694695$\grave{ }$*${}^{\wedge}$-83}\\ \exp \left(-\frac{1}{x}\right)\text{/.}\, x\to 0.005=\text{1.3838965267367376$\grave{ }$*${}^{\wedge}$-87} \end{align}

Of course, the limiting result becomes less accurate for higher values: \begin{align}f(0.1)=0.00453958\\\frac{\text{sech}\left(\frac{1}{x}\right)}{2x^2}\text{/.}\, x\to 0.1=0.00453999\end{align}

• With 11.3 you can check with AsymptoticEqual[1/x^2 Exp[1/x] (Exp[1/x] + 1)^-2, Sech[1/x]/(2 x^2), x -> 0] and AsymptoticEqual[1/x^2 Exp[1/x] (Exp[1/x] + 1)^-2, 1/(4 x^2), x -> Infinity]. – b.gates.you.know.what Mar 22 '18 at 8:45
• Tricky application of a new function AsymptoticEqual which I didn't know(MMA 11.0.1)! One question remains looking at Simplify[ ExpToTrig[f[x]] ] (*Sech[1/(2 x)]^2/(4 x^2) *): Is there any advantage to approximate f[x] with a similar function (*Sech[1/( x)]/(2 x^2) *)? – Ulrich Neumann Mar 22 '18 at 8:57
• An approximation should be of simple form. The function E^(-1/x)/x^2  is more simple, but yields the same good approximation than Sech[1/x]/(2 x^2) . See E^(-1/x)/x^2 /. x -> .005  gives also 5.53559*10^-83  and E^(-1/x)/x^2 /. x -> .1  gives also 0.00453999  . Sech[1/x]/(2 x^2) // TrigToExp // Simplify // ExpandAll  is equal E^(1/x)/(x^2 + E^(2/x) x^2)  . The first x^2 in the denominator can totaly be negelected. – Akku14 Mar 24 '18 at 8:38
• Thanks for the detailed analysis of the low limit function approximation. @UlrichNeumann I think we have to rely on our analytical skills in subtle cases. – Mark Robinson Mar 24 '18 at 9:51

Get a simple graphical solution.

Expand all terms of the function and regard, which summand of the denominator is dominating the behavior of f[x] approaching zero.

f[x_] = 1/x^2 Exp[1/x] (Exp[1/x] + 1)^-2 // ExpandAll

(*    E^(1/x)/(x^2 + 2 E^(1/x) x^2 + E^(2/x) x^2)   *)

Table[n[i] = Numerator[f[x]]/Denominator[f[x]][[i]], {i, 3}] // Simplify

(*   {E^(1/x)/x^2, 1/(2 x^2), E^(-1/x)/x^2}   *)

Plot[{f[x], n[1], n[2], n[3]}, {x, 0, 1}, PlotRange -> {0, 4},
PlotStyle -> {Red, Green, Magenta, Blue}]


You see, E^(-1/x)/x^2 is the best approximation. It yields the same good approximation like Sech[1/x]/(2 x^2) , but is more simple. (See my comment to the answer of @Soner)

Another way is as follows.

Normal[Series[1/T^2*Exp[1/T]*(Exp[1/T] + 1)^(-2), {T, Infinity, 3}]]


1/(4 T^2)

Normal[Series[1/T^2*Exp[1/T]*(Exp[1/T] + 1)^(-2), {T, 0, 1}]]


E^(1/T)/((1 + E^(1/T))^2 T^2)

limiterFA = Function[{input, variable, limit},FullSimplify[

• @Chandan Sharma: This is caused by the different behavior of Exp[1/T] at $T=0$ from the right and from the left. – user64494 Mar 24 '18 at 10:03