0
$\begingroup$

I'm having trouble getting Mathematica to expand expressions in a Laurent series when the expansion parameter is raised to symbolic powers.

As an example, consider:

Assuming[{a > 0, c1 > 0, c2 > 0, c3 > 0}, Normal[Series[a^(-c2)/((a*c1)^(c2) + c3), {a, 0, 0}]]]

I want this to take $\frac{1}{a^{c_2}}\frac{1}{(a c_1)^{c_2}+c_3}$ and expand about $a=0$ to zeroth order in $a$.

The result should be $\frac{1}{c_3}\frac{1}{ a^{c_2}}-\frac{c_1^{c_2}}{c_3^2}$, but instead I just get back $\frac{1}{a^{c_2}}\frac{1}{(a c_1)^{c_2}+c_3}$ again. No expansion takes place at all. I.e. the result is:

a^(-c2)/((c1*a)^(c2) + c3)

Are there extra Assumptions that need to be added?

$\endgroup$
  • $\begingroup$ You are trying to expand at a discontinuity. Assuming[{a > 0, c1 > 0, c2 > 0, c3 > 0}, Limit[a^(-c2)/((a*c1)^c2 + c3), a -> 0]] evaluates to Infinity $\endgroup$ – Bob Hanlon Jul 15 '17 at 14:27
  • $\begingroup$ That's not the problem. That's what a Laurent series does. If you replace, say, c1, c2 and c3 by 1 then Mathematica returns 1/a-1 which is the right answer in this limiting case. More generally, it should return what I have written above. $\endgroup$ – user26866 Jul 15 '17 at 14:35
5
$\begingroup$

Series does not work with symbolic powers. Here is a simple example:

Series[x^n, {x, 0, 5}]

x^n

To see why, note that Series (when it works) evaluates to a SeriesData object:

Series[x, {x, 0, 1}] //InputForm

SeriesData[x, 0, {1}, 1, 2, 1]

Let's look at the SeriesData documentation:

WolframLanguageData["SeriesData","PlaintextUsage"]

"SeriesData[x, x0, {a0, a1, …}, nmin, nmax, den] represents a power series in the variable x about the point x0 . The ai are the coefficients in the power series. The powers of (x - x0) that appear are nmin / den, (nmin + 1) / den, …, nmax / den."

So, a SeriesData representation of $x^n$ would look something like:

SeriesData[x, 0, {1}, n, n+1, 1]

SeriesData::sdatn: Order specification n in SeriesData[x,0,{1},n,1+n,1] is not a machine-sized integer.

SeriesData[x, 0, {1}, n, 1 + n, 1]

which isn't supported. This is why a naive application of Series to your expression doesn't work.

One possibility is to just replace your variable with one whose powers are all explicit integers, and then use Series:

e = PowerExpand[
    a^(-c2)/((a*c1)^(c2) + c3) /. a -> z^(1/c2),
    Assumptions -> z>0 && c1>0 && c2>0 && c3>0
]

1/(z (c3 + c1^c2 z))

Now, we can use Series:

s = Series[e, {z, 0, 0}];
s //TeXForm

$\frac{1}{\text{c3} z}-\frac{\text{c1}^{\text{c2}}}{\text{c3}^2}+O\left(z^1\right)$

Convert back, after converting the Series object back to a normal expression:

r = Normal[s] /. z -> a^c2
r //TeXForm

-(c1^c2/c3^2) + a^-c2/c3

$\frac{a^{-\text{c2}}}{\text{c3}}-\frac{\text{c1}^{\text{c2}}}{\text{c3}^2}$

$\endgroup$
  • $\begingroup$ Hi, thank you for the answer. That's disappointing, re: the way Series works. I thought about that same workaround, but was hoping not to resort to that. Oh well. $\endgroup$ – user26866 Jul 15 '17 at 17:21
  • $\begingroup$ So, if I instead wanted to run a series expansion on something like a^(-c2)/(a^(c2) + a), expanding in a, what could I do? Your trick doesn't work in this scenario, it seems. Unless you can get Mathematica to separately replace instances of a^(c2) alone, I guess. $\endgroup$ – user26866 Jul 15 '17 at 17:43
  • 1
    $\begingroup$ "That's disappointing, re: the way Series works." What exactly were you expecting? You are giving it a symbolic singularity it cannot unravel. $\endgroup$ – Daniel Lichtblau Jul 15 '17 at 20:49
  • 1
    $\begingroup$ Firstly, it's not a Laurent series if it has symbolic powers. And a SeriesData object, which implements Puiseux series in Mathematica, requires rational (or integer) exponents. These are the objects that can be supported in terms of performing series algebra operations. Symbolic exponents take one out of that class. This does not mean one cannot do algebra using symbolic exponents using the Wolfram language, it simply means Series alone will not be a sufficient tool for such a task. $\endgroup$ – Daniel Lichtblau Jul 16 '17 at 15:23
  • 1
    $\begingroup$ (2) Assuming c1 to be an integer is not sufficient for purposes of Series because it requires explicit integer powers (to do ordering, have a "lowest" power and fixed size steps above that, etc.) $\endgroup$ – Daniel Lichtblau Jul 16 '17 at 15:48

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.