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?

  • 1
    $\begingroup$ 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? $\endgroup$ Commented Aug 2, 2021 at 14:43

3 Answers 3


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]


In[2]:= Series[1/(r - 2 m), {m, 0, 1}]
Out[2]= SeriesData[m, 0, {r^(-1), 2 r^(-2)}, 0, 2, 1]
  • $\begingroup$ 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. $\endgroup$
    – apk
    Commented Aug 4, 2021 at 6:34
  • $\begingroup$ That was just an example, you can adjust the parameters as needed ;-) $\endgroup$
    – Hans Olo
    Commented Aug 4, 2021 at 6:53
  • $\begingroup$ 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? $\endgroup$
    – apk
    Commented Aug 12, 2021 at 6:46
  • 1
    $\begingroup$ 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. $\endgroup$
    – Hans Olo
    Commented Aug 12, 2021 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)



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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.