When computing the series expansion of a Root object, Mathematica throws an error like: "Because of branch cuts, the series may represent a different root of [root expression] for some values of [expansion parameter]". However, I always compare the results I get with the "exact" numerical result and it always, within a certain region, yields a good approximation.

Could somebody maybe show me a simple example of a Root-object, series expanded around a point x, where due to branch cuts, the result is actually not good. If I misunderstand this completely, please explain, what is meant by this warning, and what Mathematica is actually trying to warn me about.

  • $\begingroup$ Well, due to Mathematica assuming that all variables can take complex values unless told otherwise, Mathematica is just being cautious. It can happen that substituting an arbitrary complex number into your series expansion will yield a value very much different from one you might get from directly evaluating a Root[] object. $\endgroup$ Aug 12, 2015 at 15:38
  • $\begingroup$ It would be easier to answer if you post the Root object that produces the issue in your question. Then we'd be able to see if the message is justified or not. $\endgroup$
    – Jens
    Aug 12, 2015 at 16:55

1 Answer 1


I don't know what the "simplest" example would be, but here is one:

f[z_] := Root[z + 2 #1 + #^3 - #1^4 &, 1]

Plot3D[Im[f[x + I y]], {x, -2, 2}, {y, -2, 2}, PlotPoints -> 100, 
 AxesLabel -> {"Re[z]", "Im[z]", "Im[f[z]]"}]


Here you see two regions near the origin that are bounded by discontinuities of the imaginary part (branch cuts). In these regions, a Series expansion will converge only within a radius that doesn't intersect the boundaries. To test this, do the expansion about points in both regions. Here, you will get the warnings mentioned in the question both times:

f1[z_] = Normal@Series[f[z], {z, .2 + I .004, 3}];

f2[z_] = Normal@Series[f[z], {z, .2 - I .004, 3}];

Now compare if all three functions are almost the same at a single point:

f[.2 - I .004]

(* ==> -0.309233 - 1.03775 I *)

f2[.2 - I .004]

(* ==> -0.309233 - 1.03775 I *)

f1[.2 - I .004]

(* ==> -0.3088 + 1.03621 I *)

The first result is the original function, and clearly only one of the Series expansions (f2) is valid at the point z == .2 - I .004. That's because it was centered in the region where that point lies.

The other expansion, f1, is off by a large amount even though it was done around a point z == .2 + I .004 that is just on the opposite side of the branch cut along the real axis by a tiny amount.


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.