I have the expression


where $0<x<1$, which gives me a real number. When I try to expand it around $x=1$, Mathematica gives me complex coefficients, which makes me think that he is picking some particular (and unwanted) branch.

$Assumptions = And[0 < x < 1];

Series[(1 - x^4)^(-1/4), {x, 1, 0}] // Simplify // Normal


The lowest order coefficient is


which is complex (the numerator has a complex phase of $-\pi/4$ and the denominator of $\pi/4$, giving the coefficient a total phase of $-\pi/2$).

If instead I previously perform a change of variable $t=(1-x)^{1/4}$, which removes the multivalued behavior at the singularity, Mathematica will give me a real coefficient (as expected):

Normal[Series[1/(1 - x^4)^(1/4) /. x -> 1 - t^4, {t, 0, 0}]] /.t -> (1 - x)^(1/4)

The result is


It is not economical for me perform constantly changes of variables like that, so I want to know if there is a way to control the output in cases like that.


The challenge is that Series[f[x], {x, 1, n}] creates an expansion in terms of x - 1. Since (1 - x^4)^(-1/4) is complex for x > 1, so are the expansion coefficients. If Series did its expansion for 0 < x < 1, as given in $Assumptions, in terms of 1 - x, real coefficients would result instead. A comment by J.M. in Question 112291 suggests how this might be accomplished. For generality, define

mySeries[f_, lst_] := 
    Quiet@Module[{z = First@lst, lst1 = ReplacePart[lst, 2 -> -(lst[[2]])]}, 
    (Series[f /. z -> -z, lst1] // Normal) /. z -> -z]

Then, for the expression in the question,

mySeries[(1 - x^4)^(-1/4), {x, 1, 2}]
(* 1/(Sqrt[2] (1 - x)^(1/4)) + (3 (1 - x)^(3/4))/(8 Sqrt[2]) +
   (13 (1 - x)^(7/4))/(128 Sqrt[2]) *)

as desired.

|improve this answer|||||
  • $\begingroup$ Thank you, that was a very useful and elegant solution. $\endgroup$ – dpravos Apr 18 '16 at 8:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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