How can I specify the assumption 'a' is much greater than 'b' (a>>b) in Mathematica?

I want to evaluate an expression of type 1/(r-2 m), assuming r >> 2 m. This is regarding black hole physics and r = 2 m is the Schwarzschild radius. But I am working on something where I need to evaluate a similar type of expression assuming r >> 2 m. In Mathematica, when I assume r > 2 m, I am getting output.

My input is

Simplify[1/(r - 2 m), Assumptions -> r > 2 m]


and, I got the output

1/(-2 m + r)


But, this is not working for r >> 2 m. For example, if I write the input as

Simplify[1/(r - 2 m), Assumptions -> r >> 2 m]


In the output, this is showing an error as follows.

Put::stream: 2 m is not a string, SocketObject, InputStream[ ], or OutputStream[ ].


How can I specify assumptions like r >> 2 m?

• Perhaps Normal[Series[1/(r - 2 m) /. m -> eps r, {eps, 0, 1}]] /. eps -> m/r (*(2 m)/r^2 + 1/r*) is what you are looking for? Aug 2 at 14:43

Perhaps an alternative would be to do a series expansion by either expanding r around infinity or m around 0:

In[1]:= Series[1/(r - 2 m), {r, \[Infinity], 2}]
Out[1]= SeriesData[r, DirectedInfinity[1], {1, 2 m}, 1, 3, 1]


and

In[2]:= Series[1/(r - 2 m), {m, 0, 1}]
Out[2]= SeriesData[m, 0, {r^(-1), 2 r^(-2)}, 0, 2, 1]

• This works. But why series expansion up to second-order? It should be up to the first order. Forex, 1/(r-2m) for r>>2m, should give simply 1/r. Series expanding r around infinity up to first-order gives me answer 1/r. My input - Normal[Series[1/(r - 2 M), {r, [Infinity], 1}]] gives me output 1/r. If the input contains 2nd power of r, then we should expand up to second order.
– apk
Aug 4 at 6:34
• That was just an example, you can adjust the parameters as needed ;-) Aug 4 at 6:53
• though this gives the answer, but can you please tell me why we need to expand in r around "infinity"? why do we choose to expand around infinity ? Does series expanding r around ''infinity'' mean r much greater than 2 m?
– apk
Aug 12 at 6:46
• In mathematica lingo expanding around infinity is the equivalent (sort of) of saying r is larger than all other parameters. In this case it also makes physical sense, as r>>m practically means far away from the black hole. Aug 12 at 9:39

There is no simple way to do it because it's not something that Simplify supports. The easiest thing you could probably do, is replace m with eps * r /2 and then add the assumption that eps > 0. You can then simplify and take the limit eps -> 0.

Simplify[1/(r - 2 m) /. m -> eps*r/2, Assumptions -> eps > 0]
Limit[%, eps -> 0, Direction -> "FromAbove"]


1/(r - eps r)

1/r

The simplification facilities of Mathematica are built for exact transformations, not approximate ones. Since the estimate $$r\gg2m$$ does not allow any more simplifications than $$r>2m$$ (at least when trying to stay exact), $$\gg$$-type inequalities are not directly supported by Mathematica.

If you are more precise with what you mean, you can get Mathematica to do something for you. In particular, inequalities like $$x\ll 1$$ are often understood as "the expression can be expanded up to first order in $$x$$ in good approximation". By extension, $$x\gg y$$ can be "used" by expanding the expression in question to first order in $$\varepsilon=y/x$$ (since $$\varepsilon\ll1$$).

We can do this in Mathematica as e.g. suggested by @UlrichNeumann in the comments:

LLSimplify[expr_, {v_, u_}] := Simplify[Normal@Series[expr /. v -> eps u, {eps, 0, 1}] /. eps -> v/u]

LLSimplify[1/(r - 2 m), {r, 2 m}]
(* -((2 m + r)/(4 m^2)) *)


Here, LLSimplifiy[expr, {v, u}] approximates expr under the assumption that the variable v is a lot smaller than the expression u. We do this by introducing the helper variable eps, expanding to first order in eps, and then replacing eps with v/u again.