Both options give the expected result same result as Ulrich shows with their method, however, it can be seen that this is not to the second order that OP indicates they desire expanding to.
Normal[Series[(m^2+M^2)/(m^2-M^2)^2,{M,Infinity,4}]]
Normal[(m^2+M^2)/(m^2-M^2)^2+O[M,Infinity]^5]
3 m^2/M^4 + 1/M^2
You’ll notice both are expanded to the fifth order, this is where the 1/M^4
appears.
What is happening here is that both inputs have the same output in the form of a SeriesData
object. Normal
is used to strip this off and produce a non-SeriesData
object. In this case, this appears to the user as a removal of the +O[1/M]^5
part of the returned expression. This is commonly called “big O
” and is the same as what it represents in mathematics, this being terms of the noted order and higher. This is mentioned as being “contagious” in the documentation, which means that without removing it via Normal
, the surrounding functions will be expanded as well, and a SeriesData
object will again be returned.
OP explicitly mentions they want to expand to order O[M]^-2
about the zero, which, in the framework of Mathematica and the Wolfram Language, is not directly possible. Instead, one must understand that when they want to expand to such terms of the form O[x]^-n
or O[1/x]^n
about the zero, that this is, equivalently, an expansion to a term O[x,Infinity]^n
where the use of Infinity
indicates an expansion about Infinity
, meaning that the term 1/x
becomes a small term about which the expansion is performed.
To expand to the order OP requests is done as follows:
Normal[Series[(m^2+M^2)/(m^2-M^2)^2,{M,Infinity,2}]]
Normal[(m^2+M^2)/(m^2-M^2)^2+O[M,Infinity]^3]
1/M^2
/.
to do manually what can be don’t automatically by the system. $\endgroup$