Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to compare plots of the function (1+x)^{1/3} and its power series. The code for the power series generates an error message referring to an invalid variable: 'General::ivar: -1.09993 is not a valid variable."' This message occurred with a minimum x of -1.1. Whatever value is given to the minimum x, the error message is always .00007 or .00008 greater. Yet it continues and plots the curve to maximum x. I would like to know the reason for the error message.

A previous similar question by @fasttouch "Plot Series output?" was closed as off-topic. The apparent correct answers were to apply Normal[], which I have done, and Evaluate[], which here seems to have no effect, as the curves with and without it coincide. If there is a trivial syntax error, it would not surprise me, but I can't see it, nor does the answer appear to be easily found in the documentation. I have Mathematica 8.

I am also wondering why I need to reference the series with an index in Plot, but not in Print.

x0 = 0; n = 30;

Print["Series up to 5th power: ", 
  Normal[Series[Power[1 + x, 1/3], {x, x0,  5}]]];

  Evaluate[Normal[Series[Power[1 + x, 1/3], {x, x0,  n}][[1]]]],
  Normal[Series[Power[1 + x, 1/3] + .01, {x, x0,  n}][[1]]]
  }, {x, -1.1, 2.5}, Background -> White]

After submitting this, I find that all works well if I write it this way:

s[x_] := Normal[Series[Power[1 + x, 1/3], {x, x0,  n}]];

Plot[Evaluate@s[x], {x, -1, 1}]

My current guess is that there was some confusion of the x's in Series[] and Plot[].

share|improve this question
up vote 3 down vote accepted

You have the x overloaded in too many places. You use it as free variable for the Series, then you use it for the plot command variable. I think this error happens because

 ?? Plot

show it has HoldAll. Then the x for the plot takes effect before the Series is expanded. But this 'x' is now a number, so Series complains as it needs a symbol.

But best to Keep things simple. One way:

x0 = 0; n = 30;
ser = Normal[Series[Power[1 + x, 1/3], {x, x0, n}]];
f = (1 + x)^(1/3);
Plot[Evaluate@{ser, f}, {x, -1.1, 2.5}, Background -> White, 
     Frame -> True, PlotLegends -> {"Series", "function"}]

Mathematica graphics

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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